/// <summary>Удаление медкарты</summary>
 /// <param name="a_Number">Номер медкарта</param>
 /// <param name="a_PatientID">ID пациента</param>
 public bool f_DeleteMedicalCard(string a_Number, int a_PatientID)
 {
     if (m_DataContextMegaTemplate != null)
     {
         var medicalCard = f_GetMedicalCard(a_Number, a_PatientID);
         if (medicalCard != null)
         {
             if (m_DataContextMegaTemplate.p_Records.Include(r => r.p_MedicalCard).Any(r => r.p_MedicalCard.p_Number == a_Number && !r.p_IsDelete))
             {
                 MonitoringStub.Error("Error_CreateMedicalCard", $"Имеются не удаленные записи медкарты {a_Number}", null, null, null);
                 return(false);
             }
             try
             {
                 m_DataContextMegaTemplate.p_MedicalCards.Remove(medicalCard);
                 return(true);
             }
             catch (Exception er)
             {
                 MonitoringStub.Error("Error_CreateMedicalCard", "Не удалось удалить медкарту", er, null, null);
                 return(false);
             }
         }
         else
         {
             MonitoringStub.Error("Error_DeleteMedicalCard", "Не удалось найти медкарту", null, null, null);
             return(false);
         }
     }
     else
     {
         MonitoringStub.Error("Error_MedicalCardsFacade", "Не инициализирован фасад", null, null, null);
         return(false);
     }
 }
