Пример #1
0
        private decimal?f_GetFemaleMax(DataGridViewRow a_Row)
        {
            decimal dVal = 0;

            if (a_Row.Cells[5].Value == null)
            {
                MonitoringStub.Message("Поле \"Жен макс\" пустое!");
                return(null);
            }
            else
            {
                if (decimal.TryParse(a_Row.Cells[5].Value.ToString(), out dVal))
                {
                    if (f_ValidNumber(new string[] { dVal.ToString() }))
                    {
                        return(dVal);
                    }
                    else
                    {
                        MonitoringStub.Message("Значение поля \"Жен макс\" не соответствует точности!");
                        return(null);
                    }
                }
                else
                {
                    MonitoringStub.Message("Значение поля \"Жен макс\" не корректное!");
                    return(null);
                }
            }
        }
Пример #2
0
 private void Dlg_EditorTemplate_FormClosing(object sender, FormClosingEventArgs e)
 {
     if (DialogResult == DialogResult.OK)
     {
         if (string.IsNullOrWhiteSpace(ctrl_TBName.Text))
         {
             MonitoringStub.Message("Наименование шаблона пустое!");
             e.Cancel = true;
             return;
         }
         if (string.IsNullOrWhiteSpace(ctrlTitle.Text))
         {
             MonitoringStub.Message("Заголовок шаблона пустое!");
             e.Cancel = true;
             return;
         }
         if (ctrlCategoriesTotal.Enabled && ctrlCategoriesTotal.SelectedItem == null)
         {
             MonitoringStub.Message("Не выбрана общая категория!");
             e.Cancel = true;
             return;
         }
         if (ctrlCategoriesClinic.Enabled && ctrlCategoriesClinic.SelectedItem == null)
         {
             MonitoringStub.Message("Не выбрана клиническая категория!");
             e.Cancel = true;
             return;
         }
     }
 }
Пример #3
0
        private void ctrlBSave_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrWhiteSpace(ctrlName.Text))
            {
                MonitoringStub.Message("Заполните поле \"Название\"!");
                return;
            }
            if (m_ControlTemplate != null)
            {
                using (var transaction = Cl_App.m_DataContext.Database.BeginTransaction())
                {
                    try
                    {
                        var record = m_ControlTemplate.f_GetNewRecord(false);
                        if (record != null)
                        {
                            if (m_SourceRecord == null && m_Log.f_IsChanged(record) == false)
                            {
                                MonitoringStub.Message("Паттерн не изменялся!");
                                transaction.Rollback();
                                return;
                            }
                            var recordPattern = Cl_RecordsFacade.f_GetInstance().f_GetNewRecordPattern(ctrlName.Text, record);
                            if (recordPattern != null)
                            {
                                Cl_App.m_DataContext.p_RecordsPatterns.Add(recordPattern);
                                Cl_App.m_DataContext.SaveChanges();

                                if (m_SourceRecord == null)
                                {
                                    Cl_EntityLog.f_CustomMessageLog(E_EntityTypes.RecordsPatterns, string.Format("Создан новый патерн \"{0}\" по шаблону \"{1}\"", recordPattern.p_Name, recordPattern.p_Template.p_Name), recordPattern.p_Template.p_TemplateID);
                                }
                                else
                                {
                                    Cl_EntityLog.f_CustomMessageLog(E_EntityTypes.RecordsPatterns, string.Format("Сформирован патерн по записи \"{0}\"", m_SourceRecord.p_Title), m_SourceRecord.p_RecordID);
                                }

                                transaction.Commit();
                                f_SetRecordPattern(recordPattern);
                                e_Save?.Invoke(this, new EventArgs());
                            }
                            else
                            {
                                transaction.Rollback();
                                return;
                            }
                        }
                        else
                        {
                            return;
                        }
                    }
                    catch (Exception ex)
                    {
                        transaction.Rollback();
                        MonitoringStub.Error("Error_Editor", "При сохранении изменений паттерна записей произошла ошибка", ex, null, null);
                    }
                }
            }
        }
Пример #4
0
 private void F_CategoryEdit_FormClosing(object sender, FormClosingEventArgs e)
 {
     if (DialogResult == DialogResult.OK && string.IsNullOrWhiteSpace(ctrlCategotyName.Text))
     {
         MonitoringStub.Message("Название категории не должно быть пустым!");
         e.Cancel = true;
     }
 }
