Example #1
0
        ActionResult Kiemtrasoluongthuoctrongkho(TPhieuCapphatChitiet pres, int ID_KHO)
        {
            int       id_thuoc = pres.IdThuoc;
            DmucThuoc _drug    = new Select().From(DmucThuoc.Schema).Where(DmucThuoc.IdThuocColumn).IsEqualTo(id_thuoc).ExecuteSingle <DmucThuoc>();

            if (_drug == null)
            {
                return(ActionResult.UNKNOW);
            }
            string Drug_name  = _drug.TenThuoc;
            int    so_luong   = pres.SoLuong;
            int    SoLuongTon = CommonLoadDuoc.SoLuongTonTrongKho(pres.IdDonthuoc, ID_KHO, id_thuoc, (int)pres.IdThuockho.Value, 1, (byte)1);

            if (SoLuongTon < so_luong)
            {
                Utility.ShowMsg(string.Format("Bạn không thể xác nhận đơn thuốc,Vì thuốc :{0} số lượng tồn hiện tại trong kho({1}) không đủ cấp cho số lượng yêu cầu({2})\n Mời bạn xem lại số lượng", Drug_name, SoLuongTon.ToString(), so_luong.ToString()));
                return(ActionResult.NotEnoughDrugInStock);
            }
            return(ActionResult.Success);
        }