Example #2
0
        private void f_UpdateMedicalCards()
        {
            try
            {
                var patientID    = Cl_SessionFacade.f_GetInstance().p_Patient.p_UserID;
                var medicalCards = Cl_MedicalCardsFacade.f_GetInstance().f_GetMedicalCardsByPatient(patientID);

                if (medicalCards.Count() > 0)
                {
                    BindingSource bs   = new BindingSource();
                    var           list = new BindingList <Cl_MedicalCard>(medicalCards);
                    ctrl_TMedicalCards.AutoGenerateColumns = false;
                    ctrl_TMedicalCards.DataSource          = list;
                }
                else
                {
                    ctrl_TMedicalCards.DataSource = null;
                }
                if (ctrl_TMedicalCards.Rows.Count > 0)
                {
                    ctrl_TMedicalCards.Rows[ctrl_TMedicalCards.Rows.Count - 1].Selected = true;
                }
            }
            catch (Exception er)
            {
                MonitoringStub.Error("Error_Editor", "Не удалось обновить список медкарт", er, null, null);
            }
        }
        public Cl_Template f_UpSaveTemplate(Cl_Template curTemplate, I_Element[] elements, Cl_EntityLog m_Log)
        {
            Cl_Template newTemplate = curTemplate;

            if (this.f_IsActualElementsOnTemplate(curTemplate))
            {
                return(f_SaveTemplate(curTemplate, elements, m_Log));
            }

            using (var transaction = m_DataContextMegaTemplate.Database.BeginTransaction())
            {
                try
                {
                    newTemplate = f_UpdateTemplate(newTemplate);

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

            return(newTemplate);
        }
Example #4
0
        private void Ctrl_ElementNew_Click(object sender, EventArgs e)
        {
            using (var transaction = Cl_App.m_DataContext.Database.BeginTransaction())
            {
                try
                {
                    Cl_EntityLog eLog       = new Cl_EntityLog();
                    Cl_Element   newElement = (Cl_Element)Activator.CreateInstance(typeof(Cl_Element));
                    eLog.f_SetEntity(newElement);
                    Cl_Group group = null;
                    if (p_SelectedGroup != null && p_SelectedGroup.p_Group != null)
                    {
                        group = p_SelectedGroup.p_Group;
                    }
                    Dlg_EditorElement dlg = new Dlg_EditorElement();
                    dlg.Text = "Новый элемент";
                    if (group != null)
                    {
                        newElement.p_ParentGroup  = p_SelectedGroup.p_Group;
                        dlg.ctrl_LGroupValue.Text = p_SelectedGroup.p_Group.p_Name;
                    }
                    if (dlg.ShowDialog() != DialogResult.OK)
                    {
                        return;
                    }
                    newElement.p_Name        = dlg.ctrl_TBName.Text;
                    newElement.p_Comment     = dlg.ctrl_TBDecs.Text;
                    newElement.p_ElementType = (Cl_Element.E_ElementsTypes)dlg.ctrl_CB_ControlType.f_GetSelectedItem();
                    newElement.p_IsPartPre   = true;
                    if (dlg.ctrl_TBName.Text.Length > 0)
                    {
                        newElement.p_PartPre = dlg.ctrl_TBName.Text[0].ToString().ToUpper();
                        if (dlg.ctrl_TBName.Text.Length > 1)
                        {
                            newElement.p_PartPre += dlg.ctrl_TBName.Text.Substring(1, dlg.ctrl_TBName.Text.Length - 1);
                        }
                    }
                    newElement.p_SymmetryParamLeft  = "Слева";
                    newElement.p_SymmetryParamRight = "Справа";
                    Cl_App.m_DataContext.p_Elements.Add(newElement);

                    Cl_App.m_DataContext.SaveChanges();
                    newElement.p_ElementID = newElement.p_ID;
                    Cl_App.m_DataContext.SaveChanges();
                    eLog.f_SaveEntity(newElement);
                    transaction.Commit();

                    Ctrl_TreeNodeElement newNode = new Ctrl_TreeNodeElement(group, newElement);
                    SelectedNode.Nodes.Add(newNode);
                    SelectedNode = newNode;
                    e_AfterCreateElement?.Invoke(this, new TreeViewEventArgs(newNode));
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    MonitoringStub.Error("Error_Tree", "При создании нового элемента произошла ошибка", ex, null, null);
                    return;
                }
            }
        }
 private void f_Refresh()
 {
     try
     {
         m_Patterns = Cl_App.m_DataContext.p_RecordsPatterns.Include(p => p.p_Template).Include(p => p.p_CategoryClinic).Include(p => p.p_CategoryTotal)
                      .Include(p => p.p_Values).Include(r => r.p_Values.Select(v => v.p_Params)).Where(p => p.p_DoctorID == m_UserId).ToList();
         ctrlTablePatterns.DataSource = m_Patterns;
         foreach (DataGridViewColumn col in ctrlTablePatterns.Columns)
         {
             if (col.Name == p_Name.Name)
             {
                 col.Width      = p_Name.Width;
                 col.HeaderText = p_Name.HeaderText;
             }
             else if (col.Name == "p_Template")
             {
                 col.Width      = p_TemplateName.Width;
                 col.HeaderText = p_TemplateName.HeaderText;
             }
             else
             {
                 col.Visible = false;
             }
         }
     }
     catch (Exception er)
     {
         MonitoringStub.Error("Error_Editor", "Не удалось обновить список патернов", er, null, null);
     }
 }
 private void f_SyncBMK()
 {
     if (m_SelectedRecord != null)
     {
         if (!m_SelectedRecord.p_IsSyncBMK)
         {
             using (var transaction = Cl_App.m_DataContext.Database.BeginTransaction())
             {
                 try
                 {
                     m_SelectedRecord.p_DateSyncBMK = DateTime.Now;
                     Cl_App.m_DataContext.SaveChanges();
                     Cl_EntityLog.f_CustomMessageLog(m_SelectedRecord, "Синхронизация записи с БМК");
                     transaction.Commit();
                     ctrlBReportSyncBMK.Visible = ctrlMISyncBMK.Visible = false;
                 }
                 catch
                 {
                     m_SelectedRecord.p_DateSyncBMK = null;
                     transaction.Rollback();
                     MonitoringStub.Error("Error_Tree", "Не удалось синхронизировать запись с БМК", null, null, null);
                 }
             }
         }
     }
 }
        private void ctrlBReportAddRecord_Click(object sender, System.EventArgs e)
        {
            var dlg = new Dlg_RecordSelectSource();

            if (dlg.ShowDialog(this) == DialogResult.OK)
            {
                try
                {
                    if (dlg.p_SelectedTemplate != null)
                    {
                        Cl_Record record = new Cl_Record();
                        record.p_DateCreate     = DateTime.Now;
                        record.p_DateLastChange = record.p_DateCreate;
                        record.f_SetTemplate(dlg.p_SelectedTemplate);
                        record.p_MedicalCard   = Cl_SessionFacade.f_GetInstance().p_MedicalCard;
                        record.p_MedicalCardID = record.p_MedicalCard.p_ID;
                        record.p_ClinicName    = Cl_SessionFacade.f_GetInstance().p_Doctor.p_ClinicName;
                        record.f_SetDoctor(Cl_SessionFacade.f_GetInstance().p_Doctor);
                        var dlgRecord = new Dlg_Record();
                        dlgRecord.e_Save  += DlgRecord_e_Save;
                        dlgRecord.p_Record = record;
                        Cl_EntityLog.f_CustomMessageLog(E_EntityTypes.UIEvents, string.Format("Создание новой записи. Шаблон {0}", record.p_Template.p_Name));
                        dlgRecord.ShowDialog(this);
                    }
                }
                catch (Exception er)
                {
                    MonitoringStub.Error("Error_Editor", "Не удалось добавить запись", er, null, null);
                }
            }
        }
Example #8
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);
                    }
                }
            }
        }
        /// <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>
 /// <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);
     }
 }
        private void ctrlAdd_Click(object sender, EventArgs e)
        {
            var dlg = new Dlg_RecordPatternSelectSource();

            if (dlg.ShowDialog(this) == DialogResult.OK)
            {
                if (dlg.p_SelectedTemplate != null)
                {
                    try
                    {
                        Cl_RecordPattern pattern = new Cl_RecordPattern();
                        pattern.p_ClinicName = Cl_SessionFacade.f_GetInstance().p_Doctor.p_ClinicName;
                        pattern.f_SetDoctor(Cl_SessionFacade.f_GetInstance().p_Doctor);
                        pattern.f_SetTemplate(dlg.p_SelectedTemplate);
                        var dlgPattern = new Dlg_RecordPattern();
                        dlgPattern.p_RecordPattern = pattern;
                        dlgPattern.e_Save         += DlgPattern_e_Save;
                        dlgPattern.ShowDialog(this);
                    }
                    catch (Exception er)
                    {
                        MonitoringStub.Error("Error_Editor", "Не удалось добавить новый патерн", er, null, null);
                    }
                }
            }
        }
