Beispiel #1
0
 public UnfinishedSearchManager(CommunicationProvider communicationProvider, UnfinishedSearchResultProcessor searchResultProcessor,
                                QueriesBuilderFactory queriesBuilderFactory, IOptions <IndicesOption> indicesOptions) : base(communicationProvider, indicesOptions)
 {
     m_searchResultProcessor = searchResultProcessor;
     m_queriesBuilder        = queriesBuilderFactory.Create(IndexType.Snapshot);
 }
Beispiel #2
0
        protected override void Seed(ClinicalStudyContext context)
        {
            var clinicCreator = new ClinicsBuilder();
            var clinics       = clinicCreator.GetClinics();


            UsersBuilder usersBuilder = new UsersBuilder();
            var          users        = usersBuilder.GetDemoUsers(clinics.FirstOrDefault());
            var          moreUsers    = usersBuilder.GetRandomDemoUsers(clinics);

            users = users.Concat(moreUsers).ToList();
            foreach (var user in users)
            {
                context.Users.Add(user);
            }
            var doctor = users.FirstOrDefault(u => u.Role == ClinicalStudyRoles.Doctor);


            //as any other entities are binded to Clinic, we do not need to add them explicitely
            //EF itself will take care about it
            foreach (var clinic in clinics)
            {
                context.Clinics.Add(clinic);
            }

            base.Seed(context);
            context.SaveChanges();

            IClinicalStudyContextFactory factory = new SingleContextFactory(context);
            PatientsBuilder patientsBuilder      = new PatientsBuilder(
                new DemographicFormDataRepository(factory),
                new VitalsFormDataRepository(factory),
                new AdverseEventFormDataRepository(factory),
                new ElectrocardiogramFormDataRepository(factory),
                new HappinessFormDataRepository(factory),
                new InventoryFormDataRepository(factory),
                new AttachmentRepository(factory),
                clinicalStudyDesign);



            List <DoctorWithRequiredPatients> doctorsToGeneratePatients = new List <DoctorWithRequiredPatients>();

            foreach (var user in users.Where(u => u.Role == ClinicalStudyRoles.Doctor))
            {
                doctorsToGeneratePatients.Add(new DoctorWithRequiredPatients()
                {
                    Doctor         = user,
                    PatientsNumber = user == doctor ? 6 : PeopleDataProvider.GetPatientForDoctorNumber()
                });
            }

            bool firstPatient       = true;
            int  firstPatientNumber = 25;

            for (int i = 0; i < doctorsToGeneratePatients.Max(d => d.PatientsNumber); i++)
            {
                foreach (var doctorWithRequiredPatient in doctorsToGeneratePatients)
                {
                    if (i < doctorWithRequiredPatient.PatientsNumber)
                    {
                        var patient = clinicalStudyDesign.CreatePatient(doctorWithRequiredPatient.Doctor);
                        if (firstPatient)
                        {
                            patient.PatientNumber = firstPatientNumber;
                            patient.Caption       = "Subj A0" + firstPatientNumber.ToString();
                            firstPatient          = false;
                        }
                        context.SaveChanges();
                        var demoPatientState = PeopleDataProvider.GetNewDemoPatientState();
                        patientsBuilder.PopulatePatientInfoAndDemographics(patient, demoPatientState);
                    }
                }
            }

            context.SaveChanges();

            QueriesBuilder builder = new QueriesBuilder {
                Patients = context.Patients.ToList(),
                AdverseEventFormDatas      = context.AdverseEventFormDatas.ToList(),
                DemographicFormDatas       = context.DemographicFormDatas.ToList(),
                ElectrocardiogramFormDatas = context.ElectrocardiogramFormDatas.ToList(),
                HappinessFormDatas         = context.HappinessFormDatas.ToList(),
                InventoryFormDatas         = context.InventoryFormDatas.ToList(),
                VitalsFormDatas            = context.VitalsFormDatas.ToList()
            };
            var queries = builder.BuildQueries(users.Single(u => u.Id == 2), users.Single(u => u.Id == 1));

            foreach (var query in queries)
            {
                context.Queries.Add(query);
            }
            context.SaveChanges();


            context.Timepoints.Add(
                new Timepoint()
            {
                DateAndTime = DateTime.Now, WasCorrectedAfterCreation = false
            });
            context.SaveChanges();
        }