public ActionResult Details(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            Patient patient = db.Patients.Find(id);
            if (patient == null)
            {
                return HttpNotFound();
            }

            var completeAttributes = new List<CompleteAttribute>();
            foreach (var i in db.PatientAttributes.ToList())
            {
                var patientAttribute = db.Patient_PatientAttributes.SingleOrDefault(j => j.PatientAttributeID == i.ID && j.PatientID == patient.ID);
                PatientAttributeValue selectedAttributeValue = null;
                if (patientAttribute != null)
                    selectedAttributeValue = db.PatientAttributeValues.Find(patientAttribute.PatientAttributeValueID);
                else
                    selectedAttributeValue = new PatientAttributeValue();
                var completeAttribute = new CompleteAttribute
                {
                    PatientAttribute = i,
                    PatientAttributeValues = i.PatientAttributeValues,
                    SelectedPatientAttributeValue = selectedAttributeValue
                };

                completeAttributes.Add(completeAttribute);
            }

            var patient_PatientAttributesList = db.Patient_PatientAttributes.Where(i => i.PatientID == patient.ID).ToList();
            var patientVM = new PatientViewModel()
            {
                Patient = patient,
                CompleteAttributes = completeAttributes
            };
            return View(patientVM);
        }
        public ActionResult Edit(CompleteAttribute completeAttribute)
        {
            var attribute = completeAttribute.PatientAttribute;

            foreach(var av in completeAttribute.PatientAttributeValues)
            {
                db.Entry(av).State = EntityState.Modified;
            }
            db.SaveChanges();
            if (ModelState.IsValid)
            {
                db.Entry(attribute).State = EntityState.Modified;
                db.SaveChanges();
                return RedirectToAction("Index");
            }
            return View(attribute);
        }
        public ActionResult Edit(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            PatientAttribute attribute = db.PatientAttributes.Find(id);
            if (attribute == null)
            {
                return HttpNotFound();
            }

            var attributeValues = db.PatientAttributeValues.Where(i => i.PatientAttributeID == attribute.ID).ToList();
            var completeAttribute = new CompleteAttribute
            {
                PatientAttribute = attribute,
                PatientAttributeValues = attributeValues
            };
            return View(completeAttribute);
        }
        public ActionResult Create()
        {
            var completeAttributes = new List<CompleteAttribute>();
            foreach(var a in db.PatientAttributes)
            {
                var attributeValues = a.PatientAttributeValues;

                if(!a.Numeric)
                    attributeValues.Add(new PatientAttributeValue { ID = 0, Value = "Select Attribute" });

                var completeAttribute = new CompleteAttribute
                {
                    PatientAttribute = a,
                    PatientAttributeValues = attributeValues,
                    SelectedPatientAttributeValue = new PatientAttributeValue()
                };
                completeAttributes.Add(completeAttribute);
            }

            var patientVM = new PatientViewModel()
            {
                Patient = new Patient(),
                CompleteAttributes = completeAttributes
            };
            return View(patientVM);
        }
        // GET: Patients/Edit/5
        public ActionResult Edit(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            Patient patient = db.Patients.Find(id);
            if (patient == null)
            {
                return HttpNotFound();
            }

            var completeAttributes = new List<CompleteAttribute>();
            var patientsAttributes = db.Patient_PatientAttributes.Where(i => i.PatientID == patient.ID).ToList();
            var patientAttributes = db.PatientAttributes.ToList();
            foreach(var a in patientAttributes)
            {
                var attributeValues = a.PatientAttributeValues;
                var selectedAttribute = db.Patient_PatientAttributes.SingleOrDefault(i => i.PatientAttributeID == a.ID && i.PatientID == patient.ID);
                PatientAttributeValue selectedAttributeValue = null;
                if (selectedAttribute != null)
                {
                    selectedAttributeValue = selectedAttribute.PatientAttributeValue;
                }
                else
                {
                    selectedAttributeValue = new PatientAttributeValue { ID = 0, Value = "Please Select Attribute", PatientAttributeID = a.ID };
                    attributeValues.Add(new PatientAttributeValue { Value = "Please Select Attribute", ID = 0, PatientAttributeID = a.ID });
                }
                var completeAttribute = new CompleteAttribute
                {
                    PatientAttribute = a,
                    PatientAttributeValues = attributeValues,
                    SelectedPatientAttributeValue = selectedAttributeValue
                };
                completeAttributes.Add(completeAttribute);
            }

            var patientVM = new PatientViewModel
            {
                Patient = patient,
                CompleteAttributes = completeAttributes
            };
            return View(patientVM);
        }