Example #12
0
        public void f_SetRecord(Cl_Record a_Record)
        {
            m_Record = a_Record;
            if (m_Record != null)
            {
                if (m_Record.p_MedicalCard != null)
                {
                    ctrlPatientFIO.Text = string.Format("{0}, {1}, {2} ({3})", m_Record.p_MedicalCard.p_PatientFIO,
                                                        m_Record.p_MedicalCard.p_PatientSex == Core.Permision.Cl_User.E_Sex.Man ? "М" : m_Record.p_MedicalCard.p_PatientSex == Core.Permision.Cl_User.E_Sex.Female ? "Ж" : "Нет данных",
                                                        m_Record.p_MedicalCard.p_PatientDateBirth.ToShortDateString(), m_Record.p_MedicalCard.f_GetPatientAgeByMonthText(m_Record.p_DateCreate));
                    ctrlTitle.Text = m_Record.p_Title;
                    if (m_Record.p_DateReception.Year >= 1980)
                    {
                        ctrlDTPDateReception.Value = m_Record.p_DateReception;
                        ctrlDTPTimeReception.Value = m_Record.p_DateReception;
                    }
                    else
                    {
                        ctrlDTPDateReception.Value = DateTime.Now;
                        ctrlDTPTimeReception.Value = DateTime.Now;
                    }
                    if (m_Record.p_Version == 0)
                    {
                        ctrl_Version.Text = "Черновик";
                    }
                    else
                    {
                        ctrl_Version.Text = m_Record.p_Version.ToString();
                    }
                }
                if (m_Record.p_Template != null)
                {
                    try
                    {
                        Cl_TemplatesFacade.f_GetInstance().f_LoadTemplatesElements(m_Record.p_Template);
                        Text = string.Format("Запись \"{0}\" v{1}", m_Record.p_Template.p_Name, ConfigurationManager.AppSettings["Version"]);
                        f_UpdateControls();
                    }
                    catch (Exception er)
                    {
                        MonitoringStub.Error("Error_Editor", "Не удалось установить запись", er, null, null);
                    }
                }
                else if (m_Record.p_Type == E_RecordType.FinishedFile)
                {
                    try
                    {
                        Text = string.Format("Запись c готовым файлом v{0}", ConfigurationManager.AppSettings["Version"]);
                        f_UpdateControls();
                    }
                    catch (Exception er)
                    {
                        MonitoringStub.Error("Error_Editor", "Не удалось установить запись", er, null, null);
                    }
                }

                m_Log.f_SetEntity(m_Record);
            }
        }
        public F_Main(string[] args)
        {
            try
            {
                this.FormClosing += F_Main_FormClosing;
                Tag = string.Format("Мегашаблон v{0}", ConfigurationManager.AppSettings["Version"]);
                if (Cl_App.Initialize())
                {
                    if (f_InitSession(args))
                    {
                        Cl_SessionFacade sess = Cl_SessionFacade.f_GetInstance();
                        Cl_EntityLog.f_CustomMessageLog(E_EntityTypes.AppEvents, string.Format("Запуск ЭМК. Пользователь: {0}/({1}). Пациент: {2}/({3})", sess.p_Doctor.f_GetInitials(), sess.p_Doctor.p_UserID, sess.p_Patient.f_GetInitials(), sess.p_Patient.p_UserID));


                        this.Font = new System.Drawing.Font(ConfigurationManager.AppSettings["FontFamily"],
                                                            float.Parse(ConfigurationManager.AppSettings["FontSize"]),
                                                            (System.Drawing.FontStyle) int.Parse(ConfigurationManager.AppSettings["FontStyle"]),
                                                            System.Drawing.GraphicsUnit.Point, ((byte)(204)));
                        InitializeComponent();

                        string rolesVal = "";
                        var    role     = Cl_SessionFacade.f_GetInstance().p_Doctor.p_Permission.p_Role;
                        var    memInfo  = typeof(E_Roles).GetMember(typeof(E_Roles).GetEnumName(role));
                        var    descriptionAttributes = memInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false);
                        if (descriptionAttributes.Length > 0)
                        {
                            rolesVal = ((DescriptionAttribute)descriptionAttributes[0]).Description;
                        }

                        ctrlSessionInfo.Text = string.Format("Пользователь: {0}, {1} | Расположение: {2}", Cl_SessionFacade.f_GetInstance().p_Doctor.p_FIO, rolesVal, Cl_SessionFacade.f_GetInstance().p_Doctor.p_ClinicName);

                        p_PanelManager = new UI_PanelManager(ctrl_CustomControls);
                        bool visibleEditor = false;
                        visibleEditor       |= menuMegaTemplate.Visible = Cl_SessionFacade.f_GetInstance().p_Doctor.p_Permission.p_IsEditMegaTemplates;
                        visibleEditor       |= menuTemplate.Visible = Cl_SessionFacade.f_GetInstance().p_Doctor.p_Permission.p_IsEditTemplates;
                        visibleEditor       |= menuMegaTemplateDeleted.Visible = Cl_SessionFacade.f_GetInstance().p_Doctor.p_Permission.p_IsShowDeleted;
                        visibleEditor       |= menuCatalogs.Visible = Cl_SessionFacade.f_GetInstance().p_Doctor.p_Permission.p_IsEditCatalogs;
                        visibleEditor       |= menuPatterns.Visible = Cl_SessionFacade.f_GetInstance().p_Doctor.p_Permission.p_IsEditAllRecords || Cl_SessionFacade.f_GetInstance().p_Doctor.p_Permission.p_IsEditSelfRecords;
                        ctrlMIEditor.Visible = visibleEditor;

                        ctrlMISettingsPrint.Checked = Cl_SessionFacade.f_GetInstance().p_SettingsPrintWithParams;

                        f_SetControl <UC_Records>();
                    }
                    else
                    {
                        Application.Exit();
                    }
                }
                else
                {
                    Application.Exit();
                }
            } catch (Exception er)
            {
                MonitoringStub.Error("Error_App", "В приложении возникла ошибка", er, null, null);
            }
        }
        private void ctrlDelete_Click(object sender, EventArgs e)
        {
            Cl_Category cat = null;

            if (ctrlCategoriesTab.SelectedTab == ctrlTabTotal)
            {
                cat = (Cl_Category)ctrlCategoriesTotal.SelectedRows[0].DataBoundItem;
            }
            else if (ctrlCategoriesTab.SelectedTab == ctrlTabClinik)
            {
                cat = (Cl_Category)ctrlCategoriesClinik.SelectedRows[0].DataBoundItem;
            }
            if (cat != null)
            {
                if (MessageBox.Show($"Удалить категорию \"{cat.p_Name}\"?", "Удаление категории", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes)
                {
                    return;
                }
                using (var transaction = Cl_App.m_DataContext.Database.BeginTransaction())
                {
                    try
                    {
                        if (ctrlCategoriesTab.SelectedTab == ctrlTabTotal)
                        {
                            if (ctrlCategoriesTotal.SelectedRows.Count == 1)
                            {
                                if (cat != null)
                                {
                                    Cl_App.m_DataContext.p_Categories.Remove(cat);
                                    Cl_App.m_DataContext.SaveChanges();
                                    transaction.Commit();
                                    f_RefreshTotal();
                                }
                            }
                        }
                        else if (ctrlCategoriesTab.SelectedTab == ctrlTabClinik)
                        {
                            if (ctrlCategoriesClinik.SelectedRows.Count == 1)
                            {
                                if (cat != null)
                                {
                                    Cl_App.m_DataContext.p_Categories.Remove(cat);
                                    Cl_App.m_DataContext.SaveChanges();
                                    transaction.Commit();
                                    f_RefreshClinik();
                                }
                            }
                        }
                    }
                    catch
                    {
                        transaction.Rollback();
                        MonitoringStub.Error("Error_Tree", "Нельзя удалить категорию", null, null, null);
                    }
                }
            }
        }
Example #15
0
        private void Ctrl_ElementDelete_Click(object sender, EventArgs e)
        {
            if (p_SelectedElement == null && p_SelectedElement.p_Element == null)
            {
                return;
            }
            if (MessageBox.Show($"Удалить элемент \"{p_SelectedElement.p_Element.p_Name}\"?", "Удаление элемента", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes)
            {
                return;
            }

            using (var transaction = Cl_App.m_DataContext.Database.BeginTransaction())
            {
                try
                {
                    Cl_EntityLog eLog = new Cl_EntityLog();
                    var          els  = Cl_App.m_DataContext.p_Elements.Where(el => el.p_ElementID == p_SelectedElement.p_Element.p_ElementID).OrderByDescending(v => v.p_Version);
                    if (els != null)
                    {
                        Cl_Element lastVersion = els.FirstOrDefault();
                        eLog.f_SetEntity(lastVersion);
                        bool isChange = false;
                        foreach (Cl_Element el in els)
                        {
                            el.p_IsDelete = true;
                            isChange      = true;
                        }
                        if (isChange)
                        {
                            Cl_App.m_DataContext.SaveChanges();
                            eLog.f_SaveEntity(lastVersion);
                            transaction.Commit();

                            if (!p_IsShowDeleted)
                            {
                                SelectedNode.Remove();
                            }
                            else
                            {
                                p_SelectedElement.p_Element = p_SelectedElement.p_Element;
                            }
                        }
                    }
                    else
                    {
                        MonitoringStub.Error("Error_Tree", "Не найдена элемент", new Exception("EX ERROR"), "p_SelectedElement.p_Element.p_ElementID = " + p_SelectedElement.p_Element.p_ElementID, null);
                    }
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    MonitoringStub.Error("Error_Tree", "При удалении элемента произошла ошибка", ex, null, null);
                    return;
                }
            }
        }
Example #16
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);
                }
            }
        }
 /// <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_PatientID">ID пациента</param>
 public List <Cl_MedicalCard> f_GetMedicalCardsByPatient(int a_PatientID)
 {
     if (m_DataContextMegaTemplate != null)
     {
         return(m_DataContextMegaTemplate.p_MedicalCards.Where(mc => mc.p_PatientID == a_PatientID).ToList());
     }
     else
     {
         MonitoringStub.Error("Error_MedicalCardsFacade", "Не инициализирован фасад", null, null, null);
         return(null);
     }
 }
        private void ctrlEdit_Click(object sender, EventArgs e)
        {
            var wEdit = new F_CategoryEdit();

            try
            {
                if (ctrlCategoriesTab.SelectedTab == ctrlTabTotal)
                {
                    if (ctrlCategoriesTotal.SelectedRows.Count == 1)
                    {
                        var cat = (Cl_Category)ctrlCategoriesTotal.SelectedRows[0].DataBoundItem;
                        if (cat != null)
                        {
                            wEdit.Text = string.Format("Изменение категории \"{0}\"", cat.p_Name);
                            wEdit.ctrlCategoryType.Text = "Общая категория";
                            wEdit.ctrlCategotyName.Text = cat.p_Name;
                            if (wEdit.ShowDialog() == DialogResult.OK)
                            {
                                cat.p_Name = wEdit.ctrlCategotyName.Text;
                                Cl_App.m_DataContext.SaveChanges();
                                m_SelectedTotal = cat;
                                f_RefreshTotal();
                            }
                        }
                    }
                }
                else if (ctrlCategoriesTab.SelectedTab == ctrlTabClinik)
                {
                    if (ctrlCategoriesClinik.SelectedRows.Count == 1)
                    {
                        var cat = (Cl_Category)ctrlCategoriesClinik.SelectedRows[0].DataBoundItem;
                        if (cat != null)
                        {
                            wEdit.Text = string.Format("Изменение категории \"{0}\"", cat.p_Name);
                            wEdit.ctrlCategoryType.Text = "Клиническая категория";
                            wEdit.ctrlCategotyName.Text = cat.p_Name;
                            if (wEdit.ShowDialog() == DialogResult.OK)
                            {
                                cat.p_Name = wEdit.ctrlCategotyName.Text;
                                Cl_App.m_DataContext.SaveChanges();
                                m_SelectedClinik = cat;
                                f_RefreshClinik();
                            }
                        }
                    }
                }
            }
            catch (Exception er)
            {
                MonitoringStub.Error("Error_Editor", "Не удалось отредактировать категорию", er, null, null);
            }
        }
