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); }
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)); }
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)); }
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))); }
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); }
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])); }
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())); }
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); }