Пример #5
0
        public object f_ConfirmChanges()
        {
            using (var transaction = Cl_App.m_DataContext.Database.BeginTransaction())
            {
                try
                {
                    Cl_Element el = null;
                    if (p_EditingElement.p_Version == 0)
                    {
                        el           = p_EditingElement;
                        el.p_Version = 1;
                    }
                    else
                    {
                        el                 = new Cl_Element();
                        el.p_Version       = p_EditingElement.p_Version + 1;
                        el.p_ParentGroupID = p_EditingElement.p_ParentGroupID;
                        el.p_ParentGroup   = p_EditingElement.p_ParentGroup;
                        Cl_App.m_DataContext.p_Elements.Add(el);
                    }
                    el.p_ElementType = E_ElementsTypes.Image;
                    el.p_ElementID   = p_EditingElement.p_ElementID;
                    el.p_Name        = ctrl_Name.Text;
                    el.p_Tag         = ctrlTag.Text;
                    el.p_Image       = ctrlImage.Image;
                    el.p_Help        = ctrl_Hint.Text;
                    el.p_Comment     = ctrl_Note.Text;

                    Cl_App.m_DataContext.SaveChanges();

                    if (m_Log.f_IsChanged(el) == false)
                    {
                        if (el.Equals(p_EditingElement) && el.p_Version == 1)
                        {
                            el.p_Version = 0;
                        }

                        MonitoringStub.Message("Элемент не изменялся!");
                        transaction.Rollback();
                        return(null);
                    }
                    m_Log.f_SaveEntity(el);
                    f_SetElement(el);
                    transaction.Commit();

                    return(el);
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    MonitoringStub.Error("Error_Editor", "При сохранении изменений произошла ошибка", ex, null, null);
                    return(null);
                }
            }
        }
        private void F_EditorСondition_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (this.IsDiscard)
            {
                return;
            }

            if (!Cl_FormulaFacade.f_GetInstance().f_Valid(m_Blocks))
            {
                MonitoringStub.Message("Формула не корректная!");
                e.Cancel = true;
            }
        }
Пример #7
0
        private void ctrlBCreateMK_Click(object sender, System.EventArgs e)
        {
            if (string.IsNullOrWhiteSpace(ctrlMedCardNumber.Text))
            {
                MonitoringStub.Message("Поле \"Номер медкарты\" пустое!");
                return;
            }
            if (string.IsNullOrWhiteSpace(ctrlPatientID.Text))
            {
                MonitoringStub.Message("Поле \"ID пациента\" пустое!");
                return;
            }
            int patientId = 0;

            if (!int.TryParse(ctrlPatientID.Text, out patientId))
            {
                MonitoringStub.Message("Некорректное значения поля \"ID пациента\" пустое!");
                return;
            }
            if (string.IsNullOrWhiteSpace(ctrlPatientSurName.Text))
            {
                MonitoringStub.Message("Поле \"Фамилия пациента\" пустое!");
                return;
            }
            if (string.IsNullOrWhiteSpace(ctrlPatientSurName.Text))
            {
                MonitoringStub.Message("Поле \"Имя пациента\" пустое!");
                return;
            }
            if (string.IsNullOrWhiteSpace(ctrlPatientSurName.Text))
            {
                MonitoringStub.Message("Поле \"Отчество пациента\" пустое!");
                return;
            }
            if (ctrlPatientDateBirth.Value == null)
            {
                MonitoringStub.Message("Поле \"Дата рождения\" пустое!");
                return;
            }
            Cl_MedicalCardsFacade.f_GetInstance().f_CreateMedicalCard(ctrlMedCardNumber.Text, patientId, (Cl_User.E_Sex)ctrlPatientSex.f_GetSelectedItem()
                                                                      , ctrlPatientSurName.Text, ctrlPatientName.Text, ctrlPatientLastName.Text, ctrlPatientDateBirth.Value, ctrlTBComment.Text);
        }
Пример #8
0
        private byte?f_GetAgeTo(DataGridViewRow a_Row)
        {
            byte bVal = 0;

            if (a_Row.Cells[1].Value == null)
            {
                MonitoringStub.Message("Поле \"Возраст до\" пустое!");
                return(null);
            }
            else
            {
                if (byte.TryParse(a_Row.Cells[1].Value.ToString(), out bVal))
                {
                    return(bVal);
                }
                else
                {
                    MonitoringStub.Message("Значение поля \"Возраст до\" не корректное!");
                    return(null);
                }
            }
        }