Example #20
0
 private void ctrlBRating_Click(object sender, EventArgs e)
 {
     try
     {
         Dlg_RatingViewer viewer = new Dlg_RatingViewer();
         viewer.f_LoadRating(p_Record);
         viewer.ShowDialog(this);
     }
     catch (Exception er)
     {
         MonitoringStub.Error("Error_Editor", "Не удалось открыть оценку", er, null, null);
     }
 }
Example #21
0
 private void ctrlBHistory_Click(object sender, EventArgs e)
 {
     try
     {
         Dlg_HistoryViewer viewer = new Dlg_HistoryViewer();
         viewer.LoadHistory(false, E_EntityTypes.Records, p_Record.p_RecordID);
         viewer.ShowDialog(this);
     }
     catch (Exception er)
     {
         MonitoringStub.Error("Error_Editor", "Не удалось открыть истории", er, null, null);
     }
 }
 /// <summary>Присоединение медкарт</summary>
 /// <param name="a_SourceNumber">Номер источника медкарта</param>
 /// <param name="a_SourcePatientID">ID источника пациента</param>
 /// <param name="a_TargetNumber">Номер адресата медкарта</param>
 /// <param name="a_TargetPatientID">ID адресата пациента</param>
 public bool f_MergeMedicalCards(string a_SourceNumber, int a_SourcePatientID, string a_TargetNumber, int a_TargetPatientID)
 {
     if (m_DataContextMegaTemplate != null)
     {
         var sourceMedicalCard = f_GetMedicalCard(a_SourceNumber, a_SourcePatientID);
         if (sourceMedicalCard != null)
         {
             var targetMedicalCard = f_GetMedicalCard(a_TargetNumber, a_TargetPatientID);
             if (targetMedicalCard != null)
             {
                 try
                 {
                     var records = Cl_RecordsFacade.f_GetInstance().f_GetRecords(sourceMedicalCard);
                     if (records != null)
                     {
                         foreach (var record in records)
                         {
                             record.p_MedicalCardID = targetMedicalCard.p_ID;
                             record.p_MedicalCard   = targetMedicalCard;
                         }
                     }
                     sourceMedicalCard.p_DateDelete = DateTime.Now;
                     targetMedicalCard.p_DateMerge  = DateTime.Now;
                     m_DataContextMegaTemplate.SaveChanges();
                     return(true);
                 }
                 catch (Exception er)
                 {
                     MonitoringStub.Error("Error_MergeMedicalCards", "Не удалось присоединить медкарты", er, null, null);
                     return(false);
                 }
             }
             else
             {
                 MonitoringStub.Error("Error_MergeMedicalCards", "Не удалось найти медкарту адресат", null, null, null);
                 return(false);
             }
         }
         else
         {
             MonitoringStub.Error("Error_MergeMedicalCards", "Не удалось найти медкарту источник", null, null, null);
             return(false);
         }
     }
     else
     {
         MonitoringStub.Error("Error_MedicalCardsFacade", "Не инициализирован фасад", null, null, null);
         return(false);
     }
 }
        public static bool Initialize()
        {
            if (!_IsInit)
            {
                string localResourcesPath = "";
                try
                {
                    Configuration config = ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location);
                    var           con    = config.ConnectionStrings.ConnectionStrings["MedicalChartDatabase"];
                    localResourcesPath = config.AppSettings.Settings["LocalResourcesPath"].Value;
                    if (con == null)
                    {
                        MonitoringStub.Error("Error_AppInit", "Отсутствует настройка подключения к БД MedicalChartDatabase в конфигурационном фале", null, null, null);
                        return(false);
                    }
                    m_DataContext = new Cl_DataContextMegaTemplate(con.ConnectionString);

                    m_DataContext.Database.Connection.Open();

                    m_DataContext.f_Init();
                }
                catch (Exception er)
                {
                    MonitoringStub.Error("Error_AppInit", "Не удалось подключиться к базе данных", er, null, null);
                    return(false);
                }
                if (!Cl_TemplatesFacade.f_GetInstance().f_Init(m_DataContext))
                {
                    MonitoringStub.Error("Error_AppInit", "Не удалось инициализировать фасад работы с шаблонами", null, null, null);
                    return(false);
                }
                if (!Cl_RecordsFacade.f_GetInstance().f_Init(m_DataContext, localResourcesPath))
                {
                    MonitoringStub.Error("Error_AppInit", "Не удалось инициализировать фасад работы с записями", null, null, null);
                    return(false);
                }
                if (!Cl_MedicalCardsFacade.f_GetInstance().f_Init(m_DataContext))
                {
                    MonitoringStub.Error("Error_AppInit", "Не удалось инициализировать фасад работы с медкартами", null, null, null);
                    return(false);
                }
                if (!Cl_CatalogsFacade.f_GetInstance().f_Init(m_DataContext))
                {
                    MonitoringStub.Error("Error_AppInit", "Не удалось инициализировать фасад работы со справочниками", null, null, null);
                    return(false);
                }
                _IsInit = true;
            }
            return(_IsInit);
        }
        /// <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);
            }
        }
