public IHttpActionResult PutOpdRegister(int id, OpdRegister opdRegister)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != opdRegister.Id)
            {
                return(BadRequest());
            }

            db.Entry(opdRegister).State = EntityState.Modified;

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!OpdRegisterExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
Пример #2
0
        public InvestigationFormData AddWorkOrderTest(OpdRegister OPDEntry, int serviceId, int billserviceId)
        {
            InvestigationFormData investigationFormData = new InvestigationFormData();

            investigationFormData.TestBillServices = db.BillServices.Where(e => e.OPDNo == OPDEntry.Id &&
                                                                           (e.Service.IsLAB || e.Service.IsXRAY)).ToList();
            investigationFormData.Patient     = OPDEntry.Patient;
            investigationFormData.OpdRegister = OPDEntry;

            var dep = db.Departments.FirstOrDefault(e => e.DepartmentName.ToLower().Trim().Equals("lab") ||
                                                    e.DepartmentName.ToLower().Trim().Equals("pathology")).Id;

            CareSoftLabsEntities labDb = new CareSoftLabsEntities();
            var workOrder = labDb.WorkOrders.FirstOrDefault(e => e.OPDNo == OPDEntry.Id);

            if (workOrder == null)
            {
                //start new work order
                workOrder         = new WorkOrder();
                workOrder.OPDNo   = OPDEntry.Id;
                workOrder.OPDType = "OPD";
                if (OPDEntry.IsIPD)
                {
                    workOrder.OPDType = "IPD";
                }
                workOrder.BillPaid          = 1;
                workOrder.Doctor            = (int)Session["UserId"];
                workOrder.CreatedUtc        = DateTime.Now;
                workOrder.DepartmentRadPath = dep;
                workOrder.Accession_Status  = labDb.Status.FirstOrDefault(e => e.StatusValue.ToLower().Trim().Equals("default")).Id;
                labDb.WorkOrders.Add(workOrder);

                labDb.SaveChanges();
            }

            //add work order tests
            WorkOrderTest test = new WorkOrderTest();

            test.WorkOrder  = workOrder.Id;
            test.Test       = (int)db.Services.Find(serviceId).LabId;
            test.BillPaid   = false;
            test.Status     = labDb.Status.FirstOrDefault(e => e.StatusValue.ToLower().Trim().Equals("default")).Id;
            test.CreatedUtc = DateTime.Now;

            labDb.WorkOrderTests.Add(test);
            labDb.SaveChanges();

            var ser = db.BillServices.Find(billserviceId);

            ser.WorkOrderTestId = test.Id;
            db.SaveChanges();

            hs.AttemptMarkPaid(billserviceId, 0);
            return(investigationFormData);
        }
        public IHttpActionResult GetOpdRegister(int id)
        {
            OpdRegister opdRegister = db.OpdRegisters.Find(id);

            if (opdRegister == null)
            {
                return(NotFound());
            }

            return(Ok(opdRegister));
        }
        public IHttpActionResult DeleteOpdRegister(int id)
        {
            OpdRegister opdRegister = db.OpdRegisters.Find(id);

            if (opdRegister == null)
            {
                return(NotFound());
            }

            db.OpdRegisters.Remove(opdRegister);
            db.SaveChanges();

            return(Ok(opdRegister));
        }