Пример #9
0
        private void ctrlBAdd_Click(object sender, System.EventArgs e)
        {
            OpenFileDialog openFile = new OpenFileDialog();

            openFile.Filter = "Файлы изображений (.bmp, .jpg, .png)|*.bmp;*.jpg;*.png|PDF файл (.pdf)|*.pdf|Веб страницы (.htm, .html)|*.htm;*.html";
            if (openFile.ShowDialog() != DialogResult.OK)
            {
                return;
            }
            var recordFileType = Cl_RecordsFacade.f_GetInstance().f_GetFileType(openFile.FileName);

            if (recordFileType != null)
            {
                m_FileType = (E_RecordFileType)recordFileType;
            }
            else
            {
                MonitoringStub.Message("Неизвестный формат файла записи " + openFile.FileName);
                return;
            }
            m_FileBytes        = File.ReadAllBytes(openFile.FileName);
            ctrlLFilePath.Text = openFile.FileName;
        }
Пример #10
0
        public object f_ConfirmChanges()
        {
            if (!f_ValidNumber(ctrl_NormValues.Lines))
            {
                MonitoringStub.Message("Нормальные значения не являются числовыми или не соответствуют точности числа");
                return(null);
            }
            if (!f_ValidNumber(ctrl_PatValues.Lines))
            {
                MonitoringStub.Message("Патологические значения не являются числовыми или не соответствуют точности числа");
                return(null);
            }
            if (!f_ValidNumber(new string[] { ctrl_Default.Text }))
            {
                MonitoringStub.Message("Значение по-умолчанию не является числовым или не соответствует точности числа");
                return(null);
            }
            var templates = f_GetConflictTemplates(p_EditingElement);

            if (templates.Length > 0)
            {
                if (MessageBox.Show("Этот элемент уже используется в шаблонах. Сохранить новую версию элмента?", "", MessageBoxButtons.OKCancel) == DialogResult.Cancel)
                {
                    return(null);
                }
            }
            using (var transaction = Cl_App.m_DataContext.Database.BeginTransaction())
            {
                try
                {
                    decimal    dVal = 0;
                    Cl_Element el   = null;
                    if (p_EditingElement.p_Version == 0)
                    {
                        el           = p_EditingElement;
                        el.p_Version = 1;
                    }
                    else
                    {
                        el                 = new Cl_Element();
                        el.p_Version       = p_EditingElement.p_Version + 1;
                        el.p_ParentGroupID = p_EditingElement.p_ParentGroupID;
                        el.p_ParentGroup   = p_EditingElement.p_ParentGroup;
                        Cl_App.m_DataContext.p_Elements.Add(el);
                    }

                    el.p_ElementType = (E_ElementsTypes)ctrl_ControlType.f_GetSelectedItem();
                    el.p_ElementID   = p_EditingElement.p_ElementID;
                    el.p_Name        = ctrl_Name.Text.Trim();
                    el.p_Tag         = ctrlTag.Text.Trim();
                    el.p_Help        = ctrl_Hint.Text;

                    el.p_IsPartPre = ctrl_IsPartPre.Checked;
                    if (el.p_IsPartPre)
                    {
                        el.p_PartPre = ctrl_PartPreValue.Text.Trim();
                    }
                    el.p_IsPartPost = ctrl_IsPartPost.Checked;
                    if (el.p_IsPartPost)
                    {
                        el.p_PartPost = ctrl_PartPostValue.Text.Trim();
                    }
                    el.p_IsPartLocations = ctrl_IsPartLocations.Checked;
                    if (el.p_IsPartLocations)
                    {
                        el.p_IsPartLocationsMulti = ctrl_IsPartLocationsMulti.Checked;
                    }
                    el.p_IsPartNorm = ctrl_IsPartNorm.Checked;
                    if (el.p_IsPartNorm)
                    {
                        if (decimal.TryParse(ctrl_PartNormValue.Text, out dVal))
                        {
                            if (f_ValidNumber(new string[] { dVal.ToString() }))
                            {
                                el.p_PartNorm = dVal;
                            }
                            else
                            {
                                MonitoringStub.Message("Значение поля \"Норма\" не соответствует точности!");
                                transaction.Rollback();
                                return(null);
                            }
                        }
                        else
                        {
                            MonitoringStub.Message("Значение поля \"Норма\" не корректное!");
                            transaction.Rollback();
                            return(null);
                        }
                    }
                    el.p_IsPartNormRange = ctrl_IsPartNormRange.Checked;

                    el.p_IsChangeNotNormValues = ctrl_IsChangeNotNormValues.Checked;
                    el.p_Visible            = ctrl_IsVisible.Checked;
                    el.p_VisiblePatient     = ctrl_IsVisiblePatient.Checked;
                    el.p_Required           = ctrl_IsRequiredFIeld.Checked;
                    el.p_Editing            = ctrl_IsEditing.Checked;
                    el.p_IsMultiSelect      = ctrl_IsMultiSelect.Checked;
                    el.p_Symmetrical        = ctrl_IsSymmentry.Checked;
                    el.p_SymmetryParamLeft  = ctrl_Symmetry1.Text.Trim();
                    el.p_SymmetryParamRight = ctrl_Symmetry2.Text.Trim();
                    el.p_IsNumber           = ctrl_IsNumber.Checked;
                    el.p_NumberRound        = Convert.ToByte(ctrl_NumberRound.Value);
                    el.p_NumberFormula      = ctrl_NumberFormula.Text;
                    el.p_VisibilityFormula  = ctrl_VisibilityFormula.Text;
                    el.p_Comment            = ctrl_Note.Text;


                    Cl_App.m_DataContext.SaveChanges();
                    el.p_ParamsValues.Clear();
                    if (el.p_IsPartLocations)
                    {
                        el.f_AddValues(Cl_ElementParam.E_TypeParam.Location, ctrl_PartLocationsValue.Lines);
                    }
                    el.f_AddValues(Cl_ElementParam.E_TypeParam.NormValues, ctrl_NormValues.Lines);
                    el.f_AddValues(Cl_ElementParam.E_TypeParam.PatValues, ctrl_PatValues.Lines);
                    el.p_PartAgeNorms.Clear();
                    if (el.p_IsPartNormRange)
                    {
                        var norms = f_GetPartNormRanges(el.p_ID);
                        if (norms != null)
                        {
                            el.p_PartAgeNorms.AddRange(norms);
                        }
                        else
                        {
                            transaction.Rollback();
                            return(null);
                        }
                    }

                    Cl_App.m_DataContext.SaveChanges();
                    if (ctrl_Default.SelectedItem != null)
                    {
                        el.p_Default = el.p_NormValues.FirstOrDefault(v => v.p_Value == ctrl_Default.SelectedItem.ToString());
                        if (el.p_Default == null)
                        {
                            el.p_Default = el.p_PatValues.FirstOrDefault(v => v.p_Value == ctrl_Default.SelectedItem.ToString());
                        }
                        if (el.p_Default != null)
                        {
                            el.p_DefaultID = el.p_Default.p_ID;
                        }
                        else
                        {
                            el.p_DefaultID = null;
                        }
                    }
                    Cl_App.m_DataContext.SaveChanges();
                    if (templates.Length > 0)
                    {
                        foreach (var t in templates)
                        {
                            t.p_IsConflict = true;
                        }
                    }

                    if (m_Log.f_IsChanged(el) == false)
                    {
                        if (el.Equals(p_EditingElement) && el.p_Version == 1)
                        {
                            el.p_Version = 0;
                        }

                        MonitoringStub.Message("Элемент не изменялся!");
                        transaction.Rollback();
                        return(null);
                    }

                    m_Log.f_SaveEntity(el);
                    transaction.Commit();
                    f_SetElement(el);
                    return(el);
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    MonitoringStub.Error("Error_Editor", "При сохранении изменений произошла ошибка", ex, null, null);
                    return(null);
                }
            }
        }
