public ActionResult Procedures(TempProceedures procedures)
        {
            int userId           = (int)Session["UserId"];
            var successfulBilled = new List <int>();

            if (1 == 1)
            {
                foreach (var pro in procedures.tempProcedure)
                {
                    pro.DepartmentId = db.Services.Find(pro.ServiceId).DepartmentId;

                    var billServiceData = new BillServiceData()
                    {
                        OPDNo        = procedures.OPDNo,
                        DepartmentId = pro.DepartmentId,
                        ServiceId    = pro.ServiceId,
                        Quantity     = pro.Quantity,
                    };

                    var res = new Caresoft2._0.Controllers.RegistrationController().AddItemToBill(billServiceData, userId);
                    if (res > 1)
                    {
                        successfulBilled.Add(billServiceData.ServiceId);
                    }
                }

                return(Json(successfulBilled, JsonRequestBehavior.AllowGet));
            }

            return(Json("", JsonRequestBehavior.AllowGet));
        }
예제 #2
0
        public int AddItemToBill(BillServiceData data, int UserId)
        {
            BillService billService = new BillService();
            var         service     = db.Services.Find(data.ServiceId);
            var         OPDEntry    = db.OpdRegisters.Find(data.OPDNo);

            DateTime dob = ((DateTime)db.OpdRegisters.Find(data.OPDNo).Patient.DOB);

            DateTime today = DateTime.Today;

            int months = today.Month - dob.Month;
            int years  = today.Year - dob.Year;


            if ((years <= 5 && service.IsUnder5))
            {
                billService.Paid = true;

                //Insert In waiver
                var waiver = new Waiver()
                {
                    OPDIPDNo        = data.OPDNo,
                    AmountWaived    = service.CashPrice,
                    ReasonForWaiver = "under 5 automatic waiver",
                    WaiverNote      = "",
                    UserId          = UserId,
                    BranchId        = 1,
                    DateAdded       = DateTime.Now
                };

                //if (Session["UserBranchId"] != null)
                //{
                //    //waiver.BranchId = (int)Session["UserBranchId"];
                //}
                var _waiver = db.Waivers.Add(waiver);
                db.SaveChanges();


                billService.WaivedAmount = service.CashPrice * data.Quantity;
                billService.WaiverNo     = waiver.Id;
            }

            billService.OPDNo        = data.OPDNo;
            billService.DepartmentId = service.DepartmentId;
            billService.SeviceId     = data.ServiceId;
            billService.ServiceName  = service.ServiceName;
            billService.Price        = service.CashPrice;

            var OPD = db.OpdRegisters.Find(data.OPDNo);

            if (OPD.Tariff.Company.CompanyName.ToLower() != "cash")
            {
                var Iprice = db.InsurancePrices.FirstOrDefault(e => e.CompanyId == OPD.Tariff.CompanyId &&
                                                               e.ServicesPrice.ServiceId == data.ServiceId);

                if (Iprice != null)
                {
                    billService.Price = Iprice.Price;
                }
            }

            billService.TariffId        = OPDEntry.TariffId;
            billService.Award           = data.AwardAmount;
            billService.DoctorFee       = 0.0;
            billService.Quatity         = data.Quantity;
            billService.WorkOrderTestId = data.WorkOrderTestId;
            if (data.Quantity == 0)
            {
                billService.Quatity = 1;
            }


            billService.DateAdded = DateTime.Now;
            billService.UserId    = UserId;

            var User = db.Users.FirstOrDefault(e => e.Id.Equals(UserId));

            billService.BranchId = User?.Employee?.BranchId ?? 1;

            if (data.View != null && data.View.ToLower() == "provisionalbillservices")
            {
                if (OPDEntry.Patient.OpdRegisters.Any(e => e.BillServices.Any(f => f.Service.
                                                                              Department.DepartmentName.ToLower().Contains("clinic"))))
                {
                    var ExemptConsultationForClinics = db.KeyValuePairs.FirstOrDefault(e => e.Key_.Equals("ExemptConsultationForClinics"));

                    if (ExemptConsultationForClinics == null)
                    {
                        db.KeyValuePairs.Add(new KeyValuePair()
                        {
                            Key_  = "ExemptConsultationForClinics",
                            Value = "No",
                            Owner = "Dev"
                        });
                    }

                    var ExemptConsultationForClinics2 = db.KeyValuePairs.FirstOrDefault(e => e.Key_.Equals("ExemptConsultationForClinics"));

                    if (ExemptConsultationForClinics2 != null && ExemptConsultationForClinics2.Value == "Yes")
                    {
                        var opd          = db.OpdRegisters.Find(data.OPDNo);
                        var billtoExempt = opd.BillServices.FirstOrDefault(e => e.Service.ServiceName.Contains("Consultation"));

                        if (billtoExempt != null)
                        {
                            billtoExempt.Paid  = true;
                            billtoExempt.Price = 0;
                        }
                    }
                }
            }

            db.BillServices.Add(billService);
            db.SaveChanges();
            if (billService.OpdRegister.Tariff.Company.CompanyName.ToLower().Trim() == "exemption")
            {
                hs.AttemptMarkPaid(billService.Id, 0);
            }
            if (OPDEntry.Tariff.TariffName.ToLower().Trim() != "cash")
            {
                hs.ApplyAward(billService.Id);
            }

            if (hs.ExemptUnderFive() && hs.IsUnderFive(billService.OpdRegister.PatientId))
            {
                if (billService.Service.IsUnder5)
                {
                    hs.AutoWaiver(billService.Id, "under 5 automatic waiver");
                }
            }



            return(billService.Id);
        }
