Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            Console.Write("Имя пользователя SQL Server: ");
            string sqlUser = Console.ReadLine();

            Console.Write("Пароль SQL Server: ");
            string sqlPassword = Console.ReadLine();

            Console.Write("Имя пользователя MongoDB: ");
            string mongoUser = Console.ReadLine();

            Console.Write("Пароль MongoDB: ");
            string mongoPassword = Console.ReadLine();

            try
            {
                MongoConnection mongoConnection = new MongoConnection("ds229008.mlab.com", "29008", mongoUser, mongoPassword);
                mongoConnection.Connect();

                SqlConnection sqlConnection = new SqlConnection("ELISEY", /*"1433",*/ sqlUser, sqlPassword);
                sqlConnection.Connect();

                Console.Clear();

                #region Заполнение БД
                Doctor doctor = new Doctor("Иванова", "Людмила", "Ивановна", sqlConnection);
                doctor.Save(sqlConnection);

                doctor.SignUp("doctor", "hello", "hello");
                doctor.SignIn("doctor", "hello", sqlConnection);

                Patient patient = new Patient("Карапузов", "Иван", "Андреевич");
                patient.Save(sqlConnection);

                Problem problem = new Problem("Не могу больше держаться", new DateTime(2018, 4, 17), patient, doctor, sqlConnection);
                problem.Save();
                Console.WriteLine(problem);

                Complaint complaint1 = new Complaint("Мне больно", problem, sqlConnection);
                complaint1.Save();

                Complaint complaint2 = new Complaint("Очень", problem, sqlConnection);
                complaint2.Save();

                Diagnosis diagnosis = new Diagnosis("Простуда", problem, doctor, sqlConnection);
                diagnosis.Save();
                Console.WriteLine(diagnosis);

                Archetype pulse = new Archetype("Пульс");
                pulse.Save(sqlConnection);

                Archetype pressure = new Archetype("Давление");
                pressure.Save(sqlConnection);

                Console.WriteLine(pressure);

                Symptom symptom1 = new Symptom(diagnosis, pulse, "60", sqlConnection);
                symptom1.Save();

                Symptom symptom2 = new Symptom(diagnosis, pressure, "120/80", sqlConnection);
                symptom2.Save();

                Console.WriteLine(symptom1);
                Console.WriteLine(symptom2);

                Medicament medicament = new Medicament("Мезим");
                medicament.Save(sqlConnection);

                Medicament medicament2 = new Medicament("Терафлю");
                medicament2.Save(sqlConnection);

                Medicament medicament3 = new Medicament("Нурофен");
                medicament3.Save(sqlConnection);

                Prescription prescription = new Prescription(medicament, diagnosis, sqlConnection);
                prescription.Save();

                Prescription prescription2 = new Prescription(medicament2, diagnosis, sqlConnection);
                prescription2.Save();

                Prescription prescription3 = new Prescription(medicament3, diagnosis, sqlConnection);
                prescription3.Save();

                Console.WriteLine(prescription3);

                Article article1 = new Article("Повышенная вязкость крови – один из факторов развития кардиоваскулярных осложнений у больных с истинной полицитемией",
                                               "https://research-journal.org/medical/povyshennaya-vyazkost-krovi-odin-iz-faktorov-razvitiya-kardiovaskulyarnyx-oslozhnenij-u-bolnyx-s-istinnoj-policitemiej/",
                                               "Разнообразие клинических проявлений и высокий процент развития осложнений, отличающихся по характеру и тяжести, у больных эритремией продолжает создавать трудности как в лечении, так и в повышении качества жизни больных [6, С. 32]. Изменение реологических свойств и повышение вязкости крови, по результатам наших исследований, оказывают большее влияние на сердечно-сосудистую систему с развитием целого ряда синдромов и симптомов – гипертоническая болезнь, ишемическая болезнь сердца, симптоматическая артериальная гипертензия в 53,4% случаев. Возрастной пик заболеваемости, приходящий на пациентов среднего и пожилого возраста, делает их более уязвимыми в отношении развития тромботических осложнений. В рамках нашего исследования истинной полицитемии более подвержены мужчины  от 40 до 70 лет.",
                                               mongoConnection);
                Article article2 = new Article("Центральная гемодинамика, тиреоидный статус и дисфункции эндотелия у больных артериальной гипертонией в условиях высокогорья",
                                               "https://research-journal.org/medical/centralnaya-gemodinamika-tireoidnyj-status-i-disfunkcii-endoteliya-u-bolnyx-arterialnoj-gipertoniej-v-usloviyax-vysokogorya/",
                                               "Установлено, что снижение продукции NO с одновременным снижением концентрации тиреоидных гормонов вызывают нарушения интракардиальной гемодинамики, изменения структурно-функционального состояния ЛЖ и утяжеляют течение артериальной гипертонии.",
                                               mongoConnection);
                Article article3 = new Article("Сочетанные изменения экспрессии генов cstb и acap3 при симптоматической эпилепсии и болезни паркинсона",
                                               "https://research-journal.org/medical/sochetannye-izmeneniya-ekspressii-genov-cstb-i-acap3-pri-simptomaticheskoj-epilepsii-i-bolezni-parkinsona/",
                                               "Кроме того, у женщин наблюдалось снижение уровня мРНК гена CSTB при эпилепсии(примерно в 3 раза) и при болезни Паркинсона(примерно в 2.5 раза).Полученные данные указывают на возможное участие исследованных генов в патогенезе симптоматической эпилепсии и болезни Паркинсона.",
                                               mongoConnection);
                Tag tag1 = new Tag("Карапузов", mongoConnection);
                Tag tag2 = new Tag("Эритремия", mongoConnection);
                Tag tag3 = new Tag("Гипертония", mongoConnection);
                Tag tag4 = new Tag("Карапузовдержись", mongoConnection);

                article1.Save();
                article2.Save();
                article3.Save();

                tag1.Save();
                tag2.Save();
                tag3.Save();
                tag4.Save();

                Association association1 = new Association("Ассоциация с наибольшим количеством тегов", mongoConnection, sqlConnection);
                association1.Tags.AddRange(new Tag[]
                {
                    tag1,
                    tag2,
                    tag3
                });
                association1.Article = article1;
                association1.MedicineObjects.AddRange(new IEhrObject[]
                {
                    patient,
                    problem,
                    medicament2,
                    medicament3
                });
                association1.Save();

                Association association2 = new Association("Ассоциация про Карапузова", mongoConnection, sqlConnection);
                association2.Tags.AddRange(new Tag[]
                {
                    tag1,
                    tag3
                });
                association2.Article = article2;
                association2.MedicineObjects.AddRange(new IEhrObject[]
                {
                    patient,
                    medicament
                });
                association2.Save();

                Association association3 = new Association("Ассоциация с наименьшим количеством тегов", mongoConnection, sqlConnection);
                association3.Tags.AddRange(new Tag[]
                {
                    tag1,
                    tag4
                });
                association3.Article = article3;
                association3.MedicineObjects.AddRange(new IEhrObject[]
                {
                    medicament,
                    medicament3
                });
                association3.Save();
                #endregion

                #region Поиск по тегам
                Tag findTag1 = new Tag();
                Tag findTag2 = new Tag();
                Tag findTag3 = new Tag();
                Tag findTag4 = new Tag();
                Tag findTag5 = new Tag();

                try
                {
                    Console.Write("Введите тег: ");
                    findTag1.GetByContent(Console.ReadLine(), mongoConnection); //"Карапузов"
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }

                try
                {
                    Console.Write("Введите тег: ");
                    findTag2.GetByContent(Console.ReadLine(), mongoConnection); //"Эритремия"
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }

                try
                {
                    Console.Write("Введите тег: ");
                    findTag3.GetByContent(Console.ReadLine(), mongoConnection); //"Гипертония"
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }

                try
                {
                    Console.Write("Введите тег: ");
                    findTag4.GetByContent(Console.ReadLine(), mongoConnection); //"Грипп"
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                Console.WriteLine();

                Stopwatch stopwatch = new Stopwatch();
                stopwatch.Start();
                List <KeyValuePair <int, Association> > associations = Association.GetAssociationListByTag(new Tag[]
                {
                    findTag1,
                    findTag2,
                    findTag3,
                    findTag4
                }, sqlConnection, mongoConnection);
                stopwatch.Stop();

                foreach (KeyValuePair <int, Association> association in associations)
                {
                    Console.WriteLine(association.Value);
                    Console.WriteLine("Число совпадений: " + association.Key);
                    Console.WriteLine();
                }
                Console.WriteLine("Затрачено времени: " + stopwatch.Elapsed);
                #endregion
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            Console.ReadKey();
        }