Пример #11
0
        private List <Cl_AgeNorm> f_GetPartNormRanges(int a_ElementID)
        {
            var     norms = new List <Cl_AgeNorm>();
            decimal?dVal  = null;
            byte?   bVal  = null;

            foreach (DataGridViewRow row in ctrl_TPartNormRangeValues.Rows)
            {
                if (!row.IsNewRow)
                {
                    Cl_AgeNorm norm = new Cl_AgeNorm();
                    bVal = f_GetAgeFrom(row);
                    if (bVal != null)
                    {
                        norm.p_AgeFrom = (byte)bVal;
                    }
                    else
                    {
                        return(null);
                    }

                    bVal = f_GetAgeTo(row);
                    if (bVal != null)
                    {
                        norm.p_AgeTo = (byte)bVal;
                    }
                    else
                    {
                        return(null);
                    }

                    if (norm.p_AgeFrom > norm.p_AgeTo)
                    {
                        MonitoringStub.Message("Значение поля \"Возраст от\" больше значения поля \"Возраст до\"!");
                        return(null);
                    }

                    dVal = f_GetMaleMin(row);
                    if (dVal != null)
                    {
                        norm.p_MaleMin = (decimal)dVal;
                    }
                    else
                    {
                        return(null);
                    }
                    dVal = f_GetMaleMax(row);
                    if (dVal != null)
                    {
                        norm.p_MaleMax = (decimal)dVal;
                    }
                    else
                    {
                        return(null);
                    }

                    dVal = f_GetFemaleMin(row);
                    if (dVal != null)
                    {
                        norm.p_FemaleMin = (decimal)dVal;
                    }
                    else
                    {
                        return(null);
                    }
                    dVal = f_GetFemaleMax(row);
                    if (dVal != null)
                    {
                        norm.p_FemaleMax = (decimal)dVal;
                    }
                    else
                    {
                        return(null);
                    }

                    norm.p_ElementID = a_ElementID;
                    norms.Add(norm);
                }
            }
            return(norms);
        }
        /// <summary>
        /// Сохранение шаблона
        /// </summary>
        /// <param name="curTemplate">Сохраняемый шаблон</param>
        /// <param name="items">Новый список элементов в сохраняемом шаблоне</param>
        /// <param name="m_Log">Объект логгера</param>
        /// <returns></returns>
        public Cl_Template f_SaveTemplate(Cl_Template curTemplate, I_Element[] elements, Cl_EntityLog m_Log = null)
        {
            using (var transaction = m_DataContextMegaTemplate.Database.BeginTransaction())
            {
                try
                {
                    Cl_Template newTemplate = null;
                    if (curTemplate.p_Version == 0)
                    {
                        newTemplate           = curTemplate;
                        newTemplate.p_Version = 1;
                    }
                    else
                    {
                        newTemplate = new Cl_Template();
                        newTemplate.p_TemplateID       = curTemplate.p_TemplateID;
                        newTemplate.p_Title            = curTemplate.p_Title;
                        newTemplate.p_CategoryTotalID  = curTemplate.p_CategoryTotalID;
                        newTemplate.p_CategoryTotal    = curTemplate.p_CategoryTotal;
                        newTemplate.p_CategoryClinicID = curTemplate.p_CategoryClinicID;
                        newTemplate.p_CategoryClinic   = curTemplate.p_CategoryClinic;
                        newTemplate.p_Type             = curTemplate.p_Type;
                        newTemplate.p_Name             = curTemplate.p_Name;
                        newTemplate.p_Version          = curTemplate.p_Version + 1;
                        newTemplate.p_ParentGroupID    = curTemplate.p_ParentGroupID;
                        newTemplate.p_ParentGroup      = curTemplate.p_ParentGroup;
                        newTemplate.p_Description      = curTemplate.p_Description;

                        m_DataContextMegaTemplate.p_Templates.Add(newTemplate);
                    }

                    m_DataContextMegaTemplate.SaveChanges();

                    foreach (I_Element item in elements)
                    {
                        Cl_TemplateElement tplEl = new Cl_TemplateElement();
                        tplEl.p_TemplateID = newTemplate.p_ID;
                        tplEl.p_Template   = newTemplate;
                        if (item is Ctrl_Element)
                        {
                            Ctrl_Element block = (Ctrl_Element)item;
                            tplEl.p_ChildElementID = block.p_ID;
                            tplEl.p_ChildElement   = block.p_Element;
                        }
                        else if (item is Ctrl_Template)
                        {
                            Ctrl_Template block = (Ctrl_Template)item;
                            tplEl.p_ChildTemplateID = block.p_ID;
                            tplEl.p_ChildTemplate   = block.p_Template;
                        }

                        tplEl.p_Index = Array.IndexOf(elements, item) + 1;

                        m_DataContextMegaTemplate.p_TemplatesElements.Add(tplEl);
                    }

                    m_DataContextMegaTemplate.SaveChanges();

                    if (m_Log != null && m_Log.f_IsChanged(newTemplate) == false)
                    {
                        if (newTemplate.Equals(curTemplate) && newTemplate.p_Version == 1)
                        {
                            newTemplate.p_Version = 0;
                        }

                        MonitoringStub.Message("Шаблон не изменялся!");
                        transaction.Rollback();
                    }
                    else
                    {
                        m_Log.f_SaveEntity(newTemplate);
                        transaction.Commit();

                        return(newTemplate);
                    }
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    MonitoringStub.Error("Error_Editor", "При сохранении изменений произошла ошибка", ex, null, null);
                }

                return(curTemplate);
            }
        }
