public void PopulatePatientInfoAndDemographics(Patient patient, DemoPatientState patientState) { var isMale = PeopleDataProvider.IsMale(); var firstName = PeopleDataProvider.GetRandomFirstName(isMale); var lastName = PeopleDataProvider.GetRandomLastName(isMale); var initials = firstName.Substring(0, 1) + lastName.Substring(0, 1); initials = initials.ToUpperInvariant(); patient.PatientInitials = initials; if (patientState == DemoPatientState.NotEnrolled) return; int dice = randomGenerator.Next(100); if(dice < 97) patient.IsActive = true; //TODO: change per patient state patient.IsEnrolled = true; patient.EnrollDate = DateTime.Now.AddDays(- randomGenerator.Next(10)*(int) patientState); patient.RandomisationDate = patient.EnrollDate.Value.AddDays(randomGenerator.Next(0, 2)); patient.RandomisationNumber = randomGenerator.Next(10000); patient.IsCompleted = true; //Baseline visit var baselineVisit = patient.Visits.First(v => v.VisitType == VisitType.Baseline); baselineVisit.ExpectedVisitDate = patient.RandomisationDate; if (patientState >= DemoPatientState.BaselineOnly) SetRealVisitDateAndTime(baselineVisit); //Day 1 Visit var day1Day = patient.Visits.First(v => v.VisitType == VisitType.Day1); day1Day.ExpectedVisitDate = (baselineVisit.VisitDate ?? baselineVisit.ExpectedVisitDate).Value.AddDays(randomGenerator.Next(3)); if (patientState >= DemoPatientState.Day1Only) { SetRealVisitDateAndTime(day1Day); //Adverse Event section only for patients passed 1st day dice = randomGenerator.Next(100); if (dice > 85) AddAdverseEventVisit(patient); if (dice > 95) AddAdverseEventVisit(patient); } //Day 10 visit var day10Day = patient.Visits.First(v => v.VisitType == VisitType.Day10); day10Day.ExpectedVisitDate = (day1Day.VisitDate ?? day1Day.ExpectedVisitDate).Value.AddDays(10); if (patientState >= DemoPatientState.AllVisits) SetRealVisitDateAndTime(day10Day); PopulateBaselineVisit(baselineVisit, isMale); if (patientState == DemoPatientState.BaselineOnly) return; PopulateDay1Visit(day1Day, baselineVisit); if (patientState == DemoPatientState.Day1Only) return; PopulateDay10Visit(day10Day, day1Day); }
public void PopulatePatientInfoAndDemographics(Patient patient, DemoPatientState patientState) { var isMale = PeopleDataProvider.IsMale(); var firstName = PeopleDataProvider.GetRandomFirstName(isMale); var lastName = PeopleDataProvider.GetRandomLastName(isMale); var initials = firstName.Substring(0, 1) + lastName.Substring(0, 1); initials = initials.ToUpperInvariant(); patient.PatientInitials = initials; if (patientState == DemoPatientState.NotEnrolled) { return; } int dice = randomGenerator.Next(100); if (dice < 97) { patient.IsActive = true; } //TODO: change per patient state patient.IsEnrolled = true; patient.EnrollDate = DateTime.Now.AddDays(-randomGenerator.Next(10) * (int)patientState); patient.RandomisationDate = patient.EnrollDate.Value.AddDays(randomGenerator.Next(0, 2)); patient.RandomisationNumber = randomGenerator.Next(10000); patient.IsCompleted = true; //Baseline visit var baselineVisit = patient.Visits.First(v => v.VisitType == VisitType.Baseline); baselineVisit.ExpectedVisitDate = patient.RandomisationDate; if (patientState >= DemoPatientState.BaselineOnly) { SetRealVisitDateAndTime(baselineVisit); } //Day 1 Visit var day1Day = patient.Visits.First(v => v.VisitType == VisitType.Day1); day1Day.ExpectedVisitDate = (baselineVisit.VisitDate ?? baselineVisit.ExpectedVisitDate).Value.AddDays(randomGenerator.Next(3)); if (patientState >= DemoPatientState.Day1Only) { SetRealVisitDateAndTime(day1Day); //Adverse Event section only for patients passed 1st day dice = randomGenerator.Next(100); if (dice > 85) { AddAdverseEventVisit(patient); } if (dice > 95) { AddAdverseEventVisit(patient); } } //Day 10 visit var day10Day = patient.Visits.First(v => v.VisitType == VisitType.Day10); day10Day.ExpectedVisitDate = (day1Day.VisitDate ?? day1Day.ExpectedVisitDate).Value.AddDays(10); if (patientState >= DemoPatientState.AllVisits) { SetRealVisitDateAndTime(day10Day); } PopulateBaselineVisit(baselineVisit, isMale); if (patientState == DemoPatientState.BaselineOnly) { return; } PopulateDay1Visit(day1Day, baselineVisit); if (patientState == DemoPatientState.Day1Only) { return; } PopulateDay10Visit(day10Day, day1Day); }