Пример #5
0
        public JsonResult AdmitPatient(OpdRegister register, string autoBedAndAdmission = "false", string type = "Cash")
        {
            var myActiveAdmissions = db.OpdRegisters.Where(e => e.PatientId == register.PatientId && e.IsIPD && !e.Discharged).ToList();

            var IPDNo = 0;

            if (myActiveAdmissions.Count() < 1)
            {
                register.IsIPD = true;

                register.BranchId  = (int)Session["UserBranchId"];
                register.TimeAdded = DateTime.Now;
                register.Status    = "Active";
                register.Date      = (DateTime)register.AdmissionDate;
                //TODO changeUesrname to int
                register.Username = int.Parse(Session["UserId"].ToString());
                db.OpdRegisters.Add(register);
                db.SaveChanges();
                IPDNo = register.Id;
                if (autoBedAndAdmission == "true")
                {
                    var billItem      = new BillService();
                    var ipdDepartment = db.Departments.FirstOrDefault(e => e.DepartmentName.Trim().ToLower().Equals("ipd"));
                    if (ipdDepartment == null)
                    {
                        ipdDepartment = new Department();
                        ipdDepartment.DepartmentName = "IPD";
                        ipdDepartment.DepartmentType = 2;
                        ipdDepartment.IsMedical      = "No";
                        ipdDepartment.DateAdded      = DateTime.Now;
                        db.Departments.Add(ipdDepartment);
                        db.SaveChanges();
                    }


                    billItem.DepartmentId = ipdDepartment.Id;
                    var admissionService = db.Services.FirstOrDefault(e => e.ServiceName.Trim().ToLower().Contains("admission"));
                    if (admissionService == null)
                    {
                        admissionService                = new Service();
                        admissionService.ServiceName    = "Admission";
                        admissionService.BranchId       = (int)Session["UserBranchId"];
                        admissionService.CashPrice      = 800;
                        admissionService.IsIPD          = true;
                        admissionService.DepartmentId   = billItem.DepartmentId;
                        admissionService.DateAdded      = DateTime.Now;
                        admissionService.ServiceGroupId = db.ServiceGroups.FirstOrDefault(e => e.ServiceGroupName.ToLower().Trim() == "procedure").Id;
                        admissionService.UserId         = int.Parse(Session["UserId"].ToString());

                        db.Services.Add(admissionService);
                        db.SaveChanges();
                    }
                    billItem.SeviceId    = admissionService.Id;
                    billItem.ServiceName = admissionService.ServiceName;

                    billItem.OPDNo = register.Id;
                    var bed     = db.HSBeds.Find(register.BedId);
                    var pricing = db.WardTypeCharges.FirstOrDefault(e => e.ServiceId.Equals(admissionService.Id) &&
                                                                    e.WardCategoryId.Equals(bed.HSWard.CategoryId));
                    if (pricing != null)
                    {
                        billItem.Price = pricing.Price;
                    }
                    else
                    {
                        billItem.Price = admissionService.CashPrice;
                    }

                    billItem.Quatity = 1;
                    var PayableAmount = billItem.Quatity * billItem.Price;

                    billItem.TariffId = register.TariffId;

                    var awardentry = db.ServicesPrices.FirstOrDefault(e => e.TariffId.Equals(register.TariffId) &&
                                                                      e.ServiceId.Equals(admissionService.Id));
                    billItem.Award     = 0;
                    billItem.DoctorFee = 0;
                    if (awardentry != null)
                    {
                        billItem.Award = awardentry.Award * billItem.Quatity;
                        if (awardentry.AwardUnit.ToLower().Trim().Equals("percent"))
                        {
                            billItem.Award = PayableAmount * (1 + awardentry.Award / 100);
                        }
                    }
                    PayableAmount      = PayableAmount - billItem.Award;
                    billItem.Paid      = false;
                    billItem.Offered   = true;
                    billItem.UserId    = (int)Session["UserId"];
                    billItem.BranchId  = (int)Session["UserBranchId"];
                    billItem.IsNurse   = false;
                    billItem.DateAdded = DateTime.Now;
                    db.BillServices.Add(billItem);
                    db.SaveChanges();

                    AddBedCharges(register.Id);
                }
            }

            var res = new CustRes()
            {
                Type  = "Cash",
                IPDNo = IPDNo
            };

            if (type == "Insurance")
            {
                res = new CustRes()
                {
                    Type  = "Insurance",
                    IPDNo = IPDNo
                };
            }
            else if (type == "Corporate")
            {
                res = new CustRes()
                {
                    Type  = "Corporate",
                    IPDNo = IPDNo
                };
            }
            else
            {
            }
            return(Json(res));

            //return RedirectToAction("BedsGrid", new { id = db.HSBeds.Find(register.BedId).HSWard.HSWardCategory.Id });
        }