Пример #13
0
        private void ctrlBSave_Click(object sender, System.EventArgs e)
        {
            if (string.IsNullOrWhiteSpace(ctrlTitle.Text))
            {
                MonitoringStub.Message("Заполните поле \"Заголовок\"!");
                return;
            }
            if (ctrlDTPDateReception.Value == null)
            {
                MonitoringStub.Message("Заполните поле \"Дата приема\"!");
                return;
            }
            if (ctrlDTPTimeReception.Value == null)
            {
                MonitoringStub.Message("Заполните поле \"Время приема\"!");
                return;
            }
            if (m_Record != null)
            {
                Cl_Record record = null;
                if (m_Record.p_Type == E_RecordType.ByTemplate && m_ControlTemplate != null)
                {
                    record = m_ControlTemplate.f_GetNewRecord();
                }
                else if (m_Record.p_Type == E_RecordType.FinishedFile && m_ControlRecordByFile != null)
                {
                    record = m_ControlRecordByFile.f_GetNewRecord();
                    if (record?.p_FileBytes == null)
                    {
                        MonitoringStub.Message("Заполните поле \"Файл записи\"!");
                        return;
                    }
                }
                if (record != null)
                {
                    using (var transaction = Cl_App.m_DataContext.Database.BeginTransaction())
                    {
                        try
                        {
                            if (m_Log.f_IsChanged(record) == false && record.p_Title == ctrlTitle.Text)
                            {
                                MonitoringStub.Message("Элемент не изменялся!");
                                transaction.Rollback();
                                return;
                            }

                            record.p_Title         = ctrlTitle.Text;
                            record.p_DateReception = new DateTime(ctrlDTPDateReception.Value.Year,
                                                                  ctrlDTPDateReception.Value.Month,
                                                                  ctrlDTPDateReception.Value.Day,
                                                                  ctrlDTPTimeReception.Value.Hour,
                                                                  ctrlDTPTimeReception.Value.Minute,
                                                                  0);

                            if (Cl_SessionFacade.f_GetInstance().p_Doctor.p_Permission.p_Role == Core.Permision.E_Roles.Assistant)
                            {
                                record.f_SetDoctor(Cl_SessionFacade.f_GetInstance().p_Doctor.p_ParentUser);
                            }

                            Cl_App.m_DataContext.p_Records.Add(record);
                            Cl_App.m_DataContext.SaveChanges();

                            if (m_Record.p_Type == E_RecordType.FinishedFile)
                            {
                                record.p_FilePath = Cl_RecordsFacade.f_GetInstance().f_GetLocalResourcesRelativeFilePath(record);
                                Cl_RecordsFacade.f_GetInstance().f_SaveFileFromSql(record);
                            }
                            else
                            {
                                record.p_HTMLDoctor  = record.f_GetHTMLDoctor();
                                record.p_HTMLPatient = record.f_GetHTMLPatient();
                            }
                            if (record.p_Version == 1)
                            {
                                record.p_RecordID = record.p_ID;
                            }
                            Cl_App.m_DataContext.SaveChanges();
                            Cl_EntityLog.f_CustomMessageLog(E_EntityTypes.UIEvents, string.Format("Сохранение записи: {0}, дата записи: {1}, клиника: {2}", record.p_Title, record.p_DateCreate, record.p_ClinicName), record.p_RecordID);

                            m_Log.f_SaveEntity(record, record.p_ParentRecord != null ? $"Создана новая запись на основе {record.p_ParentRecord.p_Title}" : "Создана новая запись");

                            transaction.Commit();
                            f_SetRecord(record);
                            e_Save?.Invoke(this, new Cl_Record.Cl_EventArgs()
                            {
                                p_Record = record
                            });
                            this.Close();
                        }
                        catch (Exception ex)
                        {
                            transaction.Rollback();
                            try
                            {
                                Cl_RecordsFacade.f_GetInstance().f_DeleteFileFromSql(record);
                            }
                            catch { };
                            MonitoringStub.Error("Error_Editor", "При сохранении изменений записи произошла ошибка", ex, null, null);
                        }
                    }
                }
            }
        }