예제 #1
0
        private void FillHr(HealthRecord hr, DataTransfer.HrData.HrInfo hrInfo)
        {
            hrInfo.Chios.SyncAfterPaste(session);

            if (hrInfo.CategoryId != null)
            {
                using (var tr = session.BeginTransaction())
                {
                    hr.Category = session.Get <HrCategory>(hrInfo.CategoryId.Value);
                }
            }
            hr.FromDate.FillDateAndNowFrom(hrInfo.From);
            hr.ToDate.FillDateAndNowFrom(hrInfo.To);

            var unit = hrInfo.Unit;

            // если вставляем к пациенту без возраста
            if (hr.GetPatient().BirthYear == null && hrInfo.Unit == HealthRecordUnit.ByAge)
            {
                unit = HealthRecordUnit.NotSet;
            }

            hr.Unit = unit;
            hr.SetItems(hrInfo.Chios);
        }
예제 #2
0
        public void Hrs2Words()
        {
            var hr = new HealthRecord(a[1], d1);

            hr.SetItems(new[] { w[6], w[3] });
            Assert.IsTrue(w[6].HealthRecords.Contains(hr));
            Assert.IsTrue(hr.GetOrderedEntities().Contains(w[3]));

            hr.SetItems(new[] { w[6] });

            Assert.IsFalse(hr.GetOrderedEntities().Contains(w[3]));
            Assert.IsFalse(w[3].HealthRecords.Contains(hr));

            hr.OnDelete();
            session.Delete(hr);
            Assert.IsFalse(w[6].HealthRecords.Contains(hr));
        }
예제 #3
0
        public void UseWordRemoveVoc()
        {
            // при удалении остаются использованные слова
            l.LoadOrUpdateVocs(voc[1]);

            var hr = new HealthRecord(a[1], d1);
            var w  = voc[1].Words.First();

            hr.SetItems(new[] { w });
            session.SaveOrUpdate(hr);

            l.DeleteVocs(voc[1]);
            Assert.IsTrue(GetWordTitles().Contains(w.Title));
        }
예제 #4
0
        public void RemoveVoc()
        {
            AuthorityController.TryLogIn(d2);

            l.LoadOrUpdateVocs(voc[2]);

            // 2 слова только в словаре. используем одно из них
            var onlyVocWords = voc[2].Words.Where(x => x.Vocabularies.Count() == 1).ToList();

            Assert.IsTrue(onlyVocWords.Count > 1);
            Assert.IsTrue(onlyVocWords.All(x => x.HealthRecords.Count() == 0));

            var hr       = new HealthRecord(a[1], d2);
            var usedWord = onlyVocWords.First();

            hr.SetItems(new[] { usedWord });
            session.SaveOrUpdate(hr);

            // удаляем словарь
            l.DeleteVocs(voc[2]);
            AuthorityController.LoadVocsAfterLogin();

            // на клиенте не осталось шаблонов, слов и специальностей, связанных со словарем
            Assert.AreEqual(0, session.Query <Speciality>().ToList().Where(x => x.Vocabularies.Contains(voc[2])).Count());
            Assert.AreEqual(0, session.Query <Word>().ToList().Where(x => x.Vocabularies.Contains(voc[2])).Count());
            Assert.AreEqual(0, session.Query <WordTemplate>().Where(x => x.Vocabulary == voc[2]).Count());

            // слова специальности у врача теперь без слов, кот были только в словаре
            Assert.IsTrue(d2.SpecialityWords.All(x => !onlyVocWords.Contains(x)));

            // врачу недоступны неиспользованные им слова, бывшие только в убранном словаре
            var notUsedByDoctor = onlyVocWords.Where(x =>
                                                     x.HealthRecords.All(y => y.Doctor != d2)).ToList();

            Assert.IsTrue(d2.Words.All(x => !notUsedByDoctor.Contains(x)));

            // и доступны использованные
            var usedByDoctor = onlyVocWords.Where(x =>
                                                  x.HealthRecords.Any() &&
                                                  x.HealthRecords.All(y => y.Doctor == d2)).ToList();

            Assert.IsTrue(usedByDoctor.All(x => d2.Words.Contains(x)));
        }
예제 #5
0
        public void Hr2HrItem()
        {
            Assert.IsFalse(spec[1].Vocabularies.Contains(voc[1]));

            var hr = new HealthRecord(a[1], d1);

            hr.AddItems(new[] { w[1], w[2] });
            Assert.IsTrue(hr.GetOrderedEntities().Contains(w[2]));

            var hrItem = hr.HrItems.FirstOrDefault(x => x.Entity.Equals(w[2]));

            Assert.IsNotNull(hrItem);
            Assert.AreEqual(hr, hrItem.HealthRecord);

            hr.SetItems(new[] { w[1] });
            Assert.IsFalse(hr.GetOrderedEntities().Contains(w[2]));

            hrItem = hr.HrItems.FirstOrDefault(x => x.Entity.Equals(w[2]));
            Assert.IsNull(hrItem);
        }
