private List <PatientsHappinessChangeViewModel> GetPatientsHappinessChanges()
        {
            IList <HappinessChangeDto> data = patientRepository.GetHappinessChangeData();

            return((from dto in data
                    let demog = dfdRepository.GetFormDataByFormId(dto.DemographicFormId)
                                let happiness1 = hfdRepository.GetFormDataByFormId(dto.HappinessDay1FormId).HappinessLevel
                                                 let happiness10 = hfdRepository.GetFormDataByFormId(dto.HappinessDay10FormId).HappinessLevel
                                                                   where !String.IsNullOrEmpty(happiness1.Value) && !String.IsNullOrEmpty(happiness10.Value)
                                                                   select new PatientsHappinessChangeViewModel {
                ClinicId = dto.ClinicId,
                ClinicName = dto.ClinicName,
                DoctorId = dto.DoctorId,
                DoctorName = dto.DoctorName,
                PatientId = dto.PatientId,
                PatientNumber = dto.PatientNumber,
                Gender = (demog != null) ? EnumHelper.GetDescription <Gender>(demog.Sex.Value) : "Unknown",
                Race = (demog != null) ? EnumHelper.GetDescription <Race>(demog.Race.Value) : "Unknown",
                HappinessChange = (decimal.Parse(happiness10.Value) - decimal.Parse(happiness1.Value))
                                  / 100
            }).ToList());
        }
        public void PopulateDay1Visit(Visit day1Visit, Visit baselineVisit)
        {
            //happiness form
            int dice;

            dice = randomGenerator.Next(100);
            if (dice < FormIsFilledChance)
            {
                var happinessForm = day1Visit.Forms.First(f => f.FormType == FormType.Happiness);
                happinessForm.FormState = FormState.Completed;
                var happinessFormData = happinessFormDataRepository.GetFormDataByFormId(happinessForm.Id);
                int happinessLevel;
                dice = randomGenerator.Next(100);
                if (dice < 5)
                {
                    happinessLevel = 0;
                }
                else if (dice < 25)
                {
                    happinessLevel = 25;
                }
                else if (dice < 90)
                {
                    happinessLevel = 50;
                }
                else if (dice < 98)
                {
                    happinessLevel = 75;
                }
                else
                {
                    happinessLevel = 100;
                }
                happinessFormData.HappinessLevel.Value = happinessLevel.ToString();
            }
            //electrocardiogram form
            dice = randomGenerator.Next(100);
            if (dice < FormIsFilledChance)
            {
                var electrocardiogramForm = day1Visit.Forms.First(f => f.FormType == FormType.Electrocardiogram);
                electrocardiogramForm.FormState = FormState.Completed;
                var electrocardiogramFormData = electrocardiogramFormDataRepository.GetFormDataByFormId(electrocardiogramForm.Id);
                electrocardiogramFormData.ElectrocardiogramAttachment.File = new Attachment {
                    FileName        = string.Format("{0}_cardiogramm.png", day1Visit.Patient.Caption),
                    FileSize        = 0,
                    Id              = electrocardiogramForm.Id,
                    MimeType        = "image/png",
                    StorageFileName = "ecg1.png"
                };
                attachmentRepository.Add(electrocardiogramFormData.ElectrocardiogramAttachment.File);
            }
            //vitals form

            dice = randomGenerator.Next(100);
            if (dice < FormIsFilledChance)
            {
                var vitalsOriginalForm = baselineVisit.Forms.First(f => f.FormType == FormType.Vitals);
                if (vitalsOriginalForm.FormState == FormState.Completed)
                {
                    var vitalsOriginalFormData = vitalsFormDataRepository.GetFormDataByFormId(vitalsOriginalForm.Id);

                    var vitalsForm = day1Visit.Forms.First(f => f.FormType == FormType.Vitals);
                    vitalsForm.FormState = FormState.Completed;
                    var vitalsFormData = vitalsFormDataRepository.GetFormDataByFormId(vitalsForm.Id);


                    vitalsFormData.ActualTime.Value = day1Visit.VisitTime.Value.AddMinutes(randomGenerator.Next(18) * 10).ToString();


                    FillVitalsBasedOnPreviousVisit(vitalsOriginalFormData, vitalsFormData, vitalsForm);
                }
            }
        }