예제 #3
0
        public ActionResult EnterBillService(BillServiceData data)
        {
            var OPDEntry = db.OpdRegisters.Find(data.OPDNo);

            var billserviceId = AddItemToBill(data, (int)Session["UserId"]);

            if (billserviceId < 1)
            {
                return(Json(new { message = "Unable to add bill item " + data.ServiceId }));
            }

            if (data.View == "ProcedureForm")
            {
                return(RedirectToAction("ProcedureForm", "emr", new { id = data.OPDNo, selectedDepartment = data.DepartmentId }));
            }
            else

            if (data.View == "BillingForm")
            {
                var loggedInUser = db.Users.Find(Session["UserId"]);
                if (loggedInUser.UserRole.RoleName.ToLower().Equals("billadjuster") ||
                    loggedInUser.UserRole.RoleName.ToLower().Equals("sa"))
                {
                    ViewBag.CanAdjust = true;
                }


                if (!OPDEntry.IsIPD)
                {
                    var ser = db.Services.Find(data.ServiceId);
                    if (ser.IsLAB || ser.IsXRAY)
                    {
                        var investigationFormData = AddWorkOrderTest(OPDEntry, data.ServiceId, billserviceId);
                        var bservice = db.BillServices.Find(billserviceId);
                        var wotid    = investigationFormData.TestBillServices
                                       .FirstOrDefault(e => e.Service.Id == ser.Id).WorkOrderTestId;
                        db.SaveChanges();

                        hs.AttemptMarkPaid(bservice.Id, wotid);
                    }
                }

                OPDBillingFormData formData = new OPDBillingFormData();
                formData.OpdRegister   = db.OpdRegisters.Find(data.OPDNo);
                formData.Patient       = formData.OpdRegister.Patient;
                formData.ServiceGroups = db.ServiceGroups.ToList();
                formData.Drugs         = formData.OpdRegister.Medications.ToList();
                formData.BillServices  = db.BillServices.Where(e => e.OPDNo == data.OPDNo)
                                         .OrderBy(e => e.Id)
                                         .OrderByDescending(e => e.Service.DepartmentId).ToList();
                var myWallet = db.EWallets.Where(e => e.PatientId == formData.Patient.Id).ToList();

                ViewBag.EwalletBalance = (myWallet.Where(e => e.Direction == 1).Sum(e => e.AmountTransacted)
                                          - myWallet.Where(e => e.Direction == 0).Sum(e => e.AmountTransacted));

                return(PartialView("~/Views/Billing/BillingForm.cshtml", formData));
            }
            else if (data.View.ToLower() == "investigationform")
            {
                var investigationFormData = AddWorkOrderTest(OPDEntry, data.ServiceId, billserviceId);



                return(PartialView("~/Views/EMR/InvestigationForm.cshtml", investigationFormData));
            }

            var myBillServices = db.BillServices.Where(e => e.OPDNo.Equals(data.OPDNo)).ToList();

            return(PartialView(data.View, myBillServices));
        }