Пример #6
0
        public ActionResult OPDRegistration(int?id, string QueueType = "OPD", string mode = "New")
        {
            if (id != null)
            {
                var opdRegg = db.Patients.FirstOrDefault(e => e.Id == id)?.OpdRegisters?.OrderByDescending(e => e.Id)?
                              .FirstOrDefault(e => !e.Status.Equals("draft"));

                if (opdRegg != null)
                {
                    ViewBag.LastRegistationDate = opdRegg.TimeAdded;
                }
                else
                {
                    ViewBag.LastRegistationDate = DateTime.Now;
                }
            }
            else
            {
                ViewBag.LastRegistationDate = DateTime.Now;
            }

            var data = new OPDModels();

            if (mode == "New")
            {
                data.Patient = db.Patients.Find(id);

                if (data.Patient.OpdRegisters.FirstOrDefault(
                        e => e.Date.Date == DateTime.Today && !(e.Status.ToLower().Trim().Equals("draft") || e.Status.ToLower().Trim().Equals("closed"))) != null)
                {
                    return(Json(new { status = "info", message = "This patient is already in todays queue!" }, JsonRequestBehavior.AllowGet));
                }
                var opdDraft = data.Patient.OpdRegisters.FirstOrDefault(e => e.Status.ToLower().Trim().Equals("draft"));
                if (opdDraft != null)
                {
                    data.OPDEntry = opdDraft;
                }
                else
                {
                    var entry = new OpdRegister();

                    entry.BranchId  = (int)Session["UserBranchId"];
                    entry.Date      = DateTime.Now;
                    entry.PatientId = data.Patient.Id;
                    entry.Status    = "draft";
                    entry.TimeAdded = DateTime.Now;
                    var tariffCash = db.Tariffs.FirstOrDefault(e => e.TariffName.ToLower().Trim().Equals("cash"));
                    if (tariffCash == null)
                    {
                        entry.TariffId = new Seeder().SeedCashAsATariff();
                    }
                    else
                    {
                        entry.TariffId = tariffCash.Id;
                    }
                    entry.Username = int.Parse(Session["UserId"].ToString());
                    db.OpdRegisters.Add(entry);
                    int res = db.SaveChanges();

                    if (res > 0)
                    {
                        new Utils.TurnAroundTime().insert(
                            new PatientTurnAroundTime()
                        {
                            OPDId           = entry.Id,
                            RequestTime     = DateTime.Now,
                            FullfilmentTime = null,
                            Department      = "billing",
                            SearvedByUserId = (int)Session["UserId"],
                            FacilityId      = 1,
                        }
                            );
                    }

                    data.OPDEntry = entry;

                    //enter consultation fee by default
                    var consultationService = db.KeyValuePairs.FirstOrDefault(e => e.Key_ == "default_consultation_service_name").Value;
                    var consultation        = db.Services.FirstOrDefault(e => e.ServiceName.Trim().ToLower().Equals(consultationService));
                    var billService         = new BillService();

                    billService.OPDNo        = entry.Id;
                    billService.DepartmentId = consultation.DepartmentId;
                    billService.SeviceId     = consultation.Id; billService.ServiceName = consultation.ServiceName;
                    billService.Price        = consultation.CashPrice; billService.Quatity = 1;
                    billService.Award        = 0; billService.DoctorFee = 0; billService.Paid = false;
                    billService.Offered      = false; billService.DateAdded = DateTime.Now;
                    billService.UserId       = int.Parse(Session["UserId"].ToString());
                    billService.BranchId     = (int)Session["UserBranchId"];
                    billService.IsNurse      = false;
                    db.BillServices.Add(billService);
                    db.SaveChanges();

                    if (hs.IsUnderFive(entry.PatientId) && hs.ExemptUnderFive())
                    {
                        hs.AutoWaiver(billService.Id, "under 5 automatic waiver");
                    }
                }
            }
            else if (mode == "Edit")
            {
                data.OPDEntry = db.OpdRegisters.Find(id);
                data.Patient  = data.OPDEntry.Patient;
            }
            ViewBag.Mode = mode;

            data.Doctors            = db.Employees.Where(e => e.Designation.DesignationName.Trim().ToLower().Equals("doctor")).ToList();
            data.RevenueDepartments = db.Departments.Where(e => e.DepartmentType1.DepartmnetType.ToLower().Trim().Equals("revenue")).ToList();
            //data.PatientCategories = db.Companies.ToList();
            data.MainCategories = db.CompanyTypes.ToList();
            data.Relationships  = db.Relationships.ToList();
            var defaultConsultationServiceName = db.KeyValuePairs.FirstOrDefault(e => e.Key_.ToLower().Trim().Equals("default_consultation_service_name")).Value;

            data.Consultation = db.Services.FirstOrDefault(e => e.ServiceName.ToLower().Trim().Equals(defaultConsultationServiceName));
            ViewBag.QueueType = QueueType;
            return(PartialView(data));
        }