예제 #6
0
        public void ChangeUsedTemplateUpdateVoc()
        {
            l.LoadOrUpdateVocs(voc[2]);
            var word4 = voc[2].Words.Where(x => x.Title == wTemp[4].Title).Single();

            Assert.IsTrue(word4.Vocabularies.Contains(voc[2]));

            // используем слово
            var hr = new HealthRecord(a[1], d1);

            hr.SetItems(new[] { word4 });
            session.SaveOrUpdate(hr);

            // меняем шаблон в словаре, обновляем словарь, слово больше не в словаре
            wTemp[4].Title = "asdf";
            l.LoadOrUpdateVocs(voc[2]);
            Assert.IsFalse(word4.Vocabularies.Contains(voc[2]));
            // создано новое слово
            var word4new = voc[2].Words.Where(x => x.Title == wTemp[4].Title).Single();

            Assert.IsTrue(word4new.Vocabularies.Contains(voc[2]));
        }
예제 #7
0
        public void SetItems()
        {
            var hiosSequence = new IHrItemObject[] { w1, w2, com };

            hr1.SetItems(hiosSequence);
            Assert.AreEqual(hiosSequence.Count(), hr1.HrItems.Count());
            Assert.IsTrue(hiosSequence.SequenceEqual(hr1.GetOrderedEntities()));
        }
예제 #8
0
        public void Sequence()
        {
            // новое слово
            CreateWordAsInEditor(wTemp[1].Title);

            // загружаем словарь, нет использованных слов
            l.LoadOrUpdateVocs(voc[1]);
            Assert.IsTrue(voc[1].Words.All(x => x.HealthRecords.Count() == 0));

            // меняем неиспользованное слово
            var word3 = voc[1].Words.Where(x => x.Title == wTemp[3].Title).Single();

            Assert.IsTrue(word3.HealthRecords.Count() == 0);

            word3.Title = "qwe";
            // надо вручную перевести в пользовательский словарь, чтобы
            // при удалении словаря измененные слова не удалены
            voc[1].RemoveWord(word3);
            d1.CustomVocabulary.AddWord(word3);

            session.DoSave(word3);

            // убираем словарь
            l.DeleteVocs(voc[1]);

            // осталось 1 как пользовательское, и 3 измененное
            var wordTitles = GetWordTitles();

            Assert.IsTrue(wordTitles.Contains(wTemp[1].Title));
            Assert.IsFalse(wordTitles.Contains(wTemp[2].Title));
            Assert.IsFalse(wordTitles.Contains(wTemp[3].Title));
            Assert.IsTrue(wordTitles.Contains("qwe"));

            // загружаем 2 словарь
            l.LoadOrUpdateVocs(voc[2]);
            // снова есть слово 3, слово по 5 шаблону не создается повторно
            wordTitles = GetWordTitles();
            Assert.IsTrue(voc[2].Words.Where(x => x.Title == wTemp[3].Title).Any());
            Assert.AreEqual(1, wordTitles.Count(x => x == wTemp[5].Title));

            // используем слово 4
            var word4   = voc[2].Words.Where(x => x.Title == wTemp[4].Title).Single();
            var w4Title = word4.Title;
            var hr      = new HealthRecord(a[1], d1);

            hr.SetItems(new[] { word4 });
            session.SaveOrUpdate(hr);

            Assert.IsTrue(word4.HealthRecords.Any());

            // менем шаблон 4, добавляем шаблон 5
            wTemp[4].Title = "poiuy";
            voc[2].AddTemplates(new[] { "555" });
            session.SaveOrUpdate(voc[2]);

            wordTitles = GetWordTitles();
            Assert.AreEqual(5, voc[2].WordTemplates.Count());
            Assert.AreEqual(0, wordTitles.Count(x => x == "555"));//

            // обновляем 2 словарь, снова есть 2 и 3, слово по 4 шаблону не меняется, есть слово по новому шаблону
            l.LoadOrUpdateVocs(voc[2]);
            wordTitles = GetWordTitles();
            Assert.IsTrue(wordTitles.Contains(wTemp[2].Title));
            Assert.IsTrue(wordTitles.Contains(wTemp[3].Title));
            Assert.AreEqual(w4Title, word4.Title);
        }