Exemplo n.º 1
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 void f_Init(Cl_Template a_Template)
        {
            if (a_Template != null)
            {
                Text = string.Format("Выбор паттерна для записи v{0}", ConfigurationManager.AppSettings["Version"]);
                InitializeComponent();

                var userId = Cl_SessionFacade.f_GetInstance().p_Doctor.p_UserID;
                ctrlTablePatterns.Columns.Clear();
                var patternsDb = 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 == userId);
                if (a_Template != null)
                {
                    patternsDb = patternsDb.Where(p => p.p_TemplateID == a_Template.p_ID);
                }
                m_Patterns = patternsDb.ToList();
                var patterns = m_Patterns.Select(p => new { p.p_ID, p.p_Name, p_TemplateName = p.p_Template.p_Name }).ToList();
                ctrlTablePatterns.DataSource            = patterns;
                ctrlTablePatterns.Columns[0].Visible    = false;
                ctrlTablePatterns.Columns[1].Width      = p_Name.Width;
                ctrlTablePatterns.Columns[1].HeaderText = p_Name.HeaderText;
                ctrlTablePatterns.Columns[2].Width      = p_TemplateName.Width;
                ctrlTablePatterns.Columns[2].HeaderText = p_TemplateName.HeaderText;
            }
        }
        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);
                    }
                }
            }
        }
        public void LoadHistory(bool onlyThisSesion, E_EntityTypes eType, int LoadForID = 1)
        {
            IOrderedQueryable <Cl_Log> logs = null;

            if (onlyThisSesion)
            {
                if (eType == E_EntityTypes.RecordsPatterns)
                {
                    logs = Cl_App.m_DataContext.p_Logs.Where(l => l.p_SessionID == Cl_SessionFacade.f_GetInstance().p_SessionID&& l.p_EntityType == eType).OrderByDescending(d => d.p_ChangeTime);
                }
                else
                {
                    logs = Cl_App.m_DataContext.p_Logs.Where(l => l.p_SessionID == Cl_SessionFacade.f_GetInstance().p_SessionID&& l.p_ElementID == LoadForID && l.p_EntityType == eType).OrderByDescending(d => d.p_ChangeTime);
                }
            }
            else
            {
                if (eType == E_EntityTypes.RecordsPatterns)
                {
                    logs = Cl_App.m_DataContext.p_Logs.Where(l => l.p_EntityType == eType).OrderByDescending(d => d.p_ChangeTime);
                }
                else
                {
                    logs = Cl_App.m_DataContext.p_Logs.Where(l => l.p_ElementID == LoadForID && l.p_EntityType == eType).OrderByDescending(d => d.p_ChangeTime);
                }
            }

            f_FillLogs(logs);
        }
        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);
                }
            }
        }
 private void M_WebBrowserPrint_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
 {
     if (m_SelectedRecord != null)
     {
         if (Cl_SessionFacade.f_GetInstance().p_SettingsPrintWithParams)
         {
             m_WebBrowserPrint.ShowPrintPreviewDialog();
         }
         else
         {
             m_WebBrowserPrint.Print();
         }
         if (p_IsPrintDoctor)
         {
             if (!m_SelectedRecord.p_IsPrintDoctor)
             {
                 m_SelectedRecord.p_DatePrintDoctor = DateTime.Now;
                 Cl_App.m_DataContext.SaveChanges();
             }
         }
         else
         {
             if (!m_SelectedRecord.p_IsPrintPatient)
             {
                 m_SelectedRecord.p_DatePrintPatient = DateTime.Now;
                 Cl_App.m_DataContext.SaveChanges();
             }
         }
     }
 }
        public UC_Records()
        {
            Tag = string.Format("Записи клиента v{0}", ConfigurationManager.AppSettings["Version"]);
            InitializeComponent();

            ctrlPDFViewer.setShowToolbar(false);
            ctrlPDFViewer.setPageMode("none");
            ctrlPDFViewer.setView("FitH");
            ctrlPDFViewer.Dock = DockStyle.Fill;

            p_DateForming.ValueType = typeof(DateTime);
            ctrlLPatientName.Text   = Cl_SessionFacade.f_GetInstance().p_Patient.p_FIO;
            m_Permission            = Cl_SessionFacade.f_GetInstance().p_Doctor.p_Permission;

            ctrlBReportAddRecordByFile.Visible = !Cl_SessionFacade.f_GetInstance().p_MedicalCard.p_IsDelete&& !Cl_SessionFacade.f_GetInstance().p_MedicalCard.p_IsArchive &&
                                                 (m_Permission.p_IsEditAllRecords || m_Permission.p_IsEditSelfRecords || m_Permission.p_IsEditArchive || m_Permission.p_IsEditAssistantRecords);
            ctrlBReportAddRecord.Visible = ctrlBReportAddPattern.Visible = !Cl_SessionFacade.f_GetInstance().p_MedicalCard.p_IsDelete&& !Cl_SessionFacade.f_GetInstance().p_MedicalCard.p_IsArchive &&
                                                                           (m_Permission.p_IsEditAllRecords || m_Permission.p_IsEditSelfRecords || m_Permission.p_IsEditAssistantRecords);

            ctrlBAddRecordFromRecord.Visible = false;
            ctrlBReportFormatPattern.Visible = false;

            m_WebBrowserPrint.Parent             = this;
            m_WebBrowserPrint.DocumentCompleted += M_WebBrowserPrint_DocumentCompleted;
            f_UpdateRecords();
        }
        /// <summary>
        /// Записывает индивидуальное сообщение лога для переданного объекта
        /// </summary>
        /// <param name="obj">Объект логирования</param>
        /// <param name="message">Сообщение лога</param>
        public static void f_CustomMessageLog(I_ELog obj, string message)
        {
            if (Cl_App.m_DataContext == null)
            {
                return;
            }

            Cl_ELogClassAttribute classAtr = Cl_EntityLog.f_GetClassAttribute <Cl_ELogClassAttribute>(obj);

            if (classAtr == null)
            {
                return;
            }

            Cl_Log outEvent = new Cl_Log
            {
                p_SessionID  = Cl_SessionFacade.f_GetInstance().p_SessionID,
                p_ElementID  = obj.p_GetLogEntityID,
                p_Version    = obj.p_Version,
                p_EntityType = classAtr.p_EntityType,
                p_ChangeTime = DateTime.Now,
                p_Event      = message,
                p_UserName   = Cl_SessionFacade.f_GetInstance().p_Doctor.p_FIO
            };

            Cl_App.m_DataContext.p_Logs.Add(outEvent);
            Cl_App.m_DataContext.SaveChanges();
        }
