示例#1
0
        public void CreateStudyDB(Study study, Inclusioncriteria inclusioncriteria)
        {
            //Adds the study to the database and saves
            _context.Study.Add(study);
            _context.SaveChanges();


            //Retrieves the id from the study just saved and sets the study_id in inclusioncriteria.
            var dbStudy = (_context.Study.FirstOrDefault(stud =>
                                                         stud.Name == study.Name && stud.DateCreated == study.DateCreated)) ??
                          _context.Study.Local.FirstOrDefault(stud =>
                                                              stud.Name == study.Name && stud.DateCreated == study.DateCreated);

            inclusioncriteria.IdStudy = dbStudy.IdStudy;

            //Sets the direct study link with the generated ID
            if (dbStudy != null)
            {
                //Todo OBS!!! Direct Study link currently hardcoded - fix or rewrite when published.
                dbStudy.DirectStudyLink = "http://localhost:61728/ViewStudy/ViewStudy?studyID=" + dbStudy.IdStudy;
                _context.Study.Update(dbStudy);
            }

            //Saves the inclusioncriteria and the study link
            _context.Inclusioncriteria.Add(inclusioncriteria);
            _context.SaveChanges();
        }
示例#2
0
        public void EditStudyDB(Study study, Inclusioncriteria inclusioncriteria)
        {
            Study oldStudy = _context.Study.FirstOrDefault(stud => stud.IdStudy == study.IdStudy);

            if (oldStudy != null)
            {
                oldStudy.Name                    = study.Name;
                oldStudy.Description             = study.Description;
                oldStudy.Abstract                = study.Abstract;
                oldStudy.Duration                = study.Duration;
                oldStudy.EligibilityRequirements = study.EligibilityRequirements;
                oldStudy.Inclusioncriteria       = study.Inclusioncriteria;
                oldStudy.Isdraft                 = study.Isdraft;
                oldStudy.Pay         = study.Pay;
                oldStudy.Preparation = study.Preparation;
                oldStudy.Location    = study.Location;
                _context.Study.Update(oldStudy);
                _context.SaveChanges();
            }

            Inclusioncriteria oldInc = _context.Inclusioncriteria.FirstOrDefault(inc => inc.IdStudy == study.IdStudy);

            if (oldInc != null)
            {
                oldInc.Male    = inclusioncriteria.Male;
                oldInc.Female  = inclusioncriteria.Female;
                oldInc.English = inclusioncriteria.English;
                oldInc.MinAge  = inclusioncriteria.MinAge;
                oldInc.MaxAge  = inclusioncriteria.MaxAge;
                _context.Inclusioncriteria.Update(oldInc);
                _context.SaveChanges();
            }
        }
示例#3
0
        public Inclusioncriteria GetInclusioncriteriaDB(int id)
        {
            Inclusioncriteria incCrit = _context.Inclusioncriteria.FirstOrDefault(inc => inc.IdStudy == id);

            return(incCrit);
        }
        public List <Participant> GetAllEligibalParticipants(Inclusioncriteria criteria, int studyId)
        {
            List <Participant> participants = new List <Participant>();
            List <int>         PartIDs;

            if (_context.Study != null && _context.Inclusioncriteria != null && !(criteria.Male == false && criteria.Female == false))
            {
                if (criteria.English)
                {
                    //Sorterings-Algorithm!
                    PartIDs = _context.Participant.Where(part =>
                                                         //Sorts by age
                                                         GetAge(part.Age) > criteria.MinAge && GetAge(part.Age) < criteria.MaxAge &&
                                                         //Sorts by gender


                                                         (criteria.Male == part.Gender ||
                                                          criteria.Female != part.Gender) &&
                                                         //Sort by languge
                                                         part.English == criteria.English).ToList().Select(partID => partID.IdParticipant).ToList();
                }
                else
                {     //Sorterings-Algorithm!
                    PartIDs = _context.Participant.Where(part =>
                      //Sorts by age
                                                         GetAge(part.Age) > criteria.MinAge && GetAge(part.Age) < criteria.MaxAge &&
                      //Sorts by gender
                                                         (criteria.Male == part.Gender ||
                                                          criteria.Female != part.Gender)).ToList().Select(partID => partID.IdParticipant).ToList();
                }



                // Get all participant that are inrolled in this study
                List <int> EnrolledPartIDs = _context.Studyparticipant.Where(x => x.IdStudy == studyId)
                                             .Select(partID => partID.IdParticipant).ToList();
                foreach (var id in EnrolledPartIDs)
                {
                    try
                    {
                        PartIDs.Remove(id);
                    }
                    catch (Exception e)
                    {
                        throw;
                    }
                }

                //List of participants to return

                foreach (var id in PartIDs)
                {
                    participants.Add(_context.Participant.FirstOrDefault(parts => parts.IdParticipant == id));
                }
            }
            if (participants == null)
            {
                participants = new List <Participant>();
            }
            return(participants);
        }