Example #25
0
        private void Ctrl_ImageNew_Click(object sender, EventArgs e)
        {
            using (var transaction = Cl_App.m_DataContext.Database.BeginTransaction())
            {
                try
                {
                    Cl_EntityLog eLog = new Cl_EntityLog();

                    Cl_Element newElement = (Cl_Element)Activator.CreateInstance(typeof(Cl_Element));
                    eLog.f_SetEntity(newElement);
                    Cl_Group group = null;
                    if (p_SelectedGroup != null && p_SelectedGroup.p_Group != null)
                    {
                        group = p_SelectedGroup.p_Group;
                    }
                    Dlg_EditorImage dlg = new Dlg_EditorImage();
                    dlg.Text = "Новый рисунок";
                    if (group != null)
                    {
                        newElement.p_ParentGroup  = p_SelectedGroup.p_Group;
                        dlg.ctrl_LGroupValue.Text = p_SelectedGroup.p_Group.p_Name;
                    }
                    if (dlg.ShowDialog() != DialogResult.OK)
                    {
                        return;
                    }
                    newElement.p_Name        = dlg.ctrl_TBName.Text;
                    newElement.p_Comment     = dlg.ctrl_TBDecs.Text;
                    newElement.p_ElementType = Cl_Element.E_ElementsTypes.Image;
                    Cl_App.m_DataContext.p_Elements.Add(newElement);
                    Cl_App.m_DataContext.SaveChanges();
                    newElement.p_ElementID = newElement.p_ID;
                    Cl_App.m_DataContext.SaveChanges();
                    eLog.f_SaveEntity(newElement);
                    transaction.Commit();

                    Ctrl_TreeNodeElement newNode = new Ctrl_TreeNodeElement(group, newElement);
                    SelectedNode.Nodes.Add(newNode);
                    SelectedNode = newNode;
                    e_AfterCreateElement?.Invoke(this, new TreeViewEventArgs(newNode));
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    MonitoringStub.Error("Error_Tree", "При создании нового элемента произошла ошибка", ex, null, null);
                    return;
                }
            }
        }
Example #26
0
 private void f_PopulateGroup()
 {
     try
     {
         Cl_Group[] groups = Cl_App.m_DataContext.p_Groups.Include(g => g.p_SubGroups).Where(g => g.p_Type == Cl_Group.E_Type.Elements && g.p_ParentID == null && (p_IsShowDeleted ? true : !g.p_IsDelete)).ToArray();
         foreach (Cl_Group group in groups)
         {
             f_PopulateTreeGroup(group, ctrl_TreeElements.Nodes);
         }
     }
     catch (Exception er)
     {
         MonitoringStub.Error("Error_Editor", "Не удалось сформировать дерево элементов", er, null, null);
     }
 }
 private void f_InitTreeView()
 {
     try
     {
         Cl_Group[] groups = Cl_App.m_DataContext.p_Groups.Include(g => g.p_SubGroups).Where(g => g.p_Type == Cl_Group.E_Type.Templates && g.p_ParentID == null && !g.p_IsDelete).ToArray();
         foreach (Cl_Group group in groups)
         {
             f_PopulateTreeGroup(group, ctrl_TreeTemplates.Nodes);
         }
     }
     catch (Exception er)
     {
         MonitoringStub.Error("Error_Editor", "Не удалось инициализировать дерево шаблонов", er, null, null);
     }
 }
Example #28
0
        protected override void f_TreeView_DragDrop(object sender, DragEventArgs e, Ctrl_TreeNodeGroup a_TargetNodeGroup)
        {
            if (a_TargetNodeGroup != null)
            {
                using (var transaction = Cl_App.m_DataContext.Database.BeginTransaction())
                {
                    try
                    {
                        Ctrl_TreeNodeElement draggedNodeElement = (Ctrl_TreeNodeElement)e.Data.GetData(typeof(Ctrl_TreeNodeElement));
                        if (e.Effect == DragDropEffects.Move)
                        {
                            Cl_EntityLog eLog = new Cl_EntityLog();
                            eLog.f_SetEntity(draggedNodeElement.p_Element);

                            var elsDraggeds = Cl_App.m_DataContext.p_Elements.Where(el => el.p_ElementID == draggedNodeElement.p_Element.p_ElementID);
                            if (elsDraggeds != null)
                            {
                                bool isChange = false;
                                foreach (Cl_Element el in elsDraggeds)
                                {
                                    //el.p_ParentGroupID = a_TargetNodeGroup.p_Group.p_ID;
                                    el.p_ParentGroup = a_TargetNodeGroup.p_Group;
                                    isChange         = true;
                                }
                                if (isChange)
                                {
                                    Cl_App.m_DataContext.SaveChanges();
                                    eLog.f_SaveEntity(draggedNodeElement.p_Element);
                                    transaction.Commit();
                                    draggedNodeElement.Remove();
                                    a_TargetNodeGroup.Nodes.Insert(f_GetFirstGroupInNode(a_TargetNodeGroup.Nodes), draggedNodeElement);
                                }
                            }
                            else
                            {
                                MonitoringStub.Error("Error_Tree", "Не найдена элемент для шаблонов", new Exception("EX ERROR"), "elsDraggeds = null", null);
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        transaction.Rollback();
                        MonitoringStub.Error("Error_Tree", "При перемещении элемента произошла ошибка", ex, null, null);
                        return;
                    }
                }
            }
        }
        private bool f_InitSession(string[] args)
        {
            Cl_User user = new Cl_User();

            user.p_ClinicName   = args[0];
            user.p_UserID       = int.Parse(args[1]);
            user.p_UserSurName  = args[2];
            user.p_UserName     = args[3];
            user.p_UserLastName = args[4];
            user.p_Permission   = new Cl_UserPermission(args[5]);
            int patientId = 0;

            if (int.TryParse(args[7], out patientId))
            {
                var medCard = Cl_MedicalCardsFacade.f_GetInstance().f_GetMedicalCard(args[6], patientId);
                if (medCard != null)
                {
                    if (user.p_Permission.p_Role == E_Roles.Assistant)
                    {
                        user.p_ParentUser = new Cl_User();
                        user.p_ParentUser.p_ClinicName   = user.p_ClinicName;
                        user.p_ParentUser.p_UserID       = int.Parse(args[10]);
                        user.p_ParentUser.p_UserSurName  = args[11];
                        user.p_ParentUser.p_UserName     = args[12];
                        user.p_ParentUser.p_UserLastName = args[13];
                    }

                    if (user.p_Permission.p_Role == E_Roles.Inspector)
                    {
                        return(Cl_SessionFacade.f_GetInstance().f_Init(user, medCard, DateTime.Parse(args[8]), DateTime.Parse(args[9])));
                    }
                    else
                    {
                        return(Cl_SessionFacade.f_GetInstance().f_Init(user, medCard));
                    }
                }
                else
                {
                    MonitoringStub.Error("Error_AppInit", "Не найдена медицинская карта", null, null, null);
                    return(false);
                }
            }
            else
            {
                MonitoringStub.Error("Error_AppInit", "Не верно указан Id пациента", null, null, null);
                return(false);
            }
        }
Example #30
0
        private void Ctrl_TreeView_DragDrop(object sender, DragEventArgs e)
        {
            Point targetPoint = PointToClient(new Point(e.X, e.Y));
            Ctrl_TreeNodeGroup targetNodeGroup  = GetNodeAt(targetPoint) as Ctrl_TreeNodeGroup;
            Ctrl_TreeNodeGroup draggedNodeGroup = (Ctrl_TreeNodeGroup)e.Data.GetData(typeof(Ctrl_TreeNodeGroup));

            if (draggedNodeGroup != null)
            {
                if (!draggedNodeGroup.Equals(targetNodeGroup) && !f_ContainsNode(draggedNodeGroup, targetNodeGroup))
                {
                    if (e.Effect == DragDropEffects.Move)
                    {
                        Cl_Group groupDragged = Cl_App.m_DataContext.p_Groups.FirstOrDefault(g => g.p_ID == draggedNodeGroup.p_Group.p_ID);
                        if (groupDragged != null)
                        {
                            if (targetNodeGroup == null)
                            {
                                groupDragged.p_ParentID = null;
                            }
                            else
                            {
                                groupDragged.p_ParentID = targetNodeGroup.p_Group.p_ID;
                            }
                            Cl_App.m_DataContext.SaveChanges();

                            draggedNodeGroup.Remove();
                            if (targetNodeGroup == null)
                            {
                                Nodes.Add(draggedNodeGroup);
                            }
                            else
                            {
                                targetNodeGroup.Nodes.Insert(f_GetFirstGroupInNode(targetNodeGroup.Nodes), draggedNodeGroup);
                            }
                        }
                        else
                        {
                            MonitoringStub.Error("Error_Tree", "Не найдена группа шаблонов", new Exception("EX ERROR"), "groupDragged = null", null);
                        }
                    }
                }
            }
            else
            {
                f_TreeView_DragDrop(sender, e, targetNodeGroup);
            }
        }