Exemplo n.º 9
0
        public UC_MedicalCards()
        {
            Tag = string.Format("Медицинские карты v{0}", ConfigurationManager.AppSettings["Version"]);
            InitializeComponent();

            ctrlLPatientName.Text = Cl_SessionFacade.f_GetInstance().p_Patient.p_FIO;
            f_UpdateMedicalCards();
        }
        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);
            }
        }
 public F_RecordsPatterns()
 {
     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();
     ctrlTablePatterns.Columns.Clear();
     m_UserId = Cl_SessionFacade.f_GetInstance().p_Doctor.p_UserID;
     f_Refresh();
 }
        private void ctrlBSave_Click(object sender, EventArgs e)
        {
            if (ctrlTBComment.Text == "" && MessageBox.Show("Поле \"Комментарий\" не заполенено.\nСохранить оценку без комментария?", "Сохранение оценки", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) != DialogResult.Yes)
            {
                return;
            }

            if (this.curRecord == null)
            {
                MessageBox.Show("Запись еще не сохранена!\nУстановка оценки невозможна.", "Оценка записи", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }

            Cl_Rating rating = new Cl_Rating();

            rating.p_RecordID = this.curRecord.p_RecordID;
            rating.p_Time     = DateTime.Now;
            rating.p_Comment  = ctrlTBComment.Text;
            rating.p_UserID   = Cl_SessionFacade.f_GetInstance().p_Doctor.p_UserID;
            rating.p_UserName = Cl_SessionFacade.f_GetInstance().p_Doctor.f_GetInitials();

            if (ctrlRBValue_1.Checked)
            {
                rating.p_Value = 1;
            }
            if (ctrlRBValue_2.Checked)
            {
                rating.p_Value = 2;
            }
            if (ctrlRBValue_3.Checked)
            {
                rating.p_Value = 3;
            }
            if (ctrlRBValue_4.Checked)
            {
                rating.p_Value = 4;
            }
            if (ctrlRBValue_5.Checked)
            {
                rating.p_Value = 5;
            }

            Cl_App.m_DataContext.p_Ratings.Add(rating);
            Cl_App.m_DataContext.SaveChanges();
            Cl_EntityLog.f_CustomMessageLog(E_EntityTypes.Rating, string.Format("Выставлена оценка {0} для записи: {1}, дата записи: {2}, клиника: {3}", rating.p_Value, this.curRecord.p_Title, this.curRecord.p_DateCreate, this.curRecord.p_ClinicName), this.curRecord.p_RecordID);

            f_LoadRatingTable(rating.p_RecordID);
            selfRating = rating;
            if (firstRating == null)
            {
                firstRating = rating;
            }
        }
Exemplo n.º 13
0
        public Dlg_Record()
        {
            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();

            ctrlBFormatByPattern.Visible = Cl_SessionFacade.f_GetInstance().p_Doctor.p_Permission.p_IsEditAllRecords || Cl_SessionFacade.f_GetInstance().p_Doctor.p_Permission.p_IsEditSelfRecords;
            ctrlBMKB.Visible             = Cl_SessionFacade.f_GetInstance().p_Doctor.p_Permission.p_Role != Core.Permision.E_Roles.Archivarius;

            this.Load += Dlg_Record_Load;
        }
 private bool f_GetEdited(Cl_Record a_Record)
 {
     if (a_Record != null)
     {
         var perm = Cl_SessionFacade.f_GetInstance().p_Doctor.p_Permission;
         return(!a_Record.p_IsAutomatic && !Cl_SessionFacade.f_GetInstance().p_MedicalCard.p_IsDelete&& !Cl_SessionFacade.f_GetInstance().p_MedicalCard.p_IsArchive &&
                ((perm.p_IsEditAllRecords || (perm.p_IsEditSelfRecords && a_Record.p_DoctorID == Cl_SessionFacade.f_GetInstance().p_Doctor.p_UserID) || (perm.p_IsEditAssistantRecords && a_Record.p_DoctorID == Cl_SessionFacade.f_GetInstance().p_Doctor.p_ParentUser?.p_UserID)) ||
                 (perm.p_IsEditArchive && a_Record.p_Type == E_RecordType.FinishedFile)));
     }
     else
     {
         return(false);
     }
 }
        /// <summary>
        /// Возвращает сформированный объект сообщения лога для текущего объекта
        /// </summary>
        private Cl_Log f_CreateEvent(I_ELog obj, string message)
        {
            Cl_Log outEvent = new Cl_Log
            {
                p_SessionID  = Cl_SessionFacade.f_GetInstance().p_SessionID,
                p_ElementID  = obj.p_GetLogEntityID,
                p_Version    = obj.p_Version,
                p_EntityType = this.entityLogType,
                p_ChangeTime = DateTime.Now,
                p_Event      = message,
                p_UserName   = Cl_SessionFacade.f_GetInstance().p_Doctor.p_FIO
            };

            return(outEvent);
        }
        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);
            }
        }
        public void f_LoadRating(Cl_Record p_Record)
        {
            this.curRecord = p_Record;

            int userID = Cl_SessionFacade.f_GetInstance().p_Doctor.p_UserID;

            selfRating  = Cl_App.m_DataContext.p_Ratings.Where(l => l.p_RecordID == p_Record.p_RecordID && l.p_UserID == userID).OrderByDescending(l => l.p_Time).FirstOrDefault();
            firstRating = Cl_App.m_DataContext.p_Ratings.Where(l => l.p_RecordID == p_Record.p_RecordID && l.p_UserID == userID).OrderBy(l => l.p_Time).FirstOrDefault();

            // Значения по умолчанию
            ctrlLAuthor.Text = Cl_SessionFacade.f_GetInstance().p_Doctor.f_GetInitials();
            ctrlLDate.Text   = DateTime.Now.ToString();

            f_FillRating(selfRating);
            f_LoadRatingTable(p_Record.p_RecordID);
        }
