Esempio n. 1
0
        private void Seed()
        {
            Users.Add(new User {
                Name = "admin", Login = "******", PasswordHash = HashUtils.GetStringHash("admin"), Role = Role.Admin
            });
            Users.Add(new User
            {
                Name         = "Ольга",
                Surname      = "Павлова",
                MiddleName   = "Степановна",
                PasswordHash = HashUtils.GetStringHash("password"),
                Job          = new Clinic
                {
                    Name    = "Республиканский научно-практический центр «Кардиология»",
                    Address = "Республика Беларусь, г. Минск, ул. Р. Люксембург, 110"
                },
                Position = "Заведующая лабораторией артериальной гипертонии, " +
                           "кандидат медицинских наук, доцент, " +
                           "высшая категория по специальности кардиология",
                Role  = Role.User,
                Login = "******"
            });

            //            var testPatient = new Patient
            //            {
            //                Name = "Юрий",
            //                MiddleName = "Валентинович",
            //                Surname = "Петрашевич",
            //                Nationality = "белорус",
            //                BirthPlace = "Беларусь, г. Минск",
            //                Phone = "+375171234567",
            //                Address = "Республика Беларусь, г. Минск, пр. Независимости 187-35",
            //                BirthDate = new DateTime( 1978, 11, 11 ),
            //                Gender = GenderType.Male,
            //                Genes =
            //                {
            //                    new Gene { Name = "AGT", Value = 2 },
            //                    new Gene { Name = "AGTR2", Value = 3 }
            //                },
            //                PatientVisitDataHistory =
            //                {
            //                    new PatientVisitData
            //                        {
            //                            WaistCircumference = 124,
            //                            Height = 182,
            //                            Weight = 120,
            //                            PhysicalActivity = PhysicalActivity.OncePerWeekOrLess,
            //                            SaltSensitivity = new SaltSensitivityTest
            //                            {
            //                                SaltSensitivity = 1,
            //                                TestDate = DateTime.Today
            //                            },
            //                            AlcoholСonsumption = AlcoholСonsumption.Monthly,
            //                            BloodPressure = new BloodPressure
            //                            {
            //                                LeftShoulderSBP = 157,
            //                                LeftShoulderDBP = 113,
            //                                RightShoulderSBP = 168,
            //                                RightShoulderDBP = 111,
            //                                HeartRate = 81
            //                            },
            //                            DepressionPointsCES_D = 37,
            //                            StressPointsPSM_25 = 141,
            //                            Smoking = new Smoking
            //                            {
            //                                Type = SmokingType.Now,
            //                                CigarettesPerDay = 20,
            //                                DurationInYears = 5
            //                            }
            //                        }
            //                },
            //                Clinic = new Clinic
            //                {
            //                    Address = "Республика Беларусь, г. Минск, ул. Ломоносова, д. 3",
            //                    Name = "13 городская поликлиника"
            //                },
            //                Diagnosis = "Первичная АГ",
            //                TreatmentDuration = 4,
            //                HypertensionDuration = 5,
            //                Medicine =
            //                {
            //                    new Medicine
            //                    {
            //                        Name = "Карведилол",
            //                        Dose = "25 мг"
            //                    },
            //                    new Medicine
            //                    {
            //                        Name = "Бисопролол",
            //                        Dose = "5 мг"
            //                    }
            //                },
            //                HypertensionAncestralAnamnesis = HypertensionAncestralAnamnesis.Father
            //
            //            };
            //            context.Patients.Add( testPatient );

            var patients = ReadPatients();

            var models = new List <ClassificationModel>
            {
                new ClassificationModel
                {
                    LimitPoints = new List <LimitPoint> {
                        new LimitPoint {
                            Point = 0.5
                        }
                    },
                    Name            = "TestModel",
                    FreeCoefficient = -1.193050,
                    OptimalCutOff   = 0.654,
                    Properties      = new List <ModelProperty>
                    {
                        new ModelProperty
                        {
                            Name    = "Age",
                            Entries = new List <ModelScaleEntry>
                            {
                                new ModelScaleEntry {
                                    LowerBound = 45, Value = 1
                                }
                            },
                            ModelCoefficient = 1.095915
                        },
                        new ModelProperty
                        {
                            Name             = "{PatientVisitData}.ObesityWaistCircumference",
                            Entries          = new List <ModelScaleEntry>(),
                            ModelCoefficient = 0.637895
                        },
                        new ModelProperty
                        {
                            Name             = "{PatientVisitData}.ObesityBMI",
                            Entries          = new List <ModelScaleEntry>(),
                            ModelCoefficient = 1.380139
                        },
                        new ModelProperty
                        {
                            Name             = "Gender",
                            Entries          = new List <ModelScaleEntry>(),
                            ModelCoefficient = 0.668418
                        },
                        new ModelProperty
                        {
                            Name             = "{PatientVisitData}.PhysicalActivity",
                            Entries          = new List <ModelScaleEntry>(),
                            ModelCoefficient = 0.668418
                        },
                        new ModelProperty
                        {
                            Name             = "AGT_AGTR2",
                            Entries          = new List <ModelScaleEntry>(),
                            ModelCoefficient = 0.423879
                        }
                    }
                },
                new ClassificationModel
                {
                    LimitPoints = new List <LimitPoint> {
                        new LimitPoint {
                            Point = 0.5
                        }
                    },
                    Name            = "TestModelNoGene",
                    FreeCoefficient = -0.819416,
                    OptimalCutOff   = 0.654,
                    Properties      = new List <ModelProperty>
                    {
                        new ModelProperty
                        {
                            Name    = "Age",
                            Entries = new List <ModelScaleEntry>
                            {
                                new ModelScaleEntry {
                                    LowerBound = 45, Value = 1
                                }
                            },
                            ModelCoefficient = 0.973776
                        },
                        new ModelProperty
                        {
                            Name             = "{PatientVisitData}.ObesityWaistCircumference",
                            Entries          = new List <ModelScaleEntry>(),
                            ModelCoefficient = 0.582647
                        },
                        new ModelProperty
                        {
                            Name             = "{PatientVisitData}.ObesityBMI",
                            Entries          = new List <ModelScaleEntry>(),
                            ModelCoefficient = 1.541386
                        },
                        new ModelProperty
                        {
                            Name             = "{PatientVisitData}.PhysicalActivity",
                            Entries          = new List <ModelScaleEntry>(),
                            ModelCoefficient = 0.708104
                        },
                        new ModelProperty
                        {
                            Name             = "{PatientVisitData}.Smoking.Type",
                            Entries          = new List <ModelScaleEntry>(),
                            ModelCoefficient = 0.423879
                        }
                    }
                }
            };

//            var optimalCutOffCalculator = new OptimalCutOffCalculator(new PatientPropertyProvider());
//
//            foreach (var model in models)
//            {
//                model.OptimalCutOff = optimalCutOffCalculator.CalculateOptimalCutOff(model, patients);
//            }

            ClassificationModels.AddRange(models);
            Patients.AddRange(patients);

            SaveChanges();
        }
        protected override void Seed(SqlDbContext context)
        {
            context.Users.Add(new User {
                Name = "admin", Login = "******", PasswordHash = HashUtils.GetStringHash("admin"), Role = Role.Admin
            });
            context.Users.Add(new User
            {
                Name         = "Ольга",
                Surname      = "Павлова",
                MiddleName   = "Степановна",
                PasswordHash = HashUtils.GetStringHash("password"),
                Job          = new Clinic
                {
                    Name    = "Республиканский научно-практический центр «Кардиология»",
                    Address = "Республика Беларусь, г. Минск, ул. Р. Люксембург, 110"
                },
                Position = "Заведующая лабораторией артериальной гипертонии,\n" +
                           "кандидат медицинских наук, доцент,\n" +
                           "высшая категория по специальности кардиология".Replace("\n",
                                                                                   Environment.NewLine),
                Role  = Role.Admin,
                Login = "******"
            });

            //            var testPatient = new Patient
            //            {
            //                Name = "Юрий",
            //                MiddleName = "Валентинович",
            //                Surname = "Петрашевич",
            //                Nationality = "белорус",
            //                BirthPlace = "Беларусь, г. Минск",
            //                Phone = "+375171234567",
            //                Address = "Республика Беларусь, г. Минск, пр. Независимости 187-35",
            //                BirthDate = new DateTime( 1978, 11, 11 ),
            //                Gender = GenderType.Male,
            //                Genes =
            //                {
            //                    new Gene { Name = "AGT", Value = 2 },
            //                    new Gene { Name = "AGTR2", Value = 3 }
            //                },
            //                PatientVisitDataHistory =
            //                {
            //                    new PatientVisitData
            //                        {
            //                            WaistCircumference = 124,
            //                            Height = 182,
            //                            Weight = 120,
            //                            PhysicalActivity = PhysicalActivity.OncePerWeekOrLess,
            //                            SaltSensitivity = new SaltSensitivityTest
            //                            {
            //                                SaltSensitivity = 1,
            //                                TestDate = DateTime.Today
            //                            },
            //                            AlcoholСonsumption = AlcoholСonsumption.Monthly,
            //                            BloodPressure = new BloodPressure
            //                            {
            //                                LeftShoulderSBP = 157,
            //                                LeftShoulderDBP = 113,
            //                                RightShoulderSBP = 168,
            //                                RightShoulderDBP = 111,
            //                                HeartRate = 81
            //                            },
            //                            DepressionPointsCES_D = 37,
            //                            StressPointsPSM_25 = 141,
            //                            Smoking = new Smoking
            //                            {
            //                                Type = SmokingType.Now,
            //                                CigarettesPerDay = 20,
            //                                DurationInYears = 5
            //                            }
            //                        }
            //                },
            //                Clinic = new Clinic
            //                {
            //                    Address = "Республика Беларусь, г. Минск, ул. Ломоносова, д. 3",
            //                    Name = "13 городская поликлиника"
            //                },
            //                Diagnosis = "Первичная АГ",
            //                TreatmentDuration = 4,
            //                HypertensionDuration = 5,
            //                Medicine =
            //                {
            //                    new Medicine
            //                    {
            //                        Name = "Карведилол",
            //                        Dose = "25 мг"
            //                    },
            //                    new Medicine
            //                    {
            //                        Name = "Бисопролол",
            //                        Dose = "5 мг"
            //                    }
            //                },
            //                HypertensionAncestralAnamnesis = HypertensionAncestralAnamnesis.Father
            //
            //            };
            //            context.Patients.Add( testPatient );

            var patients = ReadPatients();

            var models = new List <ClassificationModel>
            {
                new ClassificationModel
                {
                    LimitPoints = new List <LimitPoint> {
                        new LimitPoint {
                            Point = 0.5
                        }
                    },
                    OptimalCutOff = 0.654,
                    Name          = "Классификационная модель с генетическими данными. ",
                    Description   = "Переменные: возраст, пол, ИМТ, объём талии, наследственность сердечно-сосудистых заболеваний у близких родственников мужского пола младше 55, физическая активность, наличие мутации в генах AGT и AGTR2. \r\n" +
                                    "Построена на базе 601 опрошенных респондентов(точная формулировка - у Павловой).\r\n Оптимальный порог отсечения выбран так, чтобы правильность определения здоровых и больных пациентов была максимально одинакова.",

                    FreeCoefficient = -1.512651,
                    Properties      = new List <ModelProperty>
                    {
                        new ModelProperty
                        {
                            Name    = "Age",
                            Entries = new List <ModelScaleEntry>
                            {
                                new ModelScaleEntry {
                                    LowerBound = 45, Value = 1
                                }
                            },
                            ModelCoefficient = 1.092315
                        },
                        new ModelProperty
                        {
                            Name             = "{PatientVisitData}.ObesityWaistCircumference",
                            Entries          = new List <ModelScaleEntry>(),
                            ModelCoefficient = 0.694710
                        },
                        new ModelProperty
                        {
                            Name             = "{PatientVisitData}.ObesityBMI",
                            Entries          = new List <ModelScaleEntry>(),
                            ModelCoefficient = 1.430112
                        },
                        new ModelProperty
                        {
                            Name             = "Gender",
                            Entries          = new List <ModelScaleEntry>(),
                            ModelCoefficient = 0.705012
                        },
                        new ModelProperty
                        {
                            Name             = "{PatientVisitData}.PhysicalActivity",
                            Entries          = new List <ModelScaleEntry>(),
                            ModelCoefficient = 0.339633
                        },
                        new ModelProperty
                        {
                            Name             = "AGT_AGTR2",
                            Entries          = new List <ModelScaleEntry>(),
                            ModelCoefficient = 0.468786
                        },
                        new ModelProperty
                        {
                            Name             = "MaleHeredity",
                            Entries          = new List <ModelScaleEntry>(),
                            ModelCoefficient = 1.119191
                        }
                    }
                },
                new ClassificationModel
                {
                    LimitPoints = new List <LimitPoint> {
                        new LimitPoint {
                            Point = 0.5
                        }
                    },
                    OptimalCutOff = 0.654,
                    Name          = "Классификационная модель не требующая генетических данных.",
                    Description   = "Переменные: возраст, пол, ИМТ, объём талии, наследственность сердечно-сосудистых заболеваний у близких родственников мужского пола младше 55, физическая активность.\r\n" +
                                    "Построена на базе 601 опрошенных респондентов(точная формулировка - у Павловой).\r\n Оптимальный порог отсечения выбран так, чтобы правильность определения здоровых и больных пациентов была максимально одинакова.",
                    FreeCoefficient = -1.396398,
                    Properties      = new List <ModelProperty>
                    {
                        new ModelProperty
                        {
                            Name    = "Age",
                            Entries = new List <ModelScaleEntry>
                            {
                                new ModelScaleEntry {
                                    LowerBound = 45, Value = 1
                                }
                            },
                            ModelCoefficient = 0.997127
                        },
                        new ModelProperty
                        {
                            Name             = "{PatientVisitData}.ObesityWaistCircumference",
                            Entries          = new List <ModelScaleEntry>(),
                            ModelCoefficient = 0.742955
                        },
                        new ModelProperty
                        {
                            Name             = "{PatientVisitData}.ObesityBMI",
                            Entries          = new List <ModelScaleEntry>(),
                            ModelCoefficient = 1.433926
                        },
                        new ModelProperty
                        {
                            Name             = "{PatientVisitData}.PhysicalActivity",
                            Entries          = new List <ModelScaleEntry>(),
                            ModelCoefficient = 0.358464
                        },
                        new ModelProperty
                        {
                            Name             = "MaleHeredity",
                            Entries          = new List <ModelScaleEntry>(),
                            ModelCoefficient = 1.007333
                        },
                        new ModelProperty
                        {
                            Name             = "Gender",
                            Entries          = new List <ModelScaleEntry>(),
                            ModelCoefficient = 0.676926
                        }
                    }
                }
            };

//            var optimalCutOffCalculator = new OptimalCutOffCalculator(new PatientPropertyProvider());
//
//            foreach (var model in models)
//            {
//                model.OptimalCutOff = optimalCutOffCalculator.CalculateOptimalCutOff(model, patients);
//            }

            context.ClassificationModels.AddRange(models);
            context.Patients.AddRange(patients);


            context.SaveChanges();
        }