public int Register(TheatrePatientBioData theatrePatientBio)
        {
            if (ModelState.IsValid)
            {
                theatrePatientBio.CreatedUTC = DateTime.Now;

                if (theatrePatientBio.Id != null && theatrePatientBio.Id > 0)
                {
                    var pat = db.TheatrePatientBioDatas.FirstOrDefault(e => e.PatientOPDIPD == theatrePatientBio.PatientOPDIPD);
                    pat.HIV             = theatrePatientBio.HIV;
                    pat.DepartmentId    = theatrePatientBio.DepartmentId;
                    pat.AppointmentDate = theatrePatientBio.AppointmentDate;
                    pat.RegStatus       = theatrePatientBio.RegStatus;
                    pat.UserId          = (int)Session["UserId"];

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

                    db.SaveChanges();
                    return(pat.Id);
                }
                else
                {
                    theatrePatientBio.UserId = (int)Session["UserId"];
                    db.TheatrePatientBioDatas.Add(theatrePatientBio);
                }

                db.SaveChanges();
                return(theatrePatientBio.Id);
            }

            return(0);
        }
        public ActionResult Register(int?id)
        {
            ViewBag.TheatreDesignations = db.TheatreDesignations.ToList();
            ViewBag.TheatreDepartment   = db.TheatreDepartments.ToList();

            if (ViewBag.TheatreDesignations.Count == 0)
            {
                db.TheatreDesignations.Add(
                    new TheatreDesignation()
                {
                    DesignationName = "Surgeon",
                });
                db.TheatreDesignations.Add(
                    new TheatreDesignation()
                {
                    DesignationName = "Ass Surgeon",
                });

                db.TheatreDesignations.Add(
                    new TheatreDesignation()
                {
                    DesignationName = "Scrub Nurse",
                });

                db.TheatreDesignations.Add(
                    new TheatreDesignation()
                {
                    DesignationName = "Anaesthesist",
                });
                db.SaveChanges();
            }

            if (ViewBag.TheatreDepartment.Count == 0)
            {
                db.TheatreDepartments.Add(
                    new TheatreDepartment()
                {
                    DepartmentName = "General"
                });
                db.SaveChanges();
            }

            if (db.TheatrePatientBioDatas.Any(e => e.PatientOPDIPD == id))
            {
                ViewBag.Opd = id;

                return(PartialView(db.TheatrePatientBioDatas.FirstOrDefault(e => e.PatientOPDIPD == id)));
            }

            var opd  = db.OpdRegisters.Find(id);
            var docc = db.Employees.FirstOrDefault(e => (e.FName + " " + e.OtherName) == opd.ConsultantDoctor);
            var doc  = 0;

            if (docc == null)
            {
                doc = 1;
            }
            else
            {
                doc = docc.Id;
            }
            var data = new TheatrePatientBioData()
            {
                PatientOPDIPD    = opd.Id,
                PatientName      = opd.Patient.FName + " " + opd.Patient.MName + " " + opd.Patient.LName,
                InternalRefferal = 0,
                HIV             = "",
                AppointmentDate = DateTime.Now,
                DepartmentId    = 0,
                CreatedUTC      = DateTime.Now
            };

            ViewBag.Opd = id;

            var referals = opd.PatientReferals.OrderByDescending(e => e.Id);

            ViewBag.InternalRefferal = "N/A";

            if (opd.PatientReferals.Any(e => e.ReferalType.Contains("Internal")) && referals.FirstOrDefault().DepartmentId == dep_Id)
            {
                try{
                    if (opd.PatientReferals.Count() > 1)
                    {
                        data.InternalRefferal    = (int)referals.Skip(1).FirstOrDefault().ReferedToId;
                        ViewBag.InternalRefferal = referals.Skip(1).FirstOrDefault().Department.DepartmentName;
                    }
                    else
                    {
                        data.InternalRefferal    = db.Departments.First(e => e.DepartmentName.Contains("OutPatient")).Id;
                        ViewBag.InternalRefferal = db.Departments.First(e => e.DepartmentName.Contains("OutPatient")).DepartmentName;
                    }
                }catch (Exception e)
                {
                }
            }

            return(PartialView(data));
        }