Exemplo n.º 18
0
        private void InitRating()
        {
            double rate  = 0;
            int    total = 0;

            if (p_Record == null)
            {
                return;
            }

            ctrlBRating.Visible = Cl_SessionFacade.f_GetInstance().p_Doctor.p_Permission.p_IsEditAllRatings&& p_Record != null && p_Record.p_Version > 0;

            try
            {
                IQueryable <Cl_Rating>      ratings = Cl_App.m_DataContext.p_Ratings.Where(l => l.p_RecordID == p_Record.p_RecordID);
                Dictionary <int, Cl_Rating> result  = new Dictionary <int, Cl_Rating>();

                foreach (Cl_Rating item in ratings)
                {
                    if (!result.ContainsKey(item.p_UserID))
                    {
                        result.Add(item.p_UserID, item);
                        continue;
                    }

                    if (result[item.p_UserID].p_Time < item.p_Time)
                    {
                        result[item.p_UserID] = item;
                    }
                }

                foreach (KeyValuePair <int, Cl_Rating> item in result)
                {
                    rate = rate + item.Value.p_Value;
                    total++;
                }

                if (rate > 0)
                {
                    this.Text += "   Оценка: " + Math.Round(rate / total, 1).ToString();
                }
            }
            catch (Exception er)
            {
                MonitoringStub.Error("Error_Editor", "Не удалось инициализировать оценку", er, null, null);
            }
        }
        private void f_UpdateRateEditingState(Cl_Rating rating)
        {
            bool allowEdit     = true;
            bool visibleReRate = true;

            //allowEdit &= (rating == null);
            allowEdit &= (rating != null && Cl_SessionFacade.f_GetInstance().p_Doctor.p_UserID == rating.p_UserID);
            allowEdit &= (rating != null && firstRating != null && firstRating.p_Time.AddDays(1) > DateTime.Now);
            allowEdit &= (rating != null && selfRating != null && rating.p_Time >= selfRating.p_Time);
            allowEdit |= rating == null;

            visibleReRate &= (selfRating != null && allowEdit == false);
            visibleReRate &= (selfRating != null && firstRating != null && firstRating.p_Time.AddDays(1) > DateTime.Now);
            visibleReRate &= (selfRating != null && Cl_SessionFacade.f_GetInstance().p_Doctor.p_UserID == selfRating.p_UserID);
            visibleReRate |= selfRating == null && allowEdit == false;

            f_SetVisibleElements(allowEdit);
            ctrlBReRate.Visible = visibleReRate;
        }