Example #2
0
 private bool InValiKiemTraDonThuoc()
 {
     try
     {
         if (!radChuaXacNhan.Checked && !grdPres.GetDataRows().Any())
         {
             return(false);
         }
         string   idLoaidoituongKcb = Utility.GetValueFromGridColumn(grdPres, "id_loaidoituong_kcb");
         string   inphieuDct        = Utility.sDbnull(grdPres.GetValue("id_phieu_dct"), "0");
         string   dathanhtoan       = Utility.GetValueFromGridColumn(grdPres, "dathanhtoan");
         long     presId            = Utility.Int32Dbnull(grdPres.GetValue(KcbDonthuoc.Columns.IdDonthuoc));
         string   tenBenhnhan       = Utility.sDbnull(grdPres.GetValue(KcbDanhsachBenhnhan.Columns.TenBenhnhan));
         SqlQuery sqlkt             = new Select().From(TPhieuXuatthuocBenhnhan.Schema).Where(TPhieuXuatthuocBenhnhan.Columns.IdDonthuoc).IsEqualTo(presId);
         SqlQuery sqlktdonthuoc     = new Select().From(KcbDonthuoc.Schema).Where(KcbDonthuoc.Columns.IdDonthuoc).IsEqualTo(presId);
         if (sqlktdonthuoc.GetRecordCount() <= 0)
         {
             Utility.ShowMsg(string.Format("Đơn thuốc của bệnh nhân {0} không tồn tại nữa! Bạn cần tìm kiếm lại thông tin đơn thuốc", tenBenhnhan));
             log.Trace(string.Format("Đơn thuốc của bệnh nhân {0} không tồn tại nữa! Bạn cần tìm kiếm lại thông tin đơn thuốc", tenBenhnhan));
             return(false);
         }
         if (sqlkt.GetRecordCount() > 0)
         {
             Utility.ShowMsg(string.Format("Đơn thuốc của bệnh nhân {0} đã được cấp phát!", tenBenhnhan));
             log.Trace(string.Format("Đơn thuốc của bệnh nhân {0} đã được cấp phát!", tenBenhnhan));
             return(false);
         }
         if (idLoaidoituongKcb == "1")
         {
             if (dathanhtoan == "0")
             {
                 Utility.ShowMsg(
                     string.Format(
                         "Đối tượng bệnh nhân Dịch vụ đang chọn chưa thanh toán đơn thuốc nên bạn không thể thực hiện cấp phát." +
                         "\nĐề nghị bệnh nhân đi nộp tiền thanh toán trước khi quay lại lĩnh thuốc"));
                 return(false);
             }
         }
         else
         {
             if (inphieuDct == "0")
             {
                 Utility.ShowMsg(string.Format("Đối tượng bệnh nhân BHYT đang chọn chưa in phôi BHYT nên bạn không thể thực hiện cấp phát thuốc." +
                                               "\nĐề nghị bệnh nhân đến quầy thanh toán in phôi BHYT trước khi quay lại lĩnh thuốc"));
                 return(false);
             }
         }
         foreach (DataRow dr in _mDtDataPresDetail.Rows)
         {
             long    idDonthuoc = Utility.Int32Dbnull(dr[KcbDonthuocChitiet.Columns.IdDonthuoc]);
             int     idThuoc    = Utility.Int32Dbnull(dr[KcbDonthuocChitiet.Columns.IdThuoc]);
             string  drugName   = Utility.sDbnull(dr["tenthuoc_bietduoc"]);
             int     idKho      = Utility.Int32Dbnull(dr[KcbDonthuocChitiet.Columns.IdKho]);
             int     idThuockho = Utility.Int32Dbnull(dr[KcbDonthuocChitiet.Columns.IdThuockho]);
             decimal soLuong    = Utility.DecimaltoDbnull(dr[KcbDonthuocChitiet.Columns.SoLuong]);
             decimal soLuongTon = CommonLoadDuoc.SoLuongTonTrongKho(idDonthuoc, idKho, idThuoc, idThuockho, 0, (byte)0);//Ko cần kiểm tra chờ xác nhận
             if (soLuongTon < soLuong)
             {
                 Utility.ShowMsg(string.Format("Bạn không thể xác nhận đơn thuốc, Vì thuốc :{0} số lượng tồn hiện tại trong kho không đủ\n Mời bạn xem lại số lượng", drugName));
                 Utility.GonewRowJanus(grdPresDetail, KcbDonthuocChitiet.Columns.IdThuoc, idThuoc.ToString());
                 return(false);
             }
         }
         return(true);
     }
     catch
     {
         return(false);
     }
 }
        private void AddPreDetail()
        {
            try
            {
                string errMsg      = string.Empty;
                string errMsg_temp = string.Empty;
                log.Trace("Get thong tin cac doi tuong can de luu don thuoc");

                if (objDKho == null)
                {
                    return;
                }
                if (objLuotkham == null)
                {
                    return;
                }
                log.Trace(
                    "Bat dau them chi tiet don thuoc.......................................................................................");
                foreach (GridEXRow _row in grdPresDetail.GetCheckedRows())
                {
                    if (Utility.Int32Dbnull(objDKho.KtraTon) == 1)
                    {
                        decimal num = CommonLoadDuoc.SoLuongTonTrongKho(-1L,
                                                                        Utility.Int32Dbnull(idkhosaochep), Utility.Int32Dbnull(_row.Cells["id_thuoc"].Value, -1), Utility.Int64Dbnull(_row.Cells["id_thuockho"].Value, -1),
                                                                        Utility.Int32Dbnull(
                                                                            THU_VIEN_CHUNG.Laygiatrithamsohethong("KIEMTRATHUOC_CHOXACNHAN", "1", false), 1),
                                                                        Utility.ByteDbnull(objLuotkham.Noitru, 0));
                        log.Trace("1. Lay xong so luong ton kho ke don");
                        if (Utility.DecimaltoDbnull(_row.Cells["so_luong"].Value, 0) > num)
                        {
                            Utility.ShowMsg(
                                string.Format(
                                    "Số lượng " + (KIEU_THUOC_VT == "THUOC" ? "thuốc" : "vật tư") +
                                    " cấp phát {0} vượt quá số lượng " +
                                    (KIEU_THUOC_VT == "THUOC" ? "thuốc" : "vật tư") +
                                    " trong kho {1}.\nCó thể trong lúc bạn chọn " +
                                    (KIEU_THUOC_VT == "THUOC" ? "thuốc" : "vật tư") +
                                    " chưa kịp đưa vào đơn, các Bác sĩ khác hoặc Dược sĩ đã kê hoặc cấp phát mất một lượng " +
                                    (KIEU_THUOC_VT == "THUOC" ? "thuốc" : "vật tư") +
                                    " so với thời điểm bạn chọn.\nMời bạn liên hệ phòng Dược kiểm tra lại",
                                    Utility.sDbnull(_row.Cells["so_luong"].Value), num), "Cảnh báo", MessageBoxIcon.Hand);
                            bool selected = _row.Selected;
                            return;
                        }
                    }
                    DataTable listdata =
                        new XuatThuoc().GetObjThuocKhoCollection(
                            Utility.Int32Dbnull(idkhosaochep, 0),
                            Utility.Int32Dbnull(_row.Cells["id_thuoc"].Value, -1),
                            Utility.Int32Dbnull(_row.Cells["id_thuockho"].Value, -1),
                            (decimal)Utility.DecimaltoDbnull(_row.Cells["so_luong"].Value, 0),
                            Utility.ByteDbnull(objLuotkham.IdLoaidoituongKcb, 0),
                            Utility.ByteDbnull(objLuotkham.DungTuyen, 0), (byte)objLuotkham.Noitru);
                    var list2 = new List <KcbDonthuocChitiet>();
                    foreach (DataRow thuockho in listdata.Rows)
                    {
                        decimal _soluong = Utility.DecimaltoDbnull(thuockho[TThuockho.Columns.SoLuong], 0);
                        if (_soluong > 0)
                        {
                            DataRow[] rowArray =
                                m_dtDonthuocChitiet.Select(TThuockho.Columns.IdThuockho + "=" +
                                                           Utility.sDbnull(
                                                               thuockho[TThuockho.Columns.IdThuockho]) +
                                                           " AND tu_tuc=" + (0));
                            if (rowArray.Length > 0)
                            {
                                rowArray[0][KcbDonthuocChitiet.Columns.SoLuong] =
                                    Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.SoLuong]) +
                                    _soluong;
                                rowArray[0]["TT_KHONG_PHUTHU"] =
                                    Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.SoLuong]) *
                                    Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.DonGia]);
                                rowArray[0]["TT"] =
                                    Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.SoLuong]) *
                                    (Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.DonGia]) +
                                     Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.PhuThu]));
                                rowArray[0]["TT_BHYT"] =
                                    Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.SoLuong]) *
                                    Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.BhytChitra]);
                                rowArray[0]["TT_BN"] =
                                    Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.SoLuong]) *
                                    (Utility.DecimaltoDbnull(
                                         rowArray[0][KcbDonthuocChitiet.Columns.BnhanChitra], 0) +
                                     Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.PhuThu], 0));
                                rowArray[0]["TT_PHUTHU"] =
                                    Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.SoLuong]) *
                                    Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.PhuThu], 0);
                                rowArray[0]["TT_BN_KHONG_PHUTHU"] =
                                    Utility.DecimaltoDbnull(rowArray[0][KcbDonthuocChitiet.Columns.SoLuong]) *
                                    Utility.DecimaltoDbnull(
                                        rowArray[0][KcbDonthuocChitiet.Columns.BnhanChitra], 0);
                                AddtoView(rowArray[0], _soluong);
                                list2.Add(getNewItem(rowArray[0]));
                            }
                            else
                            {
                                DataRow row = m_dtDonthuocChitiet.NewRow();
                                row[DmucThuoc.Columns.TenThuoc]         = Utility.sDbnull(_row.Cells["ten_thuoc"].Value, "");
                                row[KcbDonthuocChitiet.Columns.SoLuong] = _soluong;

                                row[KcbDonthuocChitiet.Columns.PhuThu] =
                                    Utility.DecimaltoDbnull(thuockho["phu_thu"], 0);
                                ;
                                // !this.Giathuoc_quanhe ? 0M : Utility.DecimaltoDbnull(this.txtSurcharge.Text, 0);
                                row[KcbDonthuocChitiet.Columns.PhuthuDungtuyen] =
                                    Utility.DecimaltoDbnull(thuockho[TThuockho.Columns.PhuthuDungtuyen], 0);
                                row[KcbDonthuocChitiet.Columns.PhuthuTraituyen] =
                                    Utility.DecimaltoDbnull(thuockho[TThuockho.Columns.PhuthuTraituyen], 0);

                                row[KcbDonthuocChitiet.Columns.IdThuoc] =
                                    Utility.Int32Dbnull(_row.Cells["id_thuoc"].Value, -1);
                                row[KcbDonthuocChitiet.Columns.IdDonthuoc] = IdDonthuoc;
                                row["IsNew"] = 1;
                                row[KcbDonthuocChitiet.Columns.MadoituongGia] = Utility.sDbnull(_row.Cells["madoituong_gia"].Value, "");
                                row[KcbDonthuocChitiet.Columns.IdThuockho]    =
                                    Utility.Int64Dbnull(thuockho[TThuockho.Columns.IdThuockho], -1);
                                row[KcbDonthuocChitiet.Columns.GiaNhap] =
                                    Utility.DecimaltoDbnull(thuockho[TThuockho.Columns.GiaNhap], 0);
                                row[KcbDonthuocChitiet.Columns.GiaBan] =
                                    Utility.DecimaltoDbnull(thuockho[TThuockho.Columns.GiaBan], 0);
                                row[KcbDonthuocChitiet.Columns.GiaBhyt] =
                                    Utility.DecimaltoDbnull(thuockho[TThuockho.Columns.GiaBhyt], 0);
                                row[KcbDonthuocChitiet.Columns.Vat] =
                                    Utility.DecimaltoDbnull(thuockho[TThuockho.Columns.Vat], 0);
                                row[KcbDonthuocChitiet.Columns.SoLo] =
                                    Utility.sDbnull(thuockho[TThuockho.Columns.SoLo], "");
                                row[KcbDonthuocChitiet.Columns.SoDky] =
                                    Utility.sDbnull(thuockho[TThuockho.Columns.SoDky], "");
                                row[KcbDonthuocChitiet.Columns.SoQdinhthau] =
                                    Utility.sDbnull(thuockho[TThuockho.Columns.SoQdinhthau], "");
                                row[KcbDonthuocChitiet.Columns.MaNhacungcap] =
                                    Utility.sDbnull(thuockho[TThuockho.Columns.MaNhacungcap], "");
                                row["ten_donvitinh"] = Utility.sDbnull(_row.Cells["ten_donvitinh"].Value, "");
                                row["sNgay_hethan"]  = Utility.sDbnull(thuockho["sNgay_hethan"], "");
                                row["sNgay_nhap"]    = Utility.sDbnull(thuockho["sNgay_nhap"], "");
                                row[KcbDonthuocChitiet.Columns.NgayHethan] =
                                    thuockho[TThuockho.Columns.NgayHethan];
                                row[KcbDonthuocChitiet.Columns.NgayNhap] = thuockho[TThuockho.Columns.NgayNhap];
                                row[KcbDonthuocChitiet.Columns.IdKho]    =
                                    Utility.Int32Dbnull(idkhosaochep, -1);
                                row[TDmucKho.Columns.TenKho] = Utility.sDbnull(objDKho.TenKho, -1);
                                row[KcbDonthuocChitiet.Columns.DonviTinh]  = Utility.sDbnull(_row.Cells["ten_donvitinh"].Value, "");
                                row[DmucThuoc.Columns.HoatChat]            = Utility.sDbnull(_row.Cells["hoat_chat"].Value, "");
                                row[KcbDonthuocChitiet.Columns.ChidanThem] = Utility.sDbnull(_row.Cells["chidan_them"].Value, "");
                                row[KcbDonthuocChitiet.Columns.MotaThem]   = Utility.sDbnull(_row.Cells["mota_them_chitiet"].Value, "");
                                row["mota_them_chitiet"] = Utility.sDbnull(_row.Cells["mota_them_chitiet"].Value, "");
                                row[KcbDonthuocChitiet.Columns.CachDung]    = Utility.sDbnull(_row.Cells["cach_dung"].Value, "");
                                row[KcbDonthuocChitiet.Columns.SoluongDung] = Utility.sDbnull(_row.Cells["soluong_dung"].Value, "");
                                row[KcbDonthuocChitiet.Columns.SolanDung]   = Utility.sDbnull(_row.Cells["solan_dung"].Value, "");
                                row["ma_loaithuoc"]  = Utility.sDbnull(_row.Cells["ma_loaithuoc"].Value, "");
                                row["ten_loaithuoc"] = Utility.sDbnull(_row.Cells["ten_loaithuoc"].Value, "");
                                row[KcbDonthuocChitiet.Columns.TrangthaiThanhtoan] = 0;
                                row[KcbDonthuocChitiet.Columns.SttIn]  = GetMaxSTT(m_dtDonthuocChitiet);
                                row[KcbDonthuocChitiet.Columns.TuTuc]  = 0;
                                row[KcbDonthuocChitiet.Columns.DonGia] =
                                    Utility.DecimaltoDbnull(thuockho["GIA_BAN"], 0);
                                // (this.APDUNG_GIATHUOC_DOITUONG || this.Giathuoc_quanhe) ?
                                // (Utility.DecimaltoDbnull(this.txtPrice.Text, 0)) :
                                // (this.objLuotkham.IdLoaidoituongKcb== 1 ?
                                //Utility.DecimaltoDbnull(thuockho[TThuockho.Columns.GiaBan],0) : Utility.DecimaltoDbnull(thuockho[TThuockho.Columns.GiaBhyt],0));
                                row[KcbDonthuocChitiet.Columns.PtramBhyt]     = objLuotkham.PtramBhyt;
                                row[KcbDonthuocChitiet.Columns.PtramBhytGoc]  = objLuotkham.PtramBhytGoc;
                                row[KcbDonthuocChitiet.Columns.MaDoituongKcb] = objLuotkham.MaDoituongKcb;
                                row[KcbDonthuocChitiet.Columns.KieuBiendong]  = thuockho["kieubiendong"];
                                if (em_CallAction == CallAction.FromMenu)
                                {
                                    if (tu_tuc == 0)
                                    {
                                        decimal BHCT = 0m;
                                        if (objLuotkham.DungTuyen == 1)
                                        {
                                            BHCT =
                                                Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.DonGia],
                                                                        0) * (Utility.DecimaltoDbnull(objLuotkham.PtramBhyt, 0) / 100);
                                        }
                                        else
                                        {
                                            if (objLuotkham.TrangthaiNoitru <= 0)
                                            {
                                                BHCT =
                                                    Utility.DecimaltoDbnull(
                                                        row[KcbDonthuocChitiet.Columns.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(
                                                        row[KcbDonthuocChitiet.Columns.DonGia], 0) *
                                                    (Utility.DecimaltoDbnull(objLuotkham.PtramBhytGoc, 0) / 100) *
                                                    (_bhytPtramTraituyennoitru / 100);
                                            }
                                        }
                                        // decimal num2 = (Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.DonGia], 0) * Utility.DecimaltoDbnull(this.objLuotkham.PtramBhyt, 0)) / 100M;
                                        decimal num3 =
                                            Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.DonGia], 0) -
                                            BHCT;
                                        row[KcbDonthuocChitiet.Columns.BhytChitra]  = BHCT;
                                        row[KcbDonthuocChitiet.Columns.BnhanChitra] = num3;
                                    }
                                    else
                                    {
                                        row[KcbDonthuocChitiet.Columns.PtramBhyt]   = 0;
                                        row[KcbDonthuocChitiet.Columns.BhytChitra]  = 0;
                                        row[KcbDonthuocChitiet.Columns.BnhanChitra] =
                                            Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.DonGia], 0);
                                    }
                                }
                                row["TT_KHONG_PHUTHU"] =
                                    Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.SoLuong]) *
                                    Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.DonGia]);
                                row["TT"] = Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.SoLuong]) *
                                            (Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.DonGia]) +
                                             Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.PhuThu]));
                                row["TT_BHYT"] = Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.SoLuong]) *
                                                 Utility.DecimaltoDbnull(
                                    row[KcbDonthuocChitiet.Columns.BhytChitra]);
                                row["TT_BN"] = Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.SoLuong]) *
                                               (Utility.DecimaltoDbnull(
                                                    row[KcbDonthuocChitiet.Columns.BnhanChitra], 0) +
                                                Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.PhuThu],
                                                                        0));
                                row["TT_PHUTHU"] = Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.SoLuong]) *
                                                   Utility.DecimaltoDbnull(
                                    row[KcbDonthuocChitiet.Columns.PhuThu], 0);
                                row["TT_BN_KHONG_PHUTHU"] =
                                    Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.SoLuong]) *
                                    Utility.DecimaltoDbnull(row[KcbDonthuocChitiet.Columns.BnhanChitra], 0);

                                errMsg_temp =
                                    KiemtraCamchidinhchungphieu(
                                        Utility.Int32Dbnull(row[KcbDonthuocChitiet.Columns.IdThuoc], 0),
                                        Utility.sDbnull(row[DmucThuoc.Columns.TenThuoc], ""));
                                log.Trace("3. Đã kiểm tra xong cấm chỉ định chung đơn thuốc");
                                if (errMsg_temp != string.Empty)
                                {
                                    errMsg += errMsg_temp;
                                }
                                else
                                {
                                    m_dtDonthuocChitiet.Rows.Add(row);
                                    AddtoView(row, _soluong);
                                    list2.Add(getNewItem(row));
                                }
                            }
                        }
                    }
                    if (errMsg != string.Empty)
                    {
                        if (errMsg.Contains("Single-Service:"))
                        {
                            Utility.ShowMsg(
                                "Thuốc sau được đánh dấu không được phép kê chung đơn bất kỳ Thuốc nào. Đề nghị bạn kiểm tra lại:\n" +
                                Utility.DoTrim(errMsg.Replace("Single-Service:", "")));
                        }
                        else
                        {
                            Utility.ShowMsg(
                                "Các cặp Thuốc sau đã được thiết lập chống kê chung đơn. Đề nghị bạn kiểm tra lại:\n" +
                                errMsg);
                        }
                    }
                    else
                    {
                        //PerformAction(list2.ToArray());
                        // Utility.GotoNewRowJanus(grdPresDetail, KcbDonthuocChitiet.Columns.IdThuoc, Utility.sDbnull(_row.Cells["id_thuoc"].Value, -1));
                    }
                }
            }
            catch (Exception ex)
            {
                Utility.ShowMsg("Lỗi:" + ex.Message);
            }
            finally
            {
                log.Trace(
                    "KẾT THÚC THÊM CHI TIẾT THUỐC.......................................................................................");
            }
        }