private void btnSua_Click(object sender, EventArgs e)
        {
            if  (string.IsNullOrEmpty(txtSoDKKBBHYT.Text))
            {
                MessageBox.Show("Bạn chưa nhập số ĐKKCB BHYT.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            clsBangKe objBangKe = new clsBangKe();
            bool checkedBangKe = objBangKe.CheckHoSo(txtSoDKKBBHYT.Text);
            if (checkedBangKe == true)
            {
                MessageBox.Show("Số đăng ký này đã được sử dụng, không thể sửa.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }

            _TrangThai = TrangThai.Sua;// "CapNhat";
            btnThem.Enabled = false;
            btnSua.Enabled = false;
            btnXoa.Enabled = false;
            btnDong.Enabled = false;
            btnLuu.Enabled = true;
            btnHuyBo.Enabled = true;
            btnCheckThe.Enabled = true;
            SetControlStatusReadOnly(false);
            txtTuNgay.Focus();
            btnKiemTraSDK.Enabled = true;
        }
 private void btnXoa_Click(object sender, EventArgs e)
 {
     if (string.IsNullOrEmpty( txtSoDKKBBHYT.Text))
     {
         MessageBox.Show("Bạn chưa nhập số ĐKKCB BHYT.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
         return;
     }
     clsBangKe objBangKe = new clsBangKe();
     bool checkedBangKe = objBangKe.CheckHoSo(txtSoDKKBBHYT.Text);
     if (checkedBangKe == true)
     {
         MessageBox.Show("Số đăng ký này đã được sử dụng, không thể xóa.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
         return;
     }
     Xoa();
 }
        private void btnXoa_Click(object sender, EventArgs e)
        {
            clsBangKe obj = new clsBangKe();
            obj.GetByKey(m_BangKe_Id);

            if (m_BangKe_Id == 0)
            {
                MessageBox.Show("Bạn vui lòng chọn bảng kê để xóa.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
                //lblThongBao.Text = "Bạn vui lòng chọn bảng kê để xóa!";
                //timerThongBao.Enabled = true;
                return;
            }

            if (obj.DaGuiBHYT.Value)
            {
                MessageBox.Show("Bảng kê này đã gửi BHXH.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
                //lblThongBao.Text = "Bảng kê này đã gửi BHXH!.";
                //timerThongBao.Enabled = true;
                return;
            }

            if (MessageBox.Show("Bạn có muốn xóa bảng kê này?", this.Text, MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
            {
                int kq = obj.Delete(m_BangKe_Id);
                if (kq > 0)
                {
                    //MessageBox.Show("Xóa bảng kê thành công?", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
                    lblThongBao.Text = "Xóa bảng kê thành công.";
                    timerThongBao.Enabled = true;

                    SetControlStatusReadOnly(true);
                    ResetControl();
                }
            }
        }
        private void FillBangKe(ref clsBangKe bangKe)
        {
            if (m_BangKe_Id != 0)
            {
                bangKe.BangKe_Id = m_BangKe_Id;
            }
            bangKe.LoaiBangKe = m_LoaiBangKe;

            //Số hồ sơ được dùng để lưu Số đăng ký khám bệnh
            bangKe.SoHoSo = txtSoDK.Text;
            bangKe.Khoa = txtKhoa.Text;
            bangKe.PhanTramDuocHuong = txtPhanTramHuong.Value;
            bangKe.MaKhamChuaBenh = txtMaKhamChuBenh.Text;
            bangKe.MaNguoiBenh = txtMaBenhNhan.Text;
            bangKe.HoTen = txtHoTen.Text;
            bangKe.GioiTinh = int.Parse(cboGioiTinh.SelectedValue.ToString());
            bangKe.NgaySinh = txtNgaySinh.Text.Replace("/", "").Trim().Length > 0 ? (DateTime?)DateTime.ParseExact(txtNgaySinh.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture) : null;
            bangKe.NamSinh = txtNamSinh.Text.Trim().Length == 0 ? null : (int?)int.Parse(txtNamSinh.Text);
            bangKe.DiaChi = txtDiaChi.Text;
            bangKe.MaNoiSinhSong = cboMaNoiSinhSong.SelectedValue.ToString();
            bangKe.SoTheBHYT = txtSoTheBHYT.Text.Replace("-", "");
            bangKe.TuNgayBH = txtTuNgay.Text.Replace("/", "").Trim().Length > 0 ? (DateTime?)DateTime.ParseExact(txtTuNgay.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture) : null;
            bangKe.DenNgayBH = txtDenNgay.Text.Replace("/", "").Trim().Length > 0 ? (DateTime?)DateTime.ParseExact(txtDenNgay.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture) : null;
            bangKe.CoBHYT = bangKe.CoBHYT.Value;
            bangKe.TreEmKhongTheBHYT = bangKe.TreEmKhongTheBHYT.Value;
            // bangKe.MucHuong = Convert.ToInt32( ((DataRowView)cboMucHuong.SelectedValue).Row["MucHuong"].ToString()) ;
            // bangKe.PhanTramDuocHuong = (decimal?)((DataRowView)cboMucHuong.SelectedValue).Row["PhanTram"]; ;
            bangKe.MaCSKCBBanDau = txtMaCSKCBBD.Text;
            bangKe.TenCSKCBBanDau = txtTenCSKCBBD.Text;
            bangKe.MaCSKCB = conf.MaCSKCB;
            bangKe.MaChiNhanh = conf.MaChiNhanh;
            bangKe.MaNoiChuyenDen = txtNoiChuyenDen.Text;
            bangKe.TenNoiChuyenDen = txtNoiChuyenDen.Text;
            bangKe.NgayDenKham = txtNgayVao.Text.Replace("/", "").Trim().Length > 0 ? (DateTime?)DateTime.ParseExact(txtNgayVao.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture) : null;
            bangKe.NgayKetThuc = txtNgayRa.Text.Replace("/", "").Trim().Length > 0 ? (DateTime?)DateTime.ParseExact(txtNgayRa.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture) : null;
            bangKe.SoNgayDieuTri = txtSoNgay.IntValue;
            bangKe.NgayQuyetToan = txtNgayQuyetToan.Text.Replace("/", "").Trim().Length > 0 ? (DateTime?)DateTime.ParseExact(txtNgayQuyetToan.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture) : null;
            bangKe.TuyenKhamBenh = int.Parse(cboTuyenKham.SelectedValue.ToString());
            bangKe.ChanDoan = txtChanDoan.Text;
            bangKe.BenhKhac = txtBenhKhac.Text;
            bangKe.MaICD = txtMaICD.Text;
            bangKe.TongChiPhi = (decimal?)TableChiPhiThuoc.Compute("Sum(ThanhTienBHYT)", "True");
            bangKe.BHYTThanhToan = (decimal?)TableChiPhiThuoc.Compute("Sum(BHYTThanhToan)", "True");
            bangKe.NguoiBenhTra = (decimal?)TableChiPhiThuoc.Compute("Sum(NguoiBenhTra)", "True");
            bangKe.NguonKhac = (decimal?)TableChiPhiThuoc.Compute("Sum(NguonKhac)", "True");

            //bangKe.SoTienThanhToanToiDa

            //bangKe.TienKham = (decimal)TableChiPhiThuoc.Compute("Sum(ThanhTienBHYT)", "MaNhom2='10'");

            //bangKe.TienGiuong =(decimal)TableChiPhiThuoc.Compute("Sum(ThanhTienBHYT)", "MaNhom2='12'");

            //bangKe.TienXN = (decimal)TableChiPhiThuoc.Compute("Sum(ThanhTienBHYT)", "MaNhom2='01'");

            //bangKe.TienCDHA = (decimal)TableChiPhiThuoc.Compute("Sum(ThanhTienBHYT)", "MaNhom1='04'");

            //bangKe.TienTDCN = (decimal)TableChiPhiThuoc.Compute("Sum(ThanhTienBHYT)", "MaNhom1='05'");

            //bangKe.TienPTTT = (decimal)TableChiPhiThuoc.Compute("Sum(ThanhTienBHYT)", "MaNhom2='05'");

            //bangKe.TienDichVuKTC= (decimal)TableChiPhiThuoc.Compute("Sum(ThanhTienBHYT)", "MaNhom1='07'");

            //bangKe.TienMau = (decimal)TableChiPhiThuoc.Compute("Sum(ThanhTienBHYT)", "MaNhom2='04'");

            //bangKe.TienThuoc = (decimal)TableChiPhiThuoc.Compute("Sum(ThanhTienBHYT)", "MaNhom2='03'");

            //bangKe.TienVTYT = (decimal)TableChiPhiThuoc.Compute("Sum(ThanhTienBHYT)", "MaNhom2='06'");

            ////bangKe.TienVTYTTH

            //bangKe.TienVTYTTT = (decimal)TableChiPhiThuoc.Compute("Sum(ThanhTienBHYT)", "MaNhom2='09'");

            //bangKe.TienVanChuyen = (decimal)TableChiPhiThuoc.Compute("Sum(ThanhTienBHYT)", "MaNhom2='11'");

            ////bangKe.DVKTC_TinhToan

            //bangKe.DVKTC_ThanhToan =(decimal)TableChiPhiThuoc.Compute("Sum(ThanhTienBHYT)", "MaNhom2='07'");

            bangKe.ChiPhiNgoaiDinhSuat = (decimal)TableChiPhiThuoc.Compute("Sum(ChiPhiNgoaiDinhSuat)", "True");

            //bangKe.DaGuiBHYT = false;

            //bangKe.NgayGuiBHYT
            //bangKe.NguoiGuiBHYT
            //bangKe.NgayTao
            //bangKe.NguoiTao
            //bangKe.NgayCapNhat
            //bangKe.NguoiCapNhat
            bangKe.ChungNhanKhongCCT = chkChungTuKhongCCT.Checked;
        }
        private void btnSua_Click(object sender, EventArgs e)
        {
            TrangThai = "CapNhat";
            txtMaKhamChuBenh.Enabled = false;
            if (m_BangKe_Id == 0)
            {
                TrangThai = "";
                MessageBox.Show("Bạn vui lòng chọn bảng kê để chỉnh sửa.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
                //lblThongBao.Text = "Bạn vui lòng chọn bảng kê để chỉnh sửa!";
                //timerThongBao.Enabled = true;
                return;
            }

            clsBangKe obj = new clsBangKe();
            obj.GetByKey(m_BangKe_Id);

            if (obj.DaGuiBHYT.Value)
            {
                MessageBox.Show("Bảng kê này đã gửi BHXH.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
                //lblThongBao.Text = "Bảng kê này đã gửi BHXH!";
                //timerThongBao.Enabled = true;
                return;
            }

            btnThem.Enabled = false;
            btnSua.Enabled = false;
            btnXoa.Enabled = false;
            btnDong.Enabled = false;

            btnGuiBHXH.Enabled = false;

            btnLuu.Enabled = true;
            btnHuyBo.Enabled = true;

            btnCheckThe.Enabled = true;

            SetControlStatusReadOnly(false);
        }
        public void Send(clsBangKe BangKe, string TrangThai)
        {
            ////URL
            //string publicURL = conf.GetLinkWS();
            //string URL = publicURL + string.Format("{0}/{1}", TrangThai, conf.MaCSKCB);
            //string param = string.Format("GetAccessToken/{0}/{1}", conf.Username, conf.Password);
            //string tokenURL = publicURL + param;
            //string token = Token.GetToken(tokenURL);

            //if (token == "")
            //{
            //    MessageBox.Show("Không thể kết nối tới máy chủ!", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
            //    //lblThongBao.Text = "Không thể kết nối tới máy chủ!";
            //    //timerThongBao.Enabled = true;
            //    return;
            //}
            //SystemConfig system = SystemConfig.Instance;
            //string token = system.GetToken();
            //string URL = string.Format("{0}/{1}", TrangThai, conf.MaCSKCB);
            //if (string.IsNullOrEmpty(token))
            //{
            //    MessageBox.Show("Vui lòng kiểm tra lại thông tin cấu hình.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
            //    return;
            //}

            //clsBangKeChiTiet objBangKeChiTiet = new clsBangKeChiTiet();
            //clsBangKeChanDoan objBangKeChanDoan = new clsBangKeChanDoan();
            //List<clsBangKeChiTiet> danhSachChiTietBK = new List<clsBangKeChiTiet>();
            //List<clsBangKeChanDoan> danhSachChanDoan = new List<clsBangKeChanDoan>();

            //if (!string.IsNullOrEmpty(token))
            //{
            //    ////Lay thông tin bang ke
            //    BangKe.GetByKey(m_BangKe_Id);
            //    //Lay chi tiet bảng ke
            //    danhSachChiTietBK = LayBangKeChiTiet(objBangKeChiTiet.GetByID(m_BangKe_Id));
            //    //Lay chi tiet chan doan
            //    danhSachChanDoan = LayBangKeChuanDoan(objBangKeChanDoan.GetAll(m_BangKe_Id));

            //    BangKe01 objBangKe = new BangKe01();
            //    objBangKe.BenhKhac = BangKe.BenhKhac;
            //    objBangKe.BHYTThanhToan = BangKe.BHYTThanhToan;
            //    objBangKe.CapCuu = BangKe.TuyenKhamBenh == 2 ? true : false;
            //    objBangKe.ChanDoan = BangKe.ChanDoan;
            //    objBangKe.ChinhSuaChiPhi = null;
            //    objBangKe.ChiPhiNgoaiDinhSuat = BangKe.ChiPhiNgoaiDinhSuat;
            //    objBangKe.ChungNhanKhongCTT = BangKe.ChungNhanKhongCCT;
            //    objBangKe.CoBHYT = BangKe.CoBHYT;
            //    objBangKe.DanhDauThongKe = false;
            //    objBangKe.DiaChi = BangKe.DiaChi;
            //    objBangKe.DiaChiVNFont = null;
            //    objBangKe.DieuTriNgoaiTru = null;
            //    objBangKe.DuaVaoQuyetToan = null;
            //    objBangKe.DungTuyen = BangKe.TuyenKhamBenh == 1 ? true : false;
            //    objBangKe.DVKTC_ThanhToan = BangKe.DVKTC_ThanhToan;
            //    objBangKe.DVKTC_TinhToan = BangKe.DVKTC_TinhToan;
            //    objBangKe.GhiChu = null;
            //    objBangKe.GhiChuChuyenSau = null;
            //    objBangKe.GiamDinhChuyenSau = null;
            //    objBangKe.GioiTinh = byte.Parse(BangKe.GioiTinh.ToString());
            //    objBangKe.HinhThucKham = BangKe.LoaiBangKe == 2 ? (byte)2 : (byte)1;//Bang ke 02 Noi tru, Bang ke 01 va Bang ke 03 ngoai tru
            //    objBangKe.HoTen = BangKe.HoTen;
            //    objBangKe.HoTenVNFont = null;
            //    objBangKe.HSLienQuanChinhSuaCP = null;
            //    objBangKe.ICD10CV = BangKe.MaICD;
            //    objBangKe.BenhKhac = BangKe.BenhKhac;
            //    objBangKe.ImportBatch = null;
            //    objBangKe.KetQuaGiamDinh = null;
            //    objBangKe.Khoa = BangKe.Khoa;
            //    objBangKe.KhoaVNFont = null;
            //    objBangKe.LyDoTraHoSo = null;
            //    objBangKe.LyDoTuChoi = null;
            //    objBangKe.MaChiNhanh = BangKe.MaChiNhanh;
            //    objBangKe.MaCSKCB = BangKe.MaCSKCB;
            //    objBangKe.MaCSKCBBanDau = BangKe.MaCSKCBBanDau;
            //    objBangKe.MaDuongDan = null;
            //    objBangKe.MaLoi = null;
            //    objBangKe.MaNguoiBenh = BangKe.MaNguoiBenh;
            //    objBangKe.MaNoiChuyenDen = BangKe.MaNoiChuyenDen;
            //    objBangKe.TenNoiChuyenDen = BangKe.MaNoiChuyenDen;//;BangKe.TenNoiChuyenDen;

            //    objBangKe.MaNoiSinhSong = BangKe.MaNoiSinhSong;
            //    objBangKe.MoTaLoi = null;
            //    objBangKe.NamQuyetToan = null;
            //    objBangKe.NamSinh = BangKe.NamSinh;
            //    objBangKe.NgayCapNhat = BangKe.NgayCapNhat == DateTime.MinValue ? null : BangKe.NgayCapNhat;
            //    //     DateTime.TryParse("26/3/2015 12:00:00 AM", out dateTime);
            //    objBangKe.NgayDenKham = BangKe.NgayDenKham == DateTime.MinValue ? null : BangKe.NgayDenKham;

            //    objBangKe.NgayGiamDinh = null;
            //    objBangKe.NgayGui = null;
            //    //            DateTime.TryParse("26/3/2015 12:00:00 AM", out dateTime);
            //    objBangKe.NgayKetThuc = BangKe.NgayKetThuc == DateTime.MinValue ? null : BangKe.NgayKetThuc;
            //    objBangKe.NgayPheDuyet = null;
            //    objBangKe.NgayQuyetToan = BangKe.NgayQuyetToan == DateTime.MinValue ? null : BangKe.NgayQuyetToan;
            //    objBangKe.NgaySinh = BangKe.NgaySinh;
            //    objBangKe.NgayTao = BangKe.NgayTao == DateTime.MinValue ? null : BangKe.NgayTao;
            //    //DateTime.TryParse("26/3/2015 12:00:00 AM", out dateTime);
            //    objBangKe.NgayThanhToan = BangKe.NgayQuyetToan;//.NgayKetThuc;//quan trong
            //    objBangKe.NguoiBenhCungTra = null;
            //    objBangKe.NguoiBenhTra = BangKe.NguoiBenhTra;
            //    objBangKe.NguoiCapNhat = BangKe.NguoiCapNhat;
            //    objBangKe.NguoiGiamDinh = null;
            //    objBangKe.NguoiGiamDinhChuyenSau = null;
            //    objBangKe.NguoiGui = BangKe.NguoiGuiBHYT;
            //    objBangKe.NguoiNhoGiamDinhChuyenSau = null;
            //    objBangKe.NguoiPheDuyet = null;
            //    objBangKe.NguoiTao = BangKe.NguoiTao;
            //    objBangKe.NguonDuLieu = null;
            //    objBangKe.NguonKhac = BangKe.NguonKhac;
            //    objBangKe.NhomDoiTuong = null;
            //    objBangKe.NoiThanhToan = null;
            //    objBangKe.PhanTramDuocHuong = BangKe.PhanTramDuocHuong;
            //    objBangKe.QuyQuyetToan = null;
            //    objBangKe.SoHoSo = BangKe.SoHoSo;
            //    objBangKe.SoKhamBenh = BangKe.MaKhamChuaBenh;// "15032600001";
            //    objBangKe.SoNgayDieuTri = BangKe.SoNgayDieuTri;
            //    objBangKe.SoTheBHYT = BangKe.SoTheBHYT;// "GD7790800816264";
            //    objBangKe.SoTienThanhToanToiDa = BangKe.SoTienThanhToanToiDa;
            //    objBangKe.SoTienTuChoiThanhToan = null;
            //    objBangKe.STTCV = null;
            //    // DateTime.TryParse("31/12/2015 12:00:00 AM", out dateTime);
            //    objBangKe.SuDungDen = BangKe.DenNgayBH;//dateTime;
            //    //DateTime.TryParse("31/12/2015 12:00:00 AM", out dateTime);
            //    objBangKe.SuDungTu = BangKe.TuNgayBH;//dateTime;
            //    objBangKe.TenCSKCBBanDau = BangKe.TenCSKCBBanDau;

            //    objBangKe.ThangQuyetToan = null;
            //    objBangKe.TienCDHA = null;
            //    objBangKe.TienCDHA_XT = null;
            //    objBangKe.TienCDHA_XT2021 = null;
            //    objBangKe.TienDaTuyen = null;
            //    objBangKe.TienDVKTC = BangKe.TienDichVuKTC;//null;
            //    objBangKe.TienDVKTC_XT = null;
            //    objBangKe.TienDVKTC_XT2021 = null;
            //    objBangKe.TienKham = BangKe.TienKham;
            //    objBangKe.TienKham_XT = null;
            //    objBangKe.TienKham_XT2021 = null;
            //    objBangKe.TienKTG = null;
            //    objBangKe.TienKTG_XT = null;
            //    objBangKe.TienKTG_XT2021 = null;
            //    objBangKe.TienMau = BangKe.TienMau;
            //    objBangKe.TienMau_XT = null;
            //    objBangKe.TienMau_XT2021 = null;
            //    objBangKe.TienPTTT = BangKe.TienPTTT;
            //    objBangKe.TienPTTT_XT = null;
            //    objBangKe.TienPTTT_XT2021 = null;
            //    objBangKe.TienThongBao = null;
            //    objBangKe.TienVC = BangKe.TienVanChuyen;
            //    objBangKe.TienVC_XT = null;
            //    objBangKe.TienVC_XT2021 = null;
            //    objBangKe.TienVTYTTH = BangKe.TienVTYTTH;
            //    objBangKe.TienVTYTTH_XT = null;
            //    objBangKe.TienVTYTTH_XT2021 = null;
            //    objBangKe.TienVTYTTT = BangKe.TienVTYTTT;
            //    objBangKe.TienVTYTTT_XT = null;
            //    objBangKe.TienVTYTTT_XT2021 = null;
            //    objBangKe.TienVuotTran = null;
            //    objBangKe.TienXN = BangKe.TienXN;
            //    objBangKe.TienXN_XT = null;
            //    objBangKe.TienXN_XT2021 = null;
            //    objBangKe.TinhTrang = null;
            //    objBangKe.TinhTrangGiamDinh = null;
            //    objBangKe.TongChiPhi = BangKe.TongChiPhi;
            //    objBangKe.TongChiPhiThuoc = BangKe.TienThuoc;
            //    objBangKe.TongChiPhiThuoc_XT = null;
            //    objBangKe.TongChiPhiThuoc_XT2021 = null;
            //    objBangKe.TreEmKhongTheBHYT = BangKe.TreEmKhongTheBHYT;
            //    objBangKe.XuatToanTheo2021 = null;

            //    objBangKe.BangKe01ChiTiet = new List<BangKe01ChiTiet>();
            //    foreach (clsBangKeChiTiet bangkeCT in danhSachChiTietBK)
            //    {
            //        BangKe01ChiTiet obj = new BangKe01ChiTiet();

            //        switch (bangkeCT.MaLoaiChiPhi)
            //        {
            //            case "D":
            //                obj.MaDanhMuc = 3;
            //                break;
            //            case "T":
            //                obj.MaDanhMuc = 1;
            //                break;
            //            case "V":
            //                obj.MaDanhMuc = 2;
            //                break;
            //            case "M":
            //                obj.MaDanhMuc = 4;
            //                break;

            //        }

            //        obj.BHYTThanhToan = bangkeCT.BHYTThanhToan;
            //        obj.ChiPhiNgoaiDinhSuat = bangkeCT.ChiPhiNgoaiDinhSuat;

            //        obj.LaDVKTC = bangkeCT.DichVuKTC;
            //        obj.LaVTDVKTC = bangkeCT.VTYTDichVuKTC;

            //        obj.DonGiaBHYT = bangkeCT.DonGiaBHYT;

            //        obj.MaChiPhi = bangkeCT.MaChiPhi;
            //        obj.MaChiPhi_HIS = bangkeCT.MaChiPhi;

            //        obj.DonViTinh = bangkeCT.DonViTinh;
            //        obj.DonViTinh_HIS = bangkeCT.DonViTinh;

            //        obj.TenChiPhi = bangkeCT.TenChiPhi;
            //        obj.TenChiPhi_HIS = bangkeCT.TenChiPhi;

            //        obj.MaLoaiChiPhi = bangkeCT.MaNhom1;
            //        obj.MaLoaiChiPhi2 = bangkeCT.MaNhom2;

            //        obj.NguoiBenhTra = bangkeCT.NguoiBenhTra;
            //        obj.NguonKhac = bangkeCT.NguonKhac;
            //        obj.PhanTramDuocHuong = bangkeCT.PhanTramDuocHuong;
            //        obj.SoLuong = bangkeCT.SoLuong;

            //        obj.ThanhTien = bangkeCT.ThanhTienBHYT;

            //        obj.TiLeThanhToan = bangkeCT.TyLeThanhToan;

            //        objBangKe.BangKe01ChiTiet.Add(obj);
            //    }
            //    objBangKe.BangKe01ChanDoan = new List<BangKe01ChanDoan>();
            //    //foreach (clsBangKeChanDoan bkcd in danhSachChanDoan)
            //    //{
            //    BangKe01ChanDoan objChanDoan = new BangKe01ChanDoan();
            //    objChanDoan.MaICD10 = BangKe.MaICD;
            //    objChanDoan.STT = 1;
            //    objBangKe.BangKe01ChanDoan.Add(objChanDoan);
            //    //}

            //    string requestData = XMLUtils.SerializeDataContract(objBangKe);

            //    string response = system.SendRequest(URL, "POST", requestData); //HttpRequest.WSRequest(URL, "POST", requestData, token);
            //    if (string.IsNullOrEmpty(response))
            //    {
            //        MessageBox.Show("Vui lòng kiểm tra lại dữ liệu gửi.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
            //        //lblThongBao.Text = "Vui lòng kiểm tra lại dữ liệu gửi!.";
            //        //timerThongBao.Enabled = true;
            //        return;
            //    }
            //    if (!string.IsNullOrEmpty(response) && response.IndexOf("Error:") == -1)
            //    {
            //        string value = XMLUtils.DeSerializeToObject<string>(response);
            //        if (int.Parse(value) != 0)
            //        {
            //            BangKe.DaGuiBHYT = true;
            //            BangKe.BangKe_Id_BHXH = int.Parse(value);
            //            int kq = BangKe.Update();

            //            if (TrangThai == "WSPutBangKe")
            //            // MessageBox.Show("Đã gửi BHXH!", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
            //            {
            //                lblThongBao.Text = "Đã gửi BHXH.";
            //                timerThongBao.Enabled = true;
            //            }
            //            else
            //            //MessageBox.Show("Đã cập nhật bảng kê ở BHXH!", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
            //            {
            //                lblThongBao.Text = "Đã cập nhật bảng kê ở BHXH.";
            //                timerThongBao.Enabled = true;
            //            }
            //            LoadData(0);
            //        }
            //        else
            //        {
            //            MessageBox.Show("Không gửi được bảng kê.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
            //            //lblThongBao.ForeColor = Color.Red;
            //            //lblThongBao.Text = "Không gửi được bảng kê!";
            //            //timerThongBao.Enabled = true;
            //        }
            //    }
            //    else
            //    {

            //        string str = system.GetToken();

            //        if (string.IsNullOrEmpty(str))
            //        {
            //            MessageBox.Show("Lỗi không thể kết nối tới BHXH.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
            //            //lblThongBao.ForeColor = Color.Red;
            //            //lblThongBao.Text = "Lỗi không thể kết nối tới BHXH!.";
            //            //timerThongBao.Enabled = true;
            //            return;
            //        }
            //        else
            //        {

            //        }
            //        //quay lai truoc
            //    }
            //}
        }
        private void UpdateData()
        {
            SQLiteDAL DAL = new SQLiteDAL();
            DAL.BeginTransaction();
            clsBangKe objBangKe = new clsBangKe();
            List<clsBangKeChiTiet> chitiets = new List<clsBangKeChiTiet>();

            try
            {
                objBangKe.GetByKey(m_BangKe_Id);

                FillBangKe(ref objBangKe);
                int kq = objBangKe.Update(DAL);

                if (kq > 0)
                {
                    kq = objBangKe.DeleteBangKeChiTiet(m_BangKe_Id, DAL);
                    if (kq > 0)
                    {
                        FillBangKe(ref chitiets, m_BangKe_Id);
                        foreach (clsBangKeChiTiet ct in chitiets)
                        {
                            kq = ct.Insert(DAL);
                            if (kq <= 0)
                            {
                                DAL.RollbackTransaction();
                                return;
                            }
                        }
                    }
                    else
                    {
                        DAL.RollbackTransaction();
                        return;
                    }

                }
                else
                {
                    DAL.RollbackTransaction();
                    return;
                }

                DAL.CommitTransaction();
                //MessageBox.Show("Cập nhật bảng kê thành công", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
                lblThongBao.Text = "Cập nhật bảng kê thành công.";
                timerThongBao.Enabled = true;
            }
            catch (Exception ex)
            {
                DAL.RollbackTransaction();
                m_BangKe_Id = 0;
                txtSoHoSo.Text = "";
                MessageBox.Show("Cập nhật bảng kê không thành công.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
                //lblThongBao.Text = "Cập nhật bảng kê không thành công";
                //timerThongBao.Enabled = true;
            }
        }
        //Gui BHXH
        private void btnGuiBHXH_Click(object sender, EventArgs e)
        {
            //WSUpdateBangKe
            //WSPutBangKe

            if (m_BangKe_Id == 0)
            {
                MessageBox.Show("Bạn vui lòng chọn bảng kê để gửi BHXH.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
                //lblThongBao.ForeColor = Color.Red;
                //lblThongBao.Text = "Bạn vui lòng chọn bảng kê để gửi BHXH!";
                //timerThongBao.Enabled = true;
                return;
            }

            if (MessageBox.Show("Bạn có muốn gửi BHXH?", this.Text, MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
            {
                clsBangKe bangKe = new clsBangKe();
                bangKe.GetByKey(m_BangKe_Id);

                string TrangThai = "";

                if (bangKe.DaGuiBHYT.Value == false)
                {
                    TrangThai = "WSPutBangKe";
                }
                else
                {
                    TrangThai = "WSUpdateBangKe";
                }
                Send(bangKe, TrangThai);
            }
        }
        private void txtSoTheBHYT_Validated(object sender, EventArgs e)
        {
            //Khi nhập xong số thẻ BHYT tự động chọn mức hưởng dựa vào ký tự số 3.
            //Vì trước đây có 7 mức hưởng, sau này chuyển thành 5 mức hưởng. Các thẻ cũ thì vẫn chưa đổi số thẻ nhưng vẫn hưởng theo mức hưởng mới.
            //Phải check trong bảng DM_ChuyenDoi trước theo cặp key DoiTuong (2 ký tự đầu) và mức hưởng cũ (ký tự số 3) --> chọn mức hưởng (theo mức hưởng mới).
            //Nếu không có trong bảng DM_ChuyenDoi thì nhảy theo bảng DM_MucHuong và check thêm 2 ký đầu và ký tự số 3 có đúng không trong bảng DM_MucHuongChuyenDoi
            int MucHuong = clsDM_ChuyenDoiMucHuong.GetMucHuongMoi(txtSoTheBHYT.Text);
            cboMucHuong.SelectedValue = MucHuong;

            txtNgayVao_Validated(null, null);

            if (txtSoTheBHYT.Text.Replace("-", "").Length >= 15)
            {
                if (TrangThai == "")
                {
                    LoadData(2);
                }
                else if (TrangThai == "ThemMoi" && (txtSoDK.Text.Trim().Length == 0 && txtMaBenhNhan.Text.Trim().Length == 0
                    && txtMaKhamChuBenh.Text.Trim().Length == 0))
                {
                    clsBangKe obj = new clsBangKe();

                    IsRunCheck = true;
                    if (txtSoTheBHYT.Text.Replace("-", "").Trim().Length > 0)
                    {
                        obj.GetByKey(txtSoTheBHYT.Text.Replace("-", "").Trim());
                        if (obj.MaKhamChuaBenh == null || obj.MaKhamChuaBenh.Trim() == "")
                        {
                            //Do nothing
                        }
                        else
                        {
                            txtTuNgay.Text = string.Format("{0:dd/MM/yyyy}", obj.TuNgayBH);
                            txtDenNgay.Text = string.Format("{0:dd/MM/yyyy}", obj.DenNgayBH);
                            txtDiaChi.Text = obj.DiaChi;
                            cboGioiTinh.SelectedValue = obj.GioiTinh.ToString();
                            cboMaNoiSinhSong.SelectedValue = obj.MaNoiSinhSong;
                            txtMaCSKCBBD.Text = obj.MaCSKCBBanDau;
                            txtTenCSKCBBD.Text = obj.TenCSKCBBanDau;
                            txtNgaySinh.Text = string.Format("{0:dd/MM/yyyy}", obj.NgaySinh);
                            txtMaBenhNhan.Text = obj.MaNguoiBenh;
                            cboTuyenKham.SelectedValue = obj.TuyenKhamBenh.ToString();
                            cboMaNoiSinhSong.SelectedValue = obj.MaNoiSinhSong;
                            txtNamSinh.Text = obj.NamSinh.ToString();
                            txtHoTen.Text = obj.HoTen.ToString();
                        }

                        IsRunCheck = false;
                    }
                }

                LoadMaCSKCBTheoMaTinh();

            }
        }
        private void txtSoDK_Validated(object sender, EventArgs e)
        {
            //Load theo So ĐK BHXH
            if (txtSoDK.Text.Trim().Length == 0)
            {
                return;
            }

            if (TrangThai == "ThemMoi")
            {

                clsBangKe obj = new clsBangKe();
                if (obj.CheckTonTaiSoDK(txtSoDK.Text))
                {
                    ResetControl();
                    MessageBox.Show("Số đăng ký này đã được sử dụng.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                    //lblThongBao.ForeColor = Color.Red;
                    //lblThongBao.Text="Số đăng ký này đã được sử dụng";
                    //timerThongBao.Enabled=true;
                }
                if (!Load_ThongTinDKKCB())
                {
                    LoadData(3);
                }
                TinhTongGridView();
            }
            else
            {
                LoadData(3);
            }
        }
        private void txtMaKhamChuBenh_Validated(object sender, EventArgs e)
        {
            if (TrangThai == "ThemMoi")
            {
                clsBangKe obj = new clsBangKe();
                if (obj.CheckTonTaiMaKhamChuaBenh(txtMaKhamChuBenh.Text))
                {
                    MessageBox.Show("Mã khám chữa bệnh này đã tồn tại.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);

                    //lblThongBao.Text = "Mã khám chữa bệnh này đã tồn tại!";
                    //timerThongBao.Enabled = true;

                    txtMaKhamChuBenh.Text = "";
                    txtMaKhamChuBenh.Focus();

                }
                else if (txtSoDK.Text.Trim().Length > 0 && txtSoTheBHYT.Text.Trim().Length > 0 && txtHoTen.Text.Trim().Length > 0)
                {
                    //CheckDungTuyen();
                }
            }
            else
            {
                LoadData(1);
            }
        }
        private void LoadData(int status)
        {
            if (IsRunCheck == true)
            {
                return;
            }
            //Nếu trang thái là 3 và có số đăng ký ở trang thái thêm mới thì GetSoDangKy từ DangKyKhamBenh
            if (status == 3 && txtSoDK.Text.Trim().Length > 0 && TrangThai == "ThemMoi")
            {

                clsDangKyKhamBenh obj = new clsDangKyKhamBenh();
                obj.GetByKey(txtSoDK.Text.Trim());

                if (obj.KhamBenh_Id <= 0)
                {
                    txtSoDK.Text = string.Empty;
                    ResetControl();
                    return;
                }
                IsRunCheck = true;
                txtSoTheBHYT.Text = obj.SoTheBHYT.ToString();
                txtHoTen.Text = obj.HoTen;
                txtDiaChi.Text = obj.DiaChi;
                txtTuNgay.Text = string.Format("{0:dd/MM/yyyy}", obj.TuNgay);
                txtDenNgay.Text = string.Format("{0:dd/MM/yyyy}", obj.DenNgay);
                txtNgaySinh.Text = string.Format("{0:dd/MM/yyyy}", obj.NgaySinh);
                txtNgayVao.Text = string.Format("{0:dd/MM/yyyy}", obj.NgayDenKham);
                txtNamSinh.Text = obj.NgaySinh.Value.Year.ToString();

                clsDM_CSKCB objCSKCB = new clsDM_CSKCB();
                objCSKCB.GetByKey(obj.MaCSKCBBĐ);
                txtMaCSKCBBD.Text = obj.MaCSKCBBĐ;
                txtTenCSKCBBD.Text = objCSKCB.TenCSKCB;
                txtNoiChuyenDen.Text = obj.MaNoiChuyenDen;
                cboTuyenKham.SelectedValue = obj.LyDoVV.ToString();
                cboGioiTinh.SelectedValue = obj.GioiTinh.ToString();
                cboMaNoiSinhSong.SelectedValue = obj.MaNoiSinhSong.ToString();

                LoadMaCSKCBTheoMaTinh();
                //CheckDungTuyen();
                txtMaBenhNhan.Focus();
            }

            /*
             * Load thông tin từ Bảng Kê
             * Trang thái 0 : Get từ Form Search
             * Trang Thai 1: Get thông tin bằng Mã khám chữa bệnh
             * Trạng thái 2: Get thông tin bằng thẻ BHYT
             * Trang thái 3: Get bằng số đăng ký.
             */
            if (status == 0 || status == 1 || status == 2 || (TrangThai == "" && status == 3))
            {
                clsBangKe obj = new clsBangKe();
                if (TrangThai.Trim() == "" && status == 1)
                {
                    if (txtMaKhamChuBenh.Text.Trim().Length > 0)
                    {
                        obj.GetByMaKhamChuaBenh(txtMaKhamChuBenh.Text);
                        if (obj.MaKhamChuaBenh == null || obj.MaKhamChuaBenh.Trim() == "")
                        {
                            MessageBox.Show("Không tìm thấy Mã khám chữa bệnh " + txtMaKhamChuBenh.Text + " này.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);

                            ResetControl();
                            txtMaKhamChuBenh.Focus();
                            return;
                        }
                        m_BangKe_Id = obj.BangKe_Id;
                    }
                    else
                    {
                        ResetControl();
                        txtMaKhamChuBenh.Focus();
                        return;
                    }
                    IsRunCheck = true;
                }
                else if (TrangThai.Trim() == "" && status == 2)
                {

                    if (txtSoTheBHYT.Text.Replace("-", "").Trim().Length > 0)
                    {
                        obj.GetByKey(txtSoTheBHYT.Text.Replace("-", "").Trim());
                        if (obj.MaKhamChuaBenh == null || obj.MaKhamChuaBenh.Trim() == "")
                        {
                            MessageBox.Show("Không tìm thấy số thẻ " + txtSoTheBHYT.Text + " này.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);

                            ResetControl();
                            txtSoTheBHYT.Focus();
                            return;
                        }

                    }
                    else
                    {
                        ResetControl();
                        txtSoTheBHYT.Focus();
                        return;
                    }
                    IsRunCheck = true;
                }
                else if (TrangThai.Trim() == "" && status == 3)
                {
                    obj.GetBySoDK(txtSoDK.Text);
                    if (obj.MaKhamChuaBenh == null || obj.MaKhamChuaBenh.Trim() == "")
                    {
                        MessageBox.Show("Không tìm thấy số đăng ký " + txtSoDK.Text + " này.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);

                        ResetControl();
                        txtSoDK.Focus();
                        return;
                    }

                }
                else if (status == 0)
                {
                    IsRunCheck = true;
                    obj.GetByKey(m_BangKe_Id);
                }
                m_BangKe_Id = obj.BangKe_Id;

                //txtSoHoSo.Text = obj.SoHoSo;

                txtSoHoSo.Text = obj.BangKe_Id.ToString();
                txtMaKhamChuBenh.Text = obj.MaKhamChuaBenh;

                //if (status != 2)
                //{
                txtSoTheBHYT.Text = obj.SoTheBHYT;
                //}

                txtTuNgay.Text = string.Format("{0:dd/MM/yyyy}", obj.TuNgayBH);
                txtDenNgay.Text = string.Format("{0:dd/MM/yyyy}", obj.DenNgayBH);
                txtDiaChi.Text = obj.DiaChi;
                txtKhoa.Text = obj.Khoa;
                txtHoTen.Text = obj.HoTen;
                txtMaBenhNhan.Text = obj.MaNguoiBenh;
                cboTuyenKham.SelectedValue = obj.TuyenKhamBenh.ToString();

                txtNamSinh.Text = obj.NamSinh.ToString();

                cboTinhTrang.SelectedIndex = obj.DaGuiBHYT.Value ? 1 : 0;

                txtSoNgay.Text = obj.SoNgayDieuTri.Value.ToString();
                txtNgayVao.Text = string.Format("{0:dd/MM/yyyy}", obj.NgayDenKham);
                txtNgayRa.Text = string.Format("{0:dd/MM/yyyy}", obj.NgayKetThuc);
                txtNgayQuyetToan.Text = string.Format("{0:dd/MM/yyyy}", obj.NgayQuyetToan);
                txtMaICD.Text = obj.MaICD;
                txtChanDoan.Text = obj.ChanDoan;
                cboGioiTinh.SelectedValue = obj.GioiTinh.ToString();
                cboMaNoiSinhSong.SelectedValue = obj.MaNoiSinhSong;
                txtMaCSKCBBD.Text = obj.MaCSKCBBanDau;
                txtTenCSKCBBD.Text = obj.TenCSKCBBanDau;
                txtNoiChuyenDen.Text = obj.MaNoiChuyenDen;
                txtNgaySinh.Text = string.Format("{0:dd/MM/yyyy}", obj.NgaySinh);
                txtBenhKhac.Text = obj.BenhKhac;

                chkChungTuKhongCCT.Checked = obj.ChungNhanKhongCCT.Value;

                txtSoDK.Text = obj.SoHoSo;

                LoadMaCSKCBTheoMaTinh();

                // txtMaCSKCBBD.UpdateData();
                txtThuoc.Clear();

                clsBangKeChiTiet chitiet = new clsBangKeChiTiet();
                TableChiPhiThuoc = chitiet.GetAll(m_BangKe_Id);
                grdChiPhiThuoc.DataSource = TableChiPhiThuoc;

                txtTongChiPhi.Text = string.Format("{0:#,##0}", TableChiPhiThuoc.Compute("Sum(ThanhTienBHYT)", "True"));
                txtBHYTThanhToan.Text = string.Format("{0:#,##0}", TableChiPhiThuoc.Compute("Sum(BHYTThanhToan)", "True"));
                txtNguoiBenhTra.Text = string.Format("{0:#,##0}", TableChiPhiThuoc.Compute("Sum(NguoiBenhTra)", "True"));
                txtNguonKhac.Text = string.Format("{0:#,##0}", TableChiPhiThuoc.Compute("Sum(NguonKhac)", "True"));
                txtNgoaiDinhSuat.Text = string.Format("{0:#,##0}", TableChiPhiThuoc.Compute("Sum(ChiPhiNgoaiDinhSuat)", "True"));
                txtThuoc.Focus();
                txtThuoc.Text = "";
                txtSoLuongThuoc.Value = 1;
                txtPhanTramHuong.Value = obj.PhanTramDuocHuong ?? 0;
            }

            //txtMaICD.UpdateData();

            this.grdChiPhiThuoc.Sort(this.grdChiPhiThuoc.Columns["GroupName"], ListSortDirection.Ascending);
            IsRunCheck = false;
        }
        private void InsertData()
        {
            SQLiteDAL DAL = new SQLiteDAL();
            DAL.BeginTransaction();
            clsBangKe objBangKe = new clsBangKe();
            List<clsBangKeChiTiet> chitiets = new List<clsBangKeChiTiet>();
            try
            {
                FillBangKe(ref objBangKe);
                int intBangKe_Id = objBangKe.Insert(DAL);

                m_BangKe_Id = intBangKe_Id;

                int kq = 0;
                if (intBangKe_Id > 0)
                {

                    FillBangKe(ref chitiets, intBangKe_Id);
                    foreach (clsBangKeChiTiet ct in chitiets)
                    {
                        kq = ct.Insert(DAL);
                        if (kq <= 0)
                        {
                            DAL.RollbackTransaction();
                            return;
                        }
                    }
                }
                else
                {
                    DAL.RollbackTransaction();
                    return;
                }

                DAL.CommitTransaction();
                //MessageBox.Show("Thêm mới bảng kê thành công", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
                lblThongBao.Text = "Thêm mới bảng kê thành công.";
                timerThongBao.Enabled = true;
            }
            catch (Exception ex)
            {
                DAL.RollbackTransaction();
                MessageBox.Show("Thêm mới bảng kê không thành công.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
                //lblThongBao.Text = "Thêm mới bảng kê không thành công";
                //timerThongBao.Enabled = true;
            }
        }