Exemplo n.º 20
0
 internal void FormatPaternFromRecord(Cl_Record a_Record)
 {
     if (a_Record == null)
     {
         return;
     }
     try
     {
         m_SourceRecord = a_Record;
         Cl_TemplatesFacade.f_GetInstance().f_LoadTemplatesElements(a_Record.p_Template);
         Cl_RecordPattern pattern = Cl_RecordsFacade.f_GetInstance().f_GetNewRecordPattern(a_Record);
         pattern.p_ClinicName = Cl_SessionFacade.f_GetInstance().p_Doctor.p_ClinicName;
         pattern.f_SetDoctor(Cl_SessionFacade.f_GetInstance().p_Doctor);
         this.p_RecordPattern = pattern;
     }
     catch (Exception er)
     {
         MonitoringStub.Error("Error_Editor", "Не удалось сформировать паттерн записей по записи", er, null, null);
     }
 }
        private void f_FillRating(Cl_Rating rating)
        {
            ctrlLAuthor.Text   = Cl_SessionFacade.f_GetInstance().p_Doctor.f_GetInitials();
            ctrlLDate.Text     = DateTime.Now.ToString();
            ctrlTBComment.Text = "";

            if (rating == null)
            {
                return;
            }

            ctrlLAuthor.Text   = rating.p_UserName;
            ctrlLDate.Text     = rating.p_Time.ToString();
            ctrlTBComment.Text = rating.p_Comment;

            ctrlRBValue_1.Checked = rating.p_Value == 1;
            ctrlRBValue_2.Checked = rating.p_Value == 2;
            ctrlRBValue_3.Checked = rating.p_Value == 3;
            ctrlRBValue_4.Checked = rating.p_Value == 4;
            ctrlRBValue_5.Checked = rating.p_Value == 5;
        }
        /// <summary>
        /// Записывает индивидуальное сообщение лога для переданного объекта
        /// </summary>
        /// <param name="obj">Объект логирования</param>
        /// <param name="message">Сообщение лога</param>
        public static void f_CustomMessageLog(E_EntityTypes entityType, string message, int id = 1, int version = 0)
        {
            if (Cl_App.m_DataContext == null)
            {
                return;
            }

            Cl_Log outEvent = new Cl_Log
            {
                p_SessionID  = Cl_SessionFacade.f_GetInstance().p_SessionID,
                p_ElementID  = id,
                p_Version    = version,
                p_EntityType = entityType,
                p_ChangeTime = DateTime.Now,
                p_Event      = message,
                p_UserName   = Cl_SessionFacade.f_GetInstance().p_Doctor.p_FIO
            };

            Cl_App.m_DataContext.p_Logs.Add(outEvent);
            Cl_App.m_DataContext.SaveChanges();
        }
        private void ctrlBReportAddRecordByFile_Click(object sender, EventArgs e)
        {
            Cl_Record record = new Cl_Record();

            record.p_DateCreate     = DateTime.Now;
            record.p_Type           = E_RecordType.FinishedFile;
            record.p_DateLastChange = record.p_DateCreate;
            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.p_Title = "Новая запись с готовым файлом";
            //record.p_CategoryTotalID = category.p_ID;
            //record.p_CategoryTotal = category;

            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, "Создание новой записи с готовым файлом");
            dlgRecord.ShowDialog(this);
        }
 private void ctrlMISettingsPrint_CheckedChanged(object sender, EventArgs e)
 {
     Cl_SessionFacade.f_GetInstance().p_SettingsPrintWithParams = ctrlMISettingsPrint.Checked;
 }
        private void f_OnSelectRow(DataGridViewRow row)
        {
            m_SelectedRecord = null;
            m_SelectedRow    = null;
            if (row != null && row is OutlookGridRow && !((OutlookGridRow)row).IsGroupRow && row.Tag != null)
            {
                try
                {
                    var record = m_SelectedRecord = m_Records.FirstOrDefault(r => r.p_ID == ((Cl_Record)row.Tag).p_ID);
                    if (record != null)
                    {
                        m_SelectedRow = row;
                        Cl_EntityLog.f_CustomMessageLog(E_EntityTypes.UIEvents, string.Format("Просмотр записи: {0}, дата записи: {1}, клиника: {2}", record.p_Title, record.p_DateCreate, record.p_ClinicName), record.p_RecordID);

                        ctrlPRecordInfo.Visible = true;
                        ctrlRecordInfo.Text     = string.Format("{0} {1} [{2}, {3}]", record.p_DateCreate.ToShortDateString(), record.p_Title, record.p_DateLastChange, record.p_DoctorFIO);

                        ctrlCMViewer.Enabled             = true;
                        ctrlBAddRecordFromRecord.Visible = ctrlBReportFormatPattern.Visible = !record.p_IsAutomatic && !Cl_SessionFacade.f_GetInstance().p_MedicalCard.p_IsDelete&& !Cl_SessionFacade.f_GetInstance().p_MedicalCard.p_IsArchive&& (m_Permission.p_IsEditAllRecords || m_Permission.p_IsEditSelfRecords);
                        ctrlBReportEdit.Visible          = ctrlMIEdit.Visible = f_GetEdited(record);
                        ctrlBReportDelete.Visible        = ctrlMIDelete.Visible = Cl_SessionFacade.f_GetInstance().p_Doctor.p_Permission.p_IsEditAllRecords || ((m_Permission.p_IsEditArchive || Cl_SessionFacade.f_GetInstance().p_Doctor.p_Permission.p_IsEditSelfRecords) && record.p_DoctorID == Cl_SessionFacade.f_GetInstance().p_Doctor.p_UserID);
                        ctrlBReportRating.Visible        = ctrlMIRating.Visible = m_Permission.p_IsEditAllRatings;
                        ctrlBReportSyncBMK.Visible       = ctrlMISyncBMK.Visible = !record.p_IsSyncBMK && record.p_IsPrintDoctor && m_Permission.p_IsEditArchive;
                        ctrlBReportPrintDoctor.Visible   = ctrlBReportPrintPatient.Visible = ctrlMIPrint.Visible = m_Permission.p_IsPrint;

                        if (record.p_Type == E_RecordType.FinishedFile)
                        {
                            if (record.p_FileType == E_RecordFileType.HTML)
                            {
                                ctrlHTMLViewer.DocumentText = record.f_GetDocumentTextDoctor(Application.StartupPath);
                                ctrlHTMLViewer.Visible      = true;
                                ctrlPDFViewer.Visible       = false;
                            }
                            else if (record.p_FileType == E_RecordFileType.PDF)
                            {
                                var path = string.Format("{0}medicalChartTemp.pdf", Path.GetTempPath());
                                record.p_FileBytes = Cl_RecordsFacade.f_GetInstance().f_GetFileFromSql(record);
                                File.WriteAllBytes(path, record.p_FileBytes);
                                ctrlPDFViewer.src = path;
                                ctrlPDFViewer.Show();
                                ctrlHTMLViewer.Visible = false;
                                ctrlPDFViewer.Visible  = true;
                            }
                            else if (record.p_FileType == E_RecordFileType.JFIF || record.p_FileType == E_RecordFileType.JIF || record.p_FileType == E_RecordFileType.JPE ||
                                     record.p_FileType == E_RecordFileType.JPEG || record.p_FileType == E_RecordFileType.JPG || record.p_FileType == E_RecordFileType.PNG || record.p_FileType == E_RecordFileType.GIF)
                            {
                                ctrlHTMLViewer.DocumentText = record.f_GetDocumentTextDoctor(Application.StartupPath);
                                ctrlHTMLViewer.Visible      = true;
                                ctrlPDFViewer.Visible       = false;
                            }
                        }
                        else
                        {
                            if (record.p_HTMLDoctor != null)
                            {
                                ctrlHTMLViewer.DocumentText = record.f_GetDocumentTextDoctor(Application.StartupPath);
                                ctrlHTMLViewer.Visible      = true;
                                ctrlPDFViewer.Visible       = false;
                            }
                            else
                            {
                                ctrlHTMLViewer.Visible = false;
                                ctrlPDFViewer.Visible  = false;
                            }
                        }
                    }
                    else
                    {
                        ctrlPRecordInfo.Visible = false;
                    }
                }
                catch (Exception er)
                {
                    MonitoringStub.Error("Error_Editor", "Не удалось отобразить запись", er, null, null);
                }
            }
            if (m_SelectedRecord == null)
            {
                ctrlCMViewer.Enabled             = false;
                ctrlPRecordInfo.Visible          = false;
                ctrlBReportFormatPattern.Visible = false;
                ctrlBReportEdit.Visible          = false;
                ctrlBReportRating.Visible        = false;
                ctrlBReportPrintDoctor.Visible   = ctrlBReportPrintPatient.Visible = false;
            }
        }
        private void f_UpdateRecords(Cl_Record selectedRecord = null)
        {
            try
            {
                var patientID  = Cl_SessionFacade.f_GetInstance().p_Patient.p_UserID;
                var patientUID = Cl_SessionFacade.f_GetInstance().p_Patient.p_UserUID;

                var records = Cl_App.m_DataContext.p_Records.Include(r => r.p_MedicalCard).AsQueryable();
                if (Cl_SessionFacade.f_GetInstance().p_Doctor.p_Permission.p_IsReadSelectedRecords)
                {
                    if (Cl_SessionFacade.f_GetInstance().p_DateStart != null && Cl_SessionFacade.f_GetInstance().p_DateEnd != null)
                    {
                        var dateStart = Cl_SessionFacade.f_GetInstance().p_DateStart;
                        var dateEnd   = Cl_SessionFacade.f_GetInstance().p_DateEnd;
                        records = records.Where(r => r.p_DateLastChange >= dateStart && r.p_DateLastChange <= dateEnd);
                    }
                    else
                    {
                        MonitoringStub.Error("Error_Editor", "Для проверяющего С/К не указан период", null, null, null);
                    }
                }

                records = records.Where(r => p_IsShowDeleted ? true : !r.p_IsDelete && r.p_MedicalCard != null && (r.p_MedicalCard.p_PatientUID == patientUID || r.p_MedicalCard.p_PatientID == patientID));

                m_Records = records.GroupBy(e => e.p_RecordID).Select(grp => grp
                                                                      .OrderByDescending(v => v.p_Version).FirstOrDefault())
                            .Include(r => r.p_CategoryTotal).Include(r => r.p_CategoryClinic).Include(r => r.p_Values).Include(r => r.p_Template).Include(r => r.p_Values.Select(v => v.p_Params)).ToArray();

                m_SelectedRecordBlock = true;
                ctrl_TRecords.BindData(null, null);
                ctrl_TRecords.Columns.AddRange(p_MedicalCardNumber, p_ClinikName, p_DateForming, p_CategoryTotal, p_Title, p_DoctorFIO);
                foreach (var record in m_Records)
                {
                    OutlookGridRow row = new OutlookGridRow();
                    row.CreateCells(ctrl_TRecords,
                                    record.p_MedicalCardNumber,
                                    record.p_ClinicName,
                                    record.p_DateReception.ToString("dd.MM.yyyy HH:mm"),
                                    record.p_CategoryTotal != null ? record.p_CategoryTotal.p_Name : "",
                                    record.p_Title,
                                    record.p_DoctorFIO);
                    row.Tag = record;
                    ctrl_TRecords.Rows.Add(row);
                }
                ctrl_TRecords.Columns[0].Visible   = false;
                ctrl_TRecords.GroupTemplate.Column = ctrl_TRecords.Columns[0];

                ctrl_TRecords.Sort(ctrl_TRecords.Columns[2], System.ComponentModel.ListSortDirection.Descending);
                m_SelectedRecordBlock = false;

                if (selectedRecord != null)
                {
                    foreach (OutlookGridRow row in ctrl_TRecords.Rows)
                    {
                        if (!row.IsGroupRow && ((Cl_Record)row.Tag).p_ID == selectedRecord.p_ID)
                        {
                            row.Selected = true;
                            break;
                        }
                    }
                }
            }
            catch (Exception er)
            {
                MonitoringStub.Error("Error_Editor", "Не удалось обновить записи", er, null, null);
            }
        }
Exemplo n.º 27
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);
                        }
                    }
                }
            }
        }