/// <summary>Объединение медкарт в одну действующую</summary> /// <param name="a_PatientID">ID пациента</param> public bool f_MergeMedicalCards(int a_PatientID) { if (m_DataContextMegaTemplate != null) { var medicalCards = m_DataContextMegaTemplate.p_MedicalCards.Where(m => m.p_DateArchive == null && m.p_PatientID == a_PatientID).ToList(); if (medicalCards != null && medicalCards.Count > 0) { if (medicalCards.Count > 1) { Cl_MedicalCard actualMedicalCard = null; foreach (var medicalCard in medicalCards) { if (actualMedicalCard == null || actualMedicalCard.p_DateCreate < medicalCard.p_DateCreate) { actualMedicalCard = medicalCard; } } medicalCards.Remove(actualMedicalCard); try { foreach (var medicalCard in medicalCards) { var records = Cl_RecordsFacade.f_GetInstance().f_GetRecords(medicalCard); if (records != null) { foreach (var record in records) { record.p_MedicalCardID = actualMedicalCard.p_ID; record.p_MedicalCard = actualMedicalCard; } } medicalCard.p_DateDelete = DateTime.Now; } actualMedicalCard.p_DateMerge = DateTime.Now; m_DataContextMegaTemplate.SaveChanges(); return(true); } catch (Exception er) { MonitoringStub.Error("Error_MergeMedicalCards", "Не удалось объединить медкарты в одну действующую", er, null, null); return(false); } } else { return(true); } } else { MonitoringStub.Error("Error_MergeMedicalCards", "Не удалось найти действующую медкарту", null, null, null); return(false); } } else { MonitoringStub.Error("Error_MedicalCardsFacade", "Не инициализирован фасад", null, null, null); return(false); } }
/// <summary>Обновление фасада</summary> public bool f_Update(Cl_User a_Doctor, Cl_MedicalCard a_MedCard, DateTime?a_DateStart = null, DateTime?a_DateEnd = null) { if (a_Doctor == null) { MonitoringStub.Error("Error_SessionFacade_Update", "Не указан доктор", null, null, null); return(false); } if (a_MedCard == null) { MonitoringStub.Error("Error_SessionFacade_Update", "Не указана медкарта", null, null, null); return(false); } p_Doctor = a_Doctor; p_Patient = new Cl_User(); p_Patient.p_UserID = a_MedCard.p_PatientID; p_Patient.p_UserSurName = a_MedCard.p_PatientSurName; p_Patient.p_UserName = a_MedCard.p_PatientName; p_Patient.p_UserLastName = a_MedCard.p_PatientLastName; p_Patient.p_Sex = a_MedCard.p_PatientSex; p_Patient.p_DateBirth = a_MedCard.p_PatientDateBirth; p_DateStart = a_DateStart; p_DateEnd = a_DateEnd; p_MedicalCard = a_MedCard; return(true); }
/// <summary>Инициализация фасада</summary> public bool f_Init(Cl_User a_Doctor, Cl_MedicalCard a_MedCard, DateTime?a_DateStart = null, DateTime?a_DateEnd = null) { m_IsInit = f_Update(a_Doctor, a_MedCard, a_DateStart, a_DateEnd); if (p_SessionID == null || p_SessionID == Guid.Empty) { p_SessionID = Guid.NewGuid(); } return(m_IsInit); }
/// <summary>Создание новой медкарты</summary> /// <param name="a_Number">Номер медкарта</param> /// <param name="a_PatientID">ID пациента</param> /// <param name="a_PatientSex">Пол пациента</param> /// <param name="a_PatientSurName">Фамиля пациента</param> /// <param name="a_PatientName">Имя пациента</param> /// <param name="a_PatientLastName">Отчество пациента</param> /// <param name="a_PatientDateBirth">Дата рождения пациента</param> /// <param name="a_Comment">Комментарий</param> /// <returns>Созданная медкарта</returns> public Cl_MedicalCard f_CreateMedicalCard(string a_Number, int a_PatientID, Cl_User.E_Sex a_PatientSex, string a_PatientSurName, string a_PatientName, string a_PatientLastName, DateTime a_PatientDateBirth, string a_Comment) { if (m_DataContextMegaTemplate != null) { if (string.IsNullOrWhiteSpace(a_Number)) { MonitoringStub.Error("Error_CreateMedicalCard", "Не указан номер медкарты", null, null, null); return(null); } if (string.IsNullOrWhiteSpace(a_PatientSurName)) { MonitoringStub.Error("Error_CreateMedicalCard", "Не указано фамилия пациента", null, null, null); return(null); } if (string.IsNullOrWhiteSpace(a_PatientName)) { MonitoringStub.Error("Error_CreateMedicalCard", "Не указано имя пациента", null, null, null); return(null); } if (string.IsNullOrWhiteSpace(a_PatientLastName)) { MonitoringStub.Error("Error_CreateMedicalCard", "Не указано отчество пациента", null, null, null); return(null); } var medicalCard = new Cl_MedicalCard(); try { medicalCard.p_Number = a_Number; medicalCard.p_DateCreate = DateTime.Now; medicalCard.p_PatientID = a_PatientID; medicalCard.p_PatientSex = a_PatientSex; medicalCard.p_PatientSurName = a_PatientSurName; medicalCard.p_PatientName = a_PatientName; medicalCard.p_PatientLastName = a_PatientLastName; medicalCard.p_PatientDateBirth = a_PatientDateBirth; medicalCard.p_Comment = a_Comment; m_DataContextMegaTemplate.p_MedicalCards.Add(medicalCard); m_DataContextMegaTemplate.SaveChanges(); return(medicalCard); } catch (Exception er) { m_DataContextMegaTemplate.p_MedicalCards.Remove(medicalCard); MonitoringStub.Error("Error_CreateMedicalCard", "Не удалось создать медкарту", er, null, null); return(null); } } else { MonitoringStub.Error("Error_MedicalCardsFacade", "Не инициализирован фасад", null, null, null); return(null); } }
/// <summary>Получение медкарты</summary> /// <param name="a_Number">Номер медкарта</param> /// <param name="a_PatientUID">UID пациента</param> public Cl_MedicalCard f_GetMedicalCard(string a_Number, Guid a_PatientUID) { Cl_MedicalCard medicalCard = null; if (m_DataContextMegaTemplate != null) { return(m_DataContextMegaTemplate.p_MedicalCards.FirstOrDefault(m => m.p_Number == a_Number && m.p_PatientUID == a_PatientUID)); } else { MonitoringStub.Error("Error_MedicalCardsFacade", "Не инициализирован фасад", null, null, null); return(null); } }
private void ctrl_TMedicalCards_CellClick(object sender, DataGridViewCellEventArgs e) { m_SelectedMedicalCard = null; if (ctrl_TMedicalCards.CurrentRow != null && ctrl_TMedicalCards.CurrentRow.DataBoundItem is Cl_MedicalCard) { try { m_SelectedMedicalCard = ctrl_TMedicalCards.CurrentRow.DataBoundItem as Cl_MedicalCard; if (m_SelectedMedicalCard != null) { ctrlMCInfoValNumber.Text = m_SelectedMedicalCard.p_Number; ctrlMCInfoValCreateDate.Text = m_SelectedMedicalCard.p_DateCreate.ToShortDateString(); ctrlMCInfoValPatient.Text = m_SelectedMedicalCard.p_PatientFIO; if (m_SelectedMedicalCard.p_DateArchive != null) { ctrlMCInfoArchiveDate.Visible = true; ctrlMCInfoValArchiveDate.Text = m_SelectedMedicalCard.p_DateArchive?.ToShortDateString(); } else { ctrlMCInfoArchiveDate.Visible = false; ctrlMCInfoValArchiveDate.Text = ""; } if (m_SelectedMedicalCard.p_DateDelete != null) { ctrlMCInfoDeleteDate.Visible = true; ctrlMCInfoValDeleteDate.Text = m_SelectedMedicalCard.p_DateDelete?.ToShortDateString(); } else { ctrlMCInfoDeleteDate.Visible = false; ctrlMCInfoValDeleteDate.Text = ""; } ctrlMCInfoValComment.Text = m_SelectedMedicalCard.p_Comment; ctrlPRecordInfo.Visible = true; } else { ctrlPRecordInfo.Visible = false; } } catch (Exception er) { MonitoringStub.Error("Error_Editor", "Не удалось отобразить медкарту", er, null, null); } } }
private void ctrlBLoadMedicalCard_Click(object sender, EventArgs e) { int patientId = 0; Guid patientUid = Guid.Empty; ctrlMedcardInfo.Text = ""; _currentMedCard = null; if (int.TryParse(ctrlTBPatientID.Text, out patientId)) { var medCard = Cl_MedicalCardsFacade.f_GetInstance().f_GetMedicalCard(ctrlTBMedCardNumber.Text, patientId); if (medCard != null) { ctrlMedcardInfo.Text = $"№{medCard.p_Number}, {medCard.p_PatientFIO}, {medCard.p_PatientDateBirth}"; _currentMedCard = medCard; } else { MonitoringStub.Warning("Не найдена медицинская карта"); } } else if (Guid.TryParse(ctrlTBPatientID.Text, out patientUid)) { var medCard = Cl_MedicalCardsFacade.f_GetInstance().f_GetMedicalCard(ctrlTBMedCardNumber.Text, patientUid); if (medCard != null) { ctrlMedcardInfo.Text = $"№{medCard.p_Number}, {medCard.p_PatientFIO}, {medCard.p_PatientDateBirth}"; _currentMedCard = medCard; } else { MonitoringStub.Warning("Не найдена медицинская карта"); } } else { MonitoringStub.Error("Error_Welcome", "Не верно указан Id пациента", null, null, null); } }
static void Main(string[] args) { string local = null; string path = null; string dbConnection = null; var medicalCards = new Dictionary <string, Cl_MedicalCard>(); if (args != null && args.Length >= 4) { for (var i = 0; i < args.Length; i++) { var arg = args[i]; if (arg == "-local" && i + 1 < args.Length) { local = args[i + 1]; } else if (arg == "-path" && i + 1 < args.Length) { path = args[i + 1]; } else if (arg == "-db" && i + 1 < args.Length) { dbConnection = args[i + 1].Replace("Data_Source", "Data Source").Replace("Data_Source", "Data Source").Replace("Initial_Catalog", "Initial Catalog").Replace("Integrated_Security", "Integrated Security"); } else if (arg == "-log" && i + 1 < args.Length) { m_Loging = args[i + 1] == "1"; } } } if (local != null && path != null && dbConnection != null) { if (Directory.Exists(path)) { var db = new Cl_DataContextMegaTemplate(dbConnection); db.f_Init(); if (!Cl_CatalogsFacade.f_GetInstance().f_Init(db)) { f_WriteLog("Не удалось инициализировать фасад работы со справочниками"); Console.ReadKey(true); return; } if (!Cl_MedicalCardsFacade.f_GetInstance().f_Init(db)) { f_WriteLog("Не удалось инициализировать фасад работы с мед картами"); Console.ReadKey(true); return; } if (!Cl_RecordsFacade.f_GetInstance().f_Init(db, local)) { f_WriteLog("Не удалось инициализировать фасад работы с записями"); Console.ReadKey(true); return; } var records = new List <Cl_Record>(); DirectoryInfo _dirInfo = new DirectoryInfo(Cl_RecordsFacade.f_GetInstance().f_GetLocalResourcesPath()); f_WriteLog(string.Format("Начало формирования записей папки \"{0}\"", path)); int iVal = 0; Guid gVal = Guid.Empty; DateTime dtVal = DateTime.MinValue; var dirs = Directory.GetDirectories(path); foreach (var dir in dirs) { var folderName = dir.Substring(dir.LastIndexOf("\\") + 1).Replace(path, ""); f_WriteLog(string.Format("Начало формирования записей пациента \"{0}\"", folderName)); var vals = folderName.Split(' '); if (vals.Length >= 6 && vals.Length <= 7) { if (vals[5].Length > 0 && vals[5][0] == '#') { if (int.TryParse(vals[0], out iVal)) { var medicalNumber = iVal; var patientSurName = vals[1]; var patientName = vals[2]; var patientLastName = vals[3]; if (DateTime.TryParse(vals[4], out dtVal)) { var patientDateBirth = dtVal; bool validID = false; //ID пациента int patientID = 0; Guid patientUID = Guid.Empty; if (vals.Length == 6) { validID = int.TryParse(vals[5].Substring(1), out patientID); } else if (vals.Length == 7) { validID = Guid.TryParse(vals[6], out patientUID); } if (validID) { var dirsCliniks = Directory.GetDirectories(dir); foreach (var dirClinik in dirsCliniks) { var clinik = dirClinik.Substring(dirClinik.LastIndexOf("\\") + 1); var dirsCategories = Directory.GetDirectories(dirClinik); foreach (var dirCategory in dirsCategories) { var cat = dirCategory.Substring(dirCategory.LastIndexOf("\\") + 1); var category = Cl_CatalogsFacade.f_GetInstance().f_GetCategory(cat); if (category == null) { category = Cl_CatalogsFacade.f_GetInstance().f_AddCategory(Cl_Category.E_CategoriesTypes.Total, cat); } if (category != null) { var curRecords = new Dictionary <string, Cl_Record>(); //var curImages = new Dictionary<string, List<Cl_ImageFileData>>(); var filesRecords = Directory.GetFiles(dirCategory); foreach (var fileRecord in filesRecords) { var valsRecord = fileRecord.Replace(dirCategory + "\\", ""); var pathRelativeFile = fileRecord.Replace(path, ""); var pathRelativeFolder = pathRelativeFile.Replace(valsRecord, ""); if (DateTime.TryParse(valsRecord.Substring(0, 8), out dtVal)) { var record = new Cl_Record(); record.p_Version = 1; record.p_Type = E_RecordType.FinishedFile; record.p_IsAutomatic = true; record.p_DateCreate = record.p_DateLastChange = record.p_DateReception = dtVal; string patID = patientUID != Guid.Empty ? patientUID.ToString() : patientID.ToString(); string medicalCardKey = $"{medicalNumber}_{patID}"; Cl_MedicalCard medicalCard = null; if (!medicalCards.TryGetValue(medicalCardKey, out medicalCard)) { if (patientUID != Guid.Empty) { medicalCard = Cl_MedicalCardsFacade.f_GetInstance().f_GetMedicalCard(medicalNumber.ToString(), patientUID); } else { medicalCard = Cl_MedicalCardsFacade.f_GetInstance().f_GetMedicalCard(medicalNumber.ToString(), patientID); } if (medicalCard == null) { medicalCard = new Cl_MedicalCard(); medicalCard.p_Number = medicalNumber.ToString(); medicalCard.p_DateCreate = record.p_DateCreate; medicalCard.p_PatientID = patientID; if (patientUID != Guid.Empty) { medicalCard.p_PatientUID = patientUID; } medicalCard.p_PatientSurName = patientSurName; medicalCard.p_PatientName = patientName; medicalCard.p_PatientLastName = patientLastName; medicalCard.p_PatientDateBirth = patientDateBirth; medicalCards.Add(medicalCardKey, medicalCard); } } record.p_MedicalCard = medicalCard; record.p_ClinicName = clinik; record.p_CategoryTotalID = category.p_ID; record.p_CategoryTotal = category; bool isAuthorValid = false; var authorStart = valsRecord.IndexOf('['); if (authorStart == -1 && valsRecord.LastIndexOf('.') > 9) { record.p_Title = valsRecord.Substring(9, valsRecord.LastIndexOf('.') - 9); record.p_DateLastChange = record.p_DateCreate; isAuthorValid = true; } else if (authorStart > 10) { record.p_Title = valsRecord.Substring(9, valsRecord.IndexOf('[') - 10); var authorEnd = valsRecord.IndexOf(']'); if (authorEnd > 11 && authorEnd > authorStart + 22) { if (DateTime.TryParse(valsRecord.Substring(authorStart + 1, 19).Replace("-", ":"), out dtVal)) { record.p_DateLastChange = dtVal; var authorName = valsRecord.Substring(authorStart + 22, authorEnd - authorStart - 22); var valsAuthorName = authorName.Split(' '); if (valsAuthorName.Length == 4) { record.p_DoctorSurName = valsAuthorName[1]; record.p_DoctorName = valsAuthorName[2]; record.p_DoctorLastName = valsAuthorName[3]; isAuthorValid = true; } else { f_WriteLog(string.Format("Не корректные данные имени автора записи {0}", fileRecord), E_MessageType.Warning); continue; } } else if (valsRecord.IndexOf("_[") > 0 && valsRecord.IndexOf("]-") > 0 && valsRecord.LastIndexOf(".") > valsRecord.IndexOf("]-") + 2) { if (int.TryParse(valsRecord.Substring(valsRecord.IndexOf("]-") + 2, valsRecord.LastIndexOf(".") - valsRecord.IndexOf("]-") - 2), out iVal)) { //var fileStream = File.OpenRead(fileRecord); //MemoryStream ms = new MemoryStream(); //fileStream.CopyTo(ms); //Regex rgx = new Regex("]-\\d*?."); //var keyRecord = rgx.Replace(valsRecord.Replace("_", " "), "]"); //keyRecord = keyRecord.Substring(0, keyRecord.LastIndexOf(".")); //var recordFileType = f_GetFileType(valsRecord); //if (recordFileType != null) //{ // if (curImages.ContainsKey(keyRecord)) // { // curImages[keyRecord].Add(new Cl_ImageFileData() { m_FileName = valsRecord, m_FileType = (E_RecordFileType)recordFileType, m_FileData = ms.ToArray() }); // } // else // { // curImages.Add(keyRecord, new List<Cl_ImageFileData>() { new Cl_ImageFileData() { m_FileName = valsRecord, m_FileType = (E_RecordFileType)recordFileType, m_FileData = ms.ToArray() } }); // } //} //ms.Dispose(); continue; } else { f_WriteLog(string.Format("Не корректное время изменения записи автором {0}", fileRecord), E_MessageType.Warning); continue; } } else { f_WriteLog(string.Format("Не корректное время изменения записи автором {0}", fileRecord), E_MessageType.Warning); continue; } } else { f_WriteLog(string.Format("Не корректные данные автора записи {0}", fileRecord), E_MessageType.Warning); continue; } } else { f_WriteLog(string.Format("Не корректные данные автора записи {0}", fileRecord), E_MessageType.Warning); continue; } if (isAuthorValid) { var attrs = File.GetAttributes(fileRecord); var isPrint = attrs.HasFlag(FileAttributes.ReadOnly); if (isPrint) { record.p_DatePrintDoctor = record.p_DatePrintPatient = DateTime.Now; } //var fileStream = File.OpenRead(fileRecord); var fileName = ""; var extension = Path.GetExtension(fileRecord); fileName = fileRecord.Replace(extension, ""); if (extension == ".x") { record.p_IsDelete = true; extension = Path.GetExtension(fileRecord.Substring(0, fileRecord.Length - 2)); fileName = fileRecord.Replace(extension, ""); } else if (extension == ".tag") { extension = Path.GetExtension(fileRecord.Substring(0, fileRecord.Length - 4)); fileName = fileRecord.Replace(extension, ""); } var recordFileType = f_GetFileType(valsRecord); if (recordFileType != null) { record.p_FileType = (E_RecordFileType)recordFileType; } else { f_WriteLog(string.Format("Неизвестный формат файла записи {0}", fileRecord), E_MessageType.Error); continue; } record.p_FilePath = pathRelativeFile; //MemoryStream ms = new MemoryStream(); //fileStream.CopyTo(ms); //record.p_FilePath = $"{local}\\{clinik}\\{patID}\\{valsRecord}"; //record.p_FilePath = Cl_RecordsFacade.f_GetInstance().f_GetLocalResourcesRelativeFilePath(record); //var filePath = Cl_RecordsFacade.f_GetInstance().f_GetLocalResourcesPath() + "/" + record.p_FilePath; //if (record.p_FileType == E_RecordFileType.HTML) //{ // ms.Position = 0; // var sr = new StreamReader(ms); // var htmlText = sr.ReadToEnd(); // sr.Dispose(); // htmlText = htmlText.Replace(@"img src=\\family-doctor.local\fd$\FD.med\Images\Logo.jpg", @"img class=""record_title_img"" src=""Images/title.jpg"""); // File.WriteAllBytes(filePath, Encoding.UTF8.GetBytes(htmlText)); //} //else //{ // File.WriteAllBytes(filePath, ms.ToArray()); //} //ms.Dispose(); f_WriteLog(string.Format("Сформирована новая запись {0}", fileRecord), E_MessageType.Info); curRecords.Add(valsRecord, record); } else { f_WriteLog(string.Format("Не корректные данные автора записи {0}", fileRecord), E_MessageType.Warning); continue; } } else { f_WriteLog(string.Format("Не корректная дата записи {0}", fileRecord), E_MessageType.Warning); continue; } } //foreach (var record in curRecords) //{ // var fileName = record.Key.Substring(0, record.Key.IndexOf("].") + 1); // var patID = record.Value.p_MedicalCard.p_PatientUID != Guid.Empty ? record.Value.p_MedicalCard.p_PatientUID.ToString() : record.Value.p_MedicalCard.p_PatientID.ToString(); // var folderPath = $"{local}\\{clinik}\\{patID}\\"; // if (curImages.ContainsKey(fileName)) // { // var images = curImages[fileName]; // var html = Encoding.UTF8.GetString(record.Value.p_FileBytes); // foreach (var img in images) // { // html = html.Replace(img.m_FileName, string.Format(@"data:image/{0};base64,{1}", Enum.GetName(typeof(E_RecordFileType), img.m_FileType).ToLower(), Convert.ToBase64String(img.m_FileData))); // } // record.Value.p_FileBytes = Encoding.UTF8.GetBytes(html); // } //} records.AddRange(curRecords.Values); } else { f_WriteLog("Категория записей не найдена", E_MessageType.Error); } } } } else { f_WriteLog("Не корректный ID пациента", E_MessageType.Warning); } } else { f_WriteLog("Не корректная дата рождения пациента", E_MessageType.Warning); } } else { f_WriteLog("Не корректный номер медкарты", E_MessageType.Warning); } } else { f_WriteLog("Не корректное название архива записей", E_MessageType.Warning); } } else { f_WriteLog("Не корректное название архива записей", E_MessageType.Warning); } } f_WriteLog("Начало сохранения сформированных записей", E_MessageType.Info); if (Cl_RecordsFacade.f_GetInstance().f_AddRecords(records)) { f_WriteLog("Конец сохранения сформированных записей", E_MessageType.Info); f_WriteLog("Начало копирования папки с файлами", E_MessageType.Info); foreach (string _path in Directory.GetFiles(path, "*.*", SearchOption.AllDirectories)) { try { var fileName = Path.GetFileName(_path); var relativePath = _path.Replace(path, "").Replace("\\" + fileName, ""); Cl_RecordsFacade.f_GetInstance().f_SaveFileFromSql(relativePath, fileName, File.ReadAllBytes(_path)); } catch (Exception e) { f_WriteLog("Не удалось скопировать файл " + _path, E_MessageType.Info); } } f_WriteLog("Конец копирования папки с файлами", E_MessageType.Info); } else { f_WriteLog("Не удалось сохраненить сформированные записи", E_MessageType.Info); } f_WriteLog(string.Format("Конец формирования записей папки \"{0}\"", path)); } else { f_WriteLog("Папка архива записей для загрузки не существует.", E_MessageType.Error); } } else { f_WriteLog("Не указана папка архива записей для загрузки.", E_MessageType.Error); } f_FixedLog(); Console.ReadKey(true); }
public void f_TestElementVisibleFromFormula() { //tag_one = "pat2"; tag_dva = 11; tag_tri = 5 var record = new Cl_Record() { p_Title = "Тест проверки формул" }; var medicalCard = new Cl_MedicalCard(); medicalCard.p_PatientSex = Core.Permision.Cl_User.E_Sex.Man; medicalCard.p_PatientDateBirth = new DateTime(1981, 4, 1); record.p_MedicalCard = medicalCard; record.p_Values = new List <Cl_RecordValue>(); var template = new Cl_Template() { p_Name = "Тест проверки формул", p_Type = Cl_Template.E_TemplateType.Template }; var elements = new List <Cl_TemplateElement>(); var element = new Cl_Element() { p_ID = 1, p_Name = "Формула 1", p_Tag = "one" }; element.p_ParamsValues = new List <Cl_ElementParam>(); for (int i = 1; i < 4; i++) { element.p_ParamsValues.Add(new Cl_ElementParam() { p_Element = element, p_TypeParam = Cl_ElementParam.E_TypeParam.NormValues, p_Value = "norm" + i.ToString() }); var ep = new Cl_ElementParam() { p_Element = element, p_TypeParam = Cl_ElementParam.E_TypeParam.PatValues, p_Value = "pat" + i.ToString() }; if (i == 2) { record.p_Values.Add(new Cl_RecordValue() { p_ElementID = element.p_ID, p_Element = element, p_Params = new List <Cl_RecordParam>() { new Cl_RecordParam() { p_ElementParam = ep } } }); } element.p_ParamsValues.Add(ep); } elements.Add(new Cl_TemplateElement() { p_Template = template, p_ChildElement = element, p_Index = 0 }); element = new Cl_Element() { p_ID = 2, p_Name = "Формула 2", p_Tag = "dva", p_IsNumber = true, p_NumberRound = 2 }; element.p_ParamsValues = new List <Cl_ElementParam>(); for (int i = 1; i < 4; i++) { element.p_ParamsValues.Add(new Cl_ElementParam() { p_Element = element, p_TypeParam = Cl_ElementParam.E_TypeParam.NormValues, p_Value = i.ToString() }); element.p_ParamsValues.Add(new Cl_ElementParam() { p_Element = element, p_TypeParam = Cl_ElementParam.E_TypeParam.PatValues, p_Value = i.ToString() }); } record.p_Values.Add(new Cl_RecordValue() { p_ElementID = element.p_ID, p_Element = element, p_ValueUser = "******" }); elements.Add(new Cl_TemplateElement() { p_Template = template, p_ChildElement = element, p_Index = 1 }); element = new Cl_Element() { p_ID = 3, p_Name = "Формула 3", p_Tag = "tri", p_IsNumber = true, p_NumberRound = 2 }; element.p_ParamsValues = new List <Cl_ElementParam>(); for (int i = 1; i < 4; i++) { element.p_ParamsValues.Add(new Cl_ElementParam() { p_Element = element, p_TypeParam = Cl_ElementParam.E_TypeParam.NormValues, p_Value = i.ToString() }); element.p_ParamsValues.Add(new Cl_ElementParam() { p_Element = element, p_TypeParam = Cl_ElementParam.E_TypeParam.PatValues, p_Value = i.ToString() }); } record.p_Values.Add(new Cl_RecordValue() { p_ElementID = element.p_ID, p_Element = element, p_ValueUser = "******" }); elements.Add(new Cl_TemplateElement() { p_Template = template, p_ChildElement = element, p_Index = 2 }); template.p_TemplateElements = elements; record.f_SetTemplate(template); bool actual = Cl_RecordsFacade.f_GetInstance().f_GetElementVisible(record, "tag_one = \"pat2\""); Assert.AreEqual(true, actual); actual = Cl_RecordsFacade.f_GetInstance().f_GetElementVisible(record, "tag_one = tag_one"); Assert.AreEqual(true, actual); actual = Cl_RecordsFacade.f_GetInstance().f_GetElementVisible(record, "tag_dva > 10"); Assert.AreEqual(true, actual); actual = Cl_RecordsFacade.f_GetInstance().f_GetElementVisible(record, "tag_dva < 15"); Assert.AreEqual(true, actual); actual = Cl_RecordsFacade.f_GetInstance().f_GetElementVisible(record, "tag_dva = 11"); Assert.AreEqual(true, actual); actual = Cl_RecordsFacade.f_GetInstance().f_GetElementVisible(record, "tag_dva > 14"); Assert.AreEqual(false, actual); actual = Cl_RecordsFacade.f_GetInstance().f_GetElementVisible(record, "tag_dva < 11"); Assert.AreEqual(false, actual); actual = Cl_RecordsFacade.f_GetInstance().f_GetElementVisible(record, "tag_one = \"pat2\" И tag_dva > 10 ИЛИ tag_tri = 3"); Assert.AreEqual(true, actual); actual = Cl_RecordsFacade.f_GetInstance().f_GetElementVisible(record, "tag_one = \"pat2\" И tag_dva < 12 ИЛИ tag_tri = 3"); Assert.AreEqual(true, actual); actual = Cl_RecordsFacade.f_GetInstance().f_GetElementVisible(record, "tag_one = \"pat2\" И tag_dva = 11 ИЛИ tag_tri = 3"); Assert.AreEqual(true, actual); actual = Cl_RecordsFacade.f_GetInstance().f_GetElementVisible(record, "tag_one = \"pat2\" И tag_dva = 13 ИЛИ tag_tri = 5"); Assert.AreEqual(true, actual); actual = Cl_RecordsFacade.f_GetInstance().f_GetElementVisible(record, "tag_one = \"pat2\" И tag_dva = 13 ИЛИ tag_tri > 4"); Assert.AreEqual(true, actual); actual = Cl_RecordsFacade.f_GetInstance().f_GetElementVisible(record, "tag_one = \"pat2\" И tag_dva = 13 ИЛИ tag_tri < 6"); Assert.AreEqual(true, actual); actual = Cl_RecordsFacade.f_GetInstance().f_GetElementVisible(record, "tag_one = \"pat2\" И tag_dva = 13 ИЛИ tag_tri < tag_dva"); Assert.AreEqual(true, actual); actual = Cl_RecordsFacade.f_GetInstance().f_GetElementVisible(record, "tag_one = \"pat2\" И tag_dva = 13 ИЛИ tag_tri > tag_dva"); Assert.AreEqual(false, actual); actual = Cl_RecordsFacade.f_GetInstance().f_GetElementVisible(record, "tag_one = \"pat2\" И tag_dva = 13 ИЛИ tag_tri = 6"); Assert.AreEqual(false, actual); actual = Cl_RecordsFacade.f_GetInstance().f_GetElementVisible(record, "tag_one = \"pat2\" И tag_dva = 13"); Assert.AreEqual(false, actual); actual = Cl_RecordsFacade.f_GetInstance().f_GetElementVisible(record, "tag_one = \"pat2\" И tag_dva > 11"); Assert.AreEqual(false, actual); actual = Cl_RecordsFacade.f_GetInstance().f_GetElementVisible(record, "tag_one = \"pat2\" И tag_dva < 11"); Assert.AreEqual(false, actual); actual = Cl_RecordsFacade.f_GetInstance().f_GetElementVisible(record, "tag_one = \"pat3\" И tag_dva = 11"); Assert.AreEqual(false, actual); actual = Cl_RecordsFacade.f_GetInstance().f_GetElementVisible(record, "tag_one = \"\" И tag_dva = 11"); Assert.AreEqual(false, actual); actual = Cl_RecordsFacade.f_GetInstance().f_GetElementVisible(record, "tag_gender = man И tag_age > 10"); Assert.AreEqual(true, actual); actual = Cl_RecordsFacade.f_GetInstance().f_GetElementVisible(record, "tag_gender = man И tag_age > 40"); Assert.AreEqual(false, actual); actual = Cl_RecordsFacade.f_GetInstance().f_GetElementVisible(record, "tag_gender = female И tag_age > 10"); Assert.AreEqual(false, actual); actual = Cl_RecordsFacade.f_GetInstance().f_GetElementVisible(record, "tag_gender = female"); Assert.AreEqual(false, actual); }