Ejemplo n.º 1
0
        /// <summary>Получение новой версии записи</summary>
        public Cl_Record f_GetNewRecord()
        {
            if (m_FileBytes == null || m_Record == null)
            {
                return(null);
            }
            var record = new Cl_Record();

            record.p_Type             = E_RecordType.FinishedFile;
            record.p_RecordID         = m_Record.p_RecordID;
            record.p_MedicalCardID    = m_Record.p_MedicalCardID;
            record.p_ClinicName       = m_Record.p_ClinicName;
            record.p_DateLastChange   = DateTime.Now;
            record.p_ClinicName       = m_Record.p_ClinicName;
            record.p_Title            = m_Record.p_Title;
            record.p_CategoryTotalID  = m_Record.p_CategoryTotalID;
            record.p_CategoryTotal    = m_Record.p_CategoryTotal;
            record.p_CategoryClinicID = m_Record.p_CategoryClinicID;
            record.p_CategoryClinic   = m_Record.p_CategoryClinic;
            record.p_DoctorID         = m_Record.p_DoctorID;
            record.p_DoctorSurName    = m_Record.p_DoctorSurName;
            record.p_DoctorName       = m_Record.p_DoctorName;
            record.p_DoctorLastName   = m_Record.p_DoctorLastName;
            record.p_MedicalCard      = m_Record.p_MedicalCard;
            record.p_DateCreate       = m_Record.p_DateCreate;
            record.p_Version          = m_Record.p_Version + 1;
            record.p_FileType         = m_FileType;
            record.p_FileBytes        = m_FileBytes;
            record.p_MKB1             = m_Record.p_MKB1;
            record.p_MKB2             = m_Record.p_MKB2;
            record.p_MKB3             = m_Record.p_MKB3;
            record.p_MKB4             = m_Record.p_MKB4;
            return(record);
        }
Ejemplo n.º 2
0
 /// <summary>Установка записи</summary>
 public void f_SetRecord(Cl_Record a_Record)
 {
     ctrlContent.Controls.Clear();
     m_Record = a_Record;
     if (m_Record != null)
     {
         if (m_Record.p_Version > 0)
         {
             if (m_Record.p_Values == null)
             {
                 var recs = Cl_App.m_DataContext.Entry(m_Record).Collection(g => g.p_Values).Query().Include(te => te.p_Element).Include(te => te.p_Element.p_Default).Include(te => te.p_Params);
                 recs.Load();
             }
         }
         if (m_Record.p_Values == null)
         {
             m_Record.p_Values = new List <Cl_RecordValue>();
         }
         f_AddControlsTemplate(m_Template);
         ctrlLMKB = new Label()
         {
             Width = 500
         };
         ctrlContent.Controls.Add(ctrlLMKB);
         f_UpdateMKB();
     }
     else
     {
         ctrlLMKB = 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);
                }
            }
        }
Ejemplo n.º 4
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);
            }
        }
        private void f_Edit(Cl_Record a_Record)
        {
            if (f_GetEdited(a_Record))
            {
                Cl_EntityLog.f_CustomMessageLog(E_EntityTypes.UIEvents, string.Format("Редактирование записи: {0}, дата записи: {1}, клиника: {2}", a_Record.p_Title, a_Record.p_DateCreate, a_Record.p_ClinicName), a_Record.p_RecordID);

                var dlgRecord = new Dlg_Record();
                dlgRecord.e_Save  += DlgRecord_e_Save;
                dlgRecord.p_Record = a_Record;
                dlgRecord.ShowDialog(this);
                Cl_EntityLog.f_CustomMessageLog(E_EntityTypes.UIEvents, string.Format("Выход из редактирования записи: {0}, дата записи: {1}, клиника: {2}", a_Record.p_Title, a_Record.p_DateCreate, a_Record.p_ClinicName), a_Record.p_RecordID);
            }
        }
 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);
     }
 }
 private void f_FormatPattern(Cl_Record a_Record)
 {
     if (a_Record != null && !a_Record.p_IsAutomatic && a_Record.p_Template != null)
     {
         //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);
         var dlgPattern = new Dlg_RecordPattern();
         //dlgPattern.p_RecordPattern = pattern;
         dlgPattern.FormatPaternFromRecord(a_Record);
         dlgPattern.ShowDialog(this);
     }
 }
        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);
        }
 private void f_AddRecordFromRecord(Cl_Record a_Record)
 {
     if (a_Record != null)
     {
         Cl_TemplatesFacade.f_GetInstance().f_LoadTemplatesElements(a_Record.p_Template);
         Cl_Record record = Cl_RecordsFacade.f_GetInstance().f_GetNewRecord(a_Record);
         record.p_ParentRecord = a_Record;
         if (record != null)
         {
             var dlgRecord = new Dlg_Record();
             dlgRecord.e_Save  += DlgRecord_e_Save;
             dlgRecord.p_Record = record;
             dlgRecord.ShowDialog(this);
         }
     }
 }
Ejemplo n.º 10
0
        /// <summary>Получение новой версии записи</summary>
        public Cl_Record f_GetNewRecord(bool a_IsRequired)
        {
            if (m_Template == null || m_Record == null)
            {
                return(null);
            }
            var record = new Cl_Record();

            record.p_ParentRecord     = m_Record.p_ParentRecord;
            record.p_Type             = E_RecordType.ByTemplate;
            record.p_RecordID         = m_Record.p_RecordID;
            record.p_MedicalCardID    = m_Record.p_MedicalCardID;
            record.p_ClinicName       = m_Record.p_ClinicName;
            record.p_DateLastChange   = DateTime.Now;
            record.p_Template         = m_Template;
            record.p_ClinicName       = m_Record.p_ClinicName;
            record.p_Title            = m_Record.p_Title;
            record.p_CategoryTotalID  = m_Record.p_CategoryTotalID;
            record.p_CategoryTotal    = m_Record.p_CategoryTotal;
            record.p_CategoryClinicID = m_Record.p_CategoryClinicID;
            record.p_CategoryClinic   = m_Record.p_CategoryClinic;
            record.p_DoctorID         = m_Record.p_DoctorID;
            record.p_DoctorSurName    = m_Record.p_DoctorSurName;
            record.p_DoctorName       = m_Record.p_DoctorName;
            record.p_DoctorLastName   = m_Record.p_DoctorLastName;
            record.p_MedicalCard      = m_Record.p_MedicalCard;
            record.p_DateCreate       = m_Record.p_DateCreate;
            record.p_Version          = m_Record.p_Version + 1;
            record.p_MKB1             = m_Record.p_MKB1;
            record.p_MKB2             = m_Record.p_MKB2;
            record.p_MKB3             = m_Record.p_MKB3;
            record.p_MKB4             = m_Record.p_MKB4;
            record.p_Values           = new List <Cl_RecordValue>();
            foreach (var el in m_Elements)
            {
                var recEl = el.f_GetRecordElementValues(record, a_IsRequired);
                if (recEl != null)
                {
                    record.p_Values.Add(recEl);
                }
                else
                {
                    return(null);
                }
            }
            return(record);
        }
Ejemplo n.º 11
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);
     }
 }
Ejemplo n.º 12
0
 public void f_SetRecordPattern(Cl_RecordPattern a_RecordPattern)
 {
     m_RecordPattern = a_RecordPattern;
     if (m_RecordPattern != null && m_RecordPattern.p_Template != null)
     {
         try
         {
             Cl_TemplatesFacade.f_GetInstance().f_LoadTemplatesElements(m_RecordPattern.p_Template);
             ctrlDoctorFIO.Text = m_RecordPattern.p_DoctorFIO;
             ctrlName.Text      = m_RecordPattern.p_Name;
             Text     = string.Format("Паттерн записей по шаблону \"{0}\" v{1}", m_RecordPattern.p_Template.p_Name, ConfigurationManager.AppSettings["Version"]);
             m_Record = Cl_RecordsFacade.f_GetInstance().f_GetNewRecord(m_RecordPattern);
             f_UpdateControls();
             m_Log.f_SetEntity(m_Record);
         }
         catch (Exception er)
         {
             MonitoringStub.Error("Error_Editor", "Не удалось установить паттерн записей по шаблону", er, null, null);
         }
     }
 }
        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);
        }
Ejemplo n.º 14
0
        static void Main(string[] args)
        {
            string local        = null;
            string path         = null;
            string dbConnection = null;
            var    medicalCards = new Dictionary <string, Cl_MedicalCard>();

            if (args != null && args.Length >= 4)
            {
                for (var i = 0; i < args.Length; i++)
                {
                    var arg = args[i];
                    if (arg == "-local" && i + 1 < args.Length)
                    {
                        local = args[i + 1];
                    }
                    else if (arg == "-path" && i + 1 < args.Length)
                    {
                        path = args[i + 1];
                    }
                    else if (arg == "-db" && i + 1 < args.Length)
                    {
                        dbConnection = args[i + 1].Replace("Data_Source", "Data Source").Replace("Data_Source", "Data Source").Replace("Initial_Catalog", "Initial Catalog").Replace("Integrated_Security", "Integrated Security");
                    }
                    else if (arg == "-log" && i + 1 < args.Length)
                    {
                        m_Loging = args[i + 1] == "1";
                    }
                }
            }
            if (local != null && path != null && dbConnection != null)
            {
                if (Directory.Exists(path))
                {
                    var db = new Cl_DataContextMegaTemplate(dbConnection);
                    db.f_Init();
                    if (!Cl_CatalogsFacade.f_GetInstance().f_Init(db))
                    {
                        f_WriteLog("Не удалось инициализировать фасад работы со справочниками");
                        Console.ReadKey(true);
                        return;
                    }
                    if (!Cl_MedicalCardsFacade.f_GetInstance().f_Init(db))
                    {
                        f_WriteLog("Не удалось инициализировать фасад работы с мед картами");
                        Console.ReadKey(true);
                        return;
                    }
                    if (!Cl_RecordsFacade.f_GetInstance().f_Init(db, local))
                    {
                        f_WriteLog("Не удалось инициализировать фасад работы с записями");
                        Console.ReadKey(true);
                        return;
                    }
                    var           records  = new List <Cl_Record>();
                    DirectoryInfo _dirInfo = new DirectoryInfo(Cl_RecordsFacade.f_GetInstance().f_GetLocalResourcesPath());
                    f_WriteLog(string.Format("Начало формирования записей папки \"{0}\"", path));
                    int      iVal  = 0;
                    Guid     gVal  = Guid.Empty;
                    DateTime dtVal = DateTime.MinValue;
                    var      dirs  = Directory.GetDirectories(path);
                    foreach (var dir in dirs)
                    {
                        var folderName = dir.Substring(dir.LastIndexOf("\\") + 1).Replace(path, "");
                        f_WriteLog(string.Format("Начало формирования записей пациента \"{0}\"", folderName));
                        var vals = folderName.Split(' ');
                        if (vals.Length >= 6 && vals.Length <= 7)
                        {
                            if (vals[5].Length > 0 && vals[5][0] == '#')
                            {
                                if (int.TryParse(vals[0], out iVal))
                                {
                                    var medicalNumber   = iVal;
                                    var patientSurName  = vals[1];
                                    var patientName     = vals[2];
                                    var patientLastName = vals[3];
                                    if (DateTime.TryParse(vals[4], out dtVal))
                                    {
                                        var  patientDateBirth = dtVal;
                                        bool validID          = false; //ID пациента
                                        int  patientID        = 0;
                                        Guid patientUID       = Guid.Empty;
                                        if (vals.Length == 6)
                                        {
                                            validID = int.TryParse(vals[5].Substring(1), out patientID);
                                        }
                                        else if (vals.Length == 7)
                                        {
                                            validID = Guid.TryParse(vals[6], out patientUID);
                                        }
                                        if (validID)
                                        {
                                            var dirsCliniks = Directory.GetDirectories(dir);
                                            foreach (var dirClinik in dirsCliniks)
                                            {
                                                var clinik         = dirClinik.Substring(dirClinik.LastIndexOf("\\") + 1);
                                                var dirsCategories = Directory.GetDirectories(dirClinik);
                                                foreach (var dirCategory in dirsCategories)
                                                {
                                                    var cat      = dirCategory.Substring(dirCategory.LastIndexOf("\\") + 1);
                                                    var category = Cl_CatalogsFacade.f_GetInstance().f_GetCategory(cat);
                                                    if (category == null)
                                                    {
                                                        category = Cl_CatalogsFacade.f_GetInstance().f_AddCategory(Cl_Category.E_CategoriesTypes.Total, cat);
                                                    }
                                                    if (category != null)
                                                    {
                                                        var curRecords = new Dictionary <string, Cl_Record>();
                                                        //var curImages = new Dictionary<string, List<Cl_ImageFileData>>();
                                                        var filesRecords = Directory.GetFiles(dirCategory);
                                                        foreach (var fileRecord in filesRecords)
                                                        {
                                                            var valsRecord         = fileRecord.Replace(dirCategory + "\\", "");
                                                            var pathRelativeFile   = fileRecord.Replace(path, "");
                                                            var pathRelativeFolder = pathRelativeFile.Replace(valsRecord, "");
                                                            if (DateTime.TryParse(valsRecord.Substring(0, 8), out dtVal))
                                                            {
                                                                var record = new Cl_Record();
                                                                record.p_Version     = 1;
                                                                record.p_Type        = E_RecordType.FinishedFile;
                                                                record.p_IsAutomatic = true;
                                                                record.p_DateCreate  = record.p_DateLastChange = record.p_DateReception = dtVal;

                                                                string         patID          = patientUID != Guid.Empty ? patientUID.ToString() : patientID.ToString();
                                                                string         medicalCardKey = $"{medicalNumber}_{patID}";
                                                                Cl_MedicalCard medicalCard    = null;
                                                                if (!medicalCards.TryGetValue(medicalCardKey, out medicalCard))
                                                                {
                                                                    if (patientUID != Guid.Empty)
                                                                    {
                                                                        medicalCard = Cl_MedicalCardsFacade.f_GetInstance().f_GetMedicalCard(medicalNumber.ToString(), patientUID);
                                                                    }
                                                                    else
                                                                    {
                                                                        medicalCard = Cl_MedicalCardsFacade.f_GetInstance().f_GetMedicalCard(medicalNumber.ToString(), patientID);
                                                                    }
                                                                    if (medicalCard == null)
                                                                    {
                                                                        medicalCard              = new Cl_MedicalCard();
                                                                        medicalCard.p_Number     = medicalNumber.ToString();
                                                                        medicalCard.p_DateCreate = record.p_DateCreate;
                                                                        medicalCard.p_PatientID  = patientID;
                                                                        if (patientUID != Guid.Empty)
                                                                        {
                                                                            medicalCard.p_PatientUID = patientUID;
                                                                        }
                                                                        medicalCard.p_PatientSurName   = patientSurName;
                                                                        medicalCard.p_PatientName      = patientName;
                                                                        medicalCard.p_PatientLastName  = patientLastName;
                                                                        medicalCard.p_PatientDateBirth = patientDateBirth;
                                                                        medicalCards.Add(medicalCardKey, medicalCard);
                                                                    }
                                                                }
                                                                record.p_MedicalCard = medicalCard;

                                                                record.p_ClinicName      = clinik;
                                                                record.p_CategoryTotalID = category.p_ID;
                                                                record.p_CategoryTotal   = category;
                                                                bool isAuthorValid = false;
                                                                var  authorStart   = valsRecord.IndexOf('[');
                                                                if (authorStart == -1 && valsRecord.LastIndexOf('.') > 9)
                                                                {
                                                                    record.p_Title          = valsRecord.Substring(9, valsRecord.LastIndexOf('.') - 9);
                                                                    record.p_DateLastChange = record.p_DateCreate;
                                                                    isAuthorValid           = true;
                                                                }
                                                                else if (authorStart > 10)
                                                                {
                                                                    record.p_Title = valsRecord.Substring(9, valsRecord.IndexOf('[') - 10);
                                                                    var authorEnd = valsRecord.IndexOf(']');
                                                                    if (authorEnd > 11 && authorEnd > authorStart + 22)
                                                                    {
                                                                        if (DateTime.TryParse(valsRecord.Substring(authorStart + 1, 19).Replace("-", ":"), out dtVal))
                                                                        {
                                                                            record.p_DateLastChange = dtVal;
                                                                            var authorName     = valsRecord.Substring(authorStart + 22, authorEnd - authorStart - 22);
                                                                            var valsAuthorName = authorName.Split(' ');
                                                                            if (valsAuthorName.Length == 4)
                                                                            {
                                                                                record.p_DoctorSurName  = valsAuthorName[1];
                                                                                record.p_DoctorName     = valsAuthorName[2];
                                                                                record.p_DoctorLastName = valsAuthorName[3];
                                                                                isAuthorValid           = true;
                                                                            }
                                                                            else
                                                                            {
                                                                                f_WriteLog(string.Format("Не корректные данные имени автора записи {0}", fileRecord), E_MessageType.Warning);
                                                                                continue;
                                                                            }
                                                                        }
                                                                        else if (valsRecord.IndexOf("_[") > 0 && valsRecord.IndexOf("]-") > 0 && valsRecord.LastIndexOf(".") > valsRecord.IndexOf("]-") + 2)
                                                                        {
                                                                            if (int.TryParse(valsRecord.Substring(valsRecord.IndexOf("]-") + 2, valsRecord.LastIndexOf(".") - valsRecord.IndexOf("]-") - 2), out iVal))
                                                                            {
                                                                                //var fileStream = File.OpenRead(fileRecord);
                                                                                //MemoryStream ms = new MemoryStream();
                                                                                //fileStream.CopyTo(ms);
                                                                                //Regex rgx = new Regex("]-\\d*?.");
                                                                                //var keyRecord = rgx.Replace(valsRecord.Replace("_", " "), "]");
                                                                                //keyRecord = keyRecord.Substring(0, keyRecord.LastIndexOf("."));

                                                                                //var recordFileType = f_GetFileType(valsRecord);
                                                                                //if (recordFileType != null)
                                                                                //{
                                                                                //    if (curImages.ContainsKey(keyRecord))
                                                                                //    {
                                                                                //        curImages[keyRecord].Add(new Cl_ImageFileData() { m_FileName = valsRecord, m_FileType = (E_RecordFileType)recordFileType, m_FileData = ms.ToArray() });
                                                                                //    }
                                                                                //    else
                                                                                //    {
                                                                                //        curImages.Add(keyRecord, new List<Cl_ImageFileData>() { new Cl_ImageFileData() { m_FileName = valsRecord, m_FileType = (E_RecordFileType)recordFileType, m_FileData = ms.ToArray() } });
                                                                                //    }
                                                                                //}
                                                                                //ms.Dispose();



                                                                                continue;
                                                                            }
                                                                            else
                                                                            {
                                                                                f_WriteLog(string.Format("Не корректное время изменения записи автором {0}", fileRecord), E_MessageType.Warning);
                                                                                continue;
                                                                            }
                                                                        }
                                                                        else
                                                                        {
                                                                            f_WriteLog(string.Format("Не корректное время изменения записи автором {0}", fileRecord), E_MessageType.Warning);
                                                                            continue;
                                                                        }
                                                                    }
                                                                    else
                                                                    {
                                                                        f_WriteLog(string.Format("Не корректные данные автора записи {0}", fileRecord), E_MessageType.Warning);
                                                                        continue;
                                                                    }
                                                                }
                                                                else
                                                                {
                                                                    f_WriteLog(string.Format("Не корректные данные автора записи {0}", fileRecord), E_MessageType.Warning);
                                                                    continue;
                                                                }
                                                                if (isAuthorValid)
                                                                {
                                                                    var attrs   = File.GetAttributes(fileRecord);
                                                                    var isPrint = attrs.HasFlag(FileAttributes.ReadOnly);
                                                                    if (isPrint)
                                                                    {
                                                                        record.p_DatePrintDoctor = record.p_DatePrintPatient = DateTime.Now;
                                                                    }

                                                                    //var fileStream = File.OpenRead(fileRecord);

                                                                    var fileName  = "";
                                                                    var extension = Path.GetExtension(fileRecord);
                                                                    fileName = fileRecord.Replace(extension, "");
                                                                    if (extension == ".x")
                                                                    {
                                                                        record.p_IsDelete = true;
                                                                        extension         = Path.GetExtension(fileRecord.Substring(0, fileRecord.Length - 2));
                                                                        fileName          = fileRecord.Replace(extension, "");
                                                                    }
                                                                    else if (extension == ".tag")
                                                                    {
                                                                        extension = Path.GetExtension(fileRecord.Substring(0, fileRecord.Length - 4));
                                                                        fileName  = fileRecord.Replace(extension, "");
                                                                    }
                                                                    var recordFileType = f_GetFileType(valsRecord);
                                                                    if (recordFileType != null)
                                                                    {
                                                                        record.p_FileType = (E_RecordFileType)recordFileType;
                                                                    }
                                                                    else
                                                                    {
                                                                        f_WriteLog(string.Format("Неизвестный формат файла записи {0}", fileRecord), E_MessageType.Error);
                                                                        continue;
                                                                    }
                                                                    record.p_FilePath = pathRelativeFile;
                                                                    //MemoryStream ms = new MemoryStream();
                                                                    //fileStream.CopyTo(ms);
                                                                    //record.p_FilePath = $"{local}\\{clinik}\\{patID}\\{valsRecord}";

                                                                    //record.p_FilePath = Cl_RecordsFacade.f_GetInstance().f_GetLocalResourcesRelativeFilePath(record);
                                                                    //var filePath = Cl_RecordsFacade.f_GetInstance().f_GetLocalResourcesPath() + "/" + record.p_FilePath;

                                                                    //if (record.p_FileType == E_RecordFileType.HTML)
                                                                    //{
                                                                    //    ms.Position = 0;
                                                                    //    var sr = new StreamReader(ms);
                                                                    //    var htmlText = sr.ReadToEnd();
                                                                    //    sr.Dispose();
                                                                    //    htmlText = htmlText.Replace(@"img src=\\family-doctor.local\fd$\FD.med\Images\Logo.jpg", @"img class=""record_title_img"" src=""Images/title.jpg""");
                                                                    //    File.WriteAllBytes(filePath, Encoding.UTF8.GetBytes(htmlText));
                                                                    //}
                                                                    //else
                                                                    //{
                                                                    //    File.WriteAllBytes(filePath, ms.ToArray());
                                                                    //}
                                                                    //ms.Dispose();
                                                                    f_WriteLog(string.Format("Сформирована новая запись {0}", fileRecord), E_MessageType.Info);
                                                                    curRecords.Add(valsRecord, record);
                                                                }
                                                                else
                                                                {
                                                                    f_WriteLog(string.Format("Не корректные данные автора записи {0}", fileRecord), E_MessageType.Warning);
                                                                    continue;
                                                                }
                                                            }
                                                            else
                                                            {
                                                                f_WriteLog(string.Format("Не корректная дата записи {0}", fileRecord), E_MessageType.Warning);
                                                                continue;
                                                            }
                                                        }
                                                        //foreach (var record in curRecords)
                                                        //{
                                                        //    var fileName = record.Key.Substring(0, record.Key.IndexOf("].") + 1);
                                                        //    var patID = record.Value.p_MedicalCard.p_PatientUID != Guid.Empty ? record.Value.p_MedicalCard.p_PatientUID.ToString() : record.Value.p_MedicalCard.p_PatientID.ToString();
                                                        //    var folderPath = $"{local}\\{clinik}\\{patID}\\";
                                                        //    if (curImages.ContainsKey(fileName))
                                                        //    {
                                                        //        var images = curImages[fileName];
                                                        //        var html = Encoding.UTF8.GetString(record.Value.p_FileBytes);
                                                        //        foreach (var img in images)
                                                        //        {
                                                        //            html = html.Replace(img.m_FileName, string.Format(@"data:image/{0};base64,{1}", Enum.GetName(typeof(E_RecordFileType), img.m_FileType).ToLower(), Convert.ToBase64String(img.m_FileData)));
                                                        //        }
                                                        //        record.Value.p_FileBytes = Encoding.UTF8.GetBytes(html);
                                                        //    }
                                                        //}
                                                        records.AddRange(curRecords.Values);
                                                    }
                                                    else
                                                    {
                                                        f_WriteLog("Категория записей не найдена", E_MessageType.Error);
                                                    }
                                                }
                                            }
                                        }
                                        else
                                        {
                                            f_WriteLog("Не корректный ID пациента", E_MessageType.Warning);
                                        }
                                    }
                                    else
                                    {
                                        f_WriteLog("Не корректная дата рождения пациента", E_MessageType.Warning);
                                    }
                                }
                                else
                                {
                                    f_WriteLog("Не корректный номер медкарты", E_MessageType.Warning);
                                }
                            }
                            else
                            {
                                f_WriteLog("Не корректное название архива записей", E_MessageType.Warning);
                            }
                        }
                        else
                        {
                            f_WriteLog("Не корректное название архива записей", E_MessageType.Warning);
                        }
                    }
                    f_WriteLog("Начало сохранения сформированных записей", E_MessageType.Info);
                    if (Cl_RecordsFacade.f_GetInstance().f_AddRecords(records))
                    {
                        f_WriteLog("Конец сохранения сформированных записей", E_MessageType.Info);

                        f_WriteLog("Начало копирования папки с файлами", E_MessageType.Info);

                        foreach (string _path in Directory.GetFiles(path, "*.*", SearchOption.AllDirectories))
                        {
                            try
                            {
                                var fileName     = Path.GetFileName(_path);
                                var relativePath = _path.Replace(path, "").Replace("\\" + fileName, "");
                                Cl_RecordsFacade.f_GetInstance().f_SaveFileFromSql(relativePath, fileName, File.ReadAllBytes(_path));
                            }
                            catch (Exception e)
                            {
                                f_WriteLog("Не удалось скопировать файл " + _path, E_MessageType.Info);
                            }
                        }

                        f_WriteLog("Конец копирования папки с файлами", E_MessageType.Info);
                    }
                    else
                    {
                        f_WriteLog("Не удалось сохраненить сформированные записи", E_MessageType.Info);
                    }
                    f_WriteLog(string.Format("Конец формирования записей папки \"{0}\"", path));
                }
                else
                {
                    f_WriteLog("Папка архива записей для загрузки не существует.", E_MessageType.Error);
                }
            }
            else
            {
                f_WriteLog("Не указана папка архива записей для загрузки.", E_MessageType.Error);
            }
            f_FixedLog();
            Console.ReadKey(true);
        }
Ejemplo n.º 15
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);
                        }
                    }
                }
            }
        }
        public void f_TestElementVisibleFromFormula()
        {
            //tag_one = "pat2"; tag_dva = 11; tag_tri = 5
            var record = new Cl_Record()
            {
                p_Title = "Тест проверки формул"
            };
            var medicalCard = new Cl_MedicalCard();

            medicalCard.p_PatientSex       = Core.Permision.Cl_User.E_Sex.Man;
            medicalCard.p_PatientDateBirth = new DateTime(1981, 4, 1);
            record.p_MedicalCard           = medicalCard;
            record.p_Values = new List <Cl_RecordValue>();

            var template = new Cl_Template()
            {
                p_Name = "Тест проверки формул", p_Type = Cl_Template.E_TemplateType.Template
            };
            var elements = new List <Cl_TemplateElement>();
            var element  = new Cl_Element()
            {
                p_ID   = 1,
                p_Name = "Формула 1",
                p_Tag  = "one"
            };

            element.p_ParamsValues = new List <Cl_ElementParam>();
            for (int i = 1; i < 4; i++)
            {
                element.p_ParamsValues.Add(new Cl_ElementParam()
                {
                    p_Element = element, p_TypeParam = Cl_ElementParam.E_TypeParam.NormValues, p_Value = "norm" + i.ToString()
                });
                var ep = new Cl_ElementParam()
                {
                    p_Element = element, p_TypeParam = Cl_ElementParam.E_TypeParam.PatValues, p_Value = "pat" + i.ToString()
                };
                if (i == 2)
                {
                    record.p_Values.Add(new Cl_RecordValue()
                    {
                        p_ElementID = element.p_ID,
                        p_Element   = element,
                        p_Params    = new List <Cl_RecordParam>()
                        {
                            new Cl_RecordParam()
                            {
                                p_ElementParam = ep
                            }
                        }
                    });
                }
                element.p_ParamsValues.Add(ep);
            }
            elements.Add(new Cl_TemplateElement()
            {
                p_Template = template, p_ChildElement = element, p_Index = 0
            });

            element = new Cl_Element()
            {
                p_ID          = 2,
                p_Name        = "Формула 2",
                p_Tag         = "dva",
                p_IsNumber    = true,
                p_NumberRound = 2
            };
            element.p_ParamsValues = new List <Cl_ElementParam>();
            for (int i = 1; i < 4; i++)
            {
                element.p_ParamsValues.Add(new Cl_ElementParam()
                {
                    p_Element = element, p_TypeParam = Cl_ElementParam.E_TypeParam.NormValues, p_Value = i.ToString()
                });
                element.p_ParamsValues.Add(new Cl_ElementParam()
                {
                    p_Element = element, p_TypeParam = Cl_ElementParam.E_TypeParam.PatValues, p_Value = i.ToString()
                });
            }
            record.p_Values.Add(new Cl_RecordValue()
            {
                p_ElementID = element.p_ID, p_Element = element, p_ValueUser = "******"
            });
            elements.Add(new Cl_TemplateElement()
            {
                p_Template = template, p_ChildElement = element, p_Index = 1
            });

            element = new Cl_Element()
            {
                p_ID          = 3,
                p_Name        = "Формула 3",
                p_Tag         = "tri",
                p_IsNumber    = true,
                p_NumberRound = 2
            };
            element.p_ParamsValues = new List <Cl_ElementParam>();
            for (int i = 1; i < 4; i++)
            {
                element.p_ParamsValues.Add(new Cl_ElementParam()
                {
                    p_Element = element, p_TypeParam = Cl_ElementParam.E_TypeParam.NormValues, p_Value = i.ToString()
                });
                element.p_ParamsValues.Add(new Cl_ElementParam()
                {
                    p_Element = element, p_TypeParam = Cl_ElementParam.E_TypeParam.PatValues, p_Value = i.ToString()
                });
            }
            record.p_Values.Add(new Cl_RecordValue()
            {
                p_ElementID = element.p_ID, p_Element = element, p_ValueUser = "******"
            });
            elements.Add(new Cl_TemplateElement()
            {
                p_Template = template, p_ChildElement = element, p_Index = 2
            });

            template.p_TemplateElements = elements;
            record.f_SetTemplate(template);

            bool actual = Cl_RecordsFacade.f_GetInstance().f_GetElementVisible(record, "tag_one = \"pat2\"");

            Assert.AreEqual(true, actual);
            actual = Cl_RecordsFacade.f_GetInstance().f_GetElementVisible(record, "tag_one = tag_one");
            Assert.AreEqual(true, actual);

            actual = Cl_RecordsFacade.f_GetInstance().f_GetElementVisible(record, "tag_dva > 10");
            Assert.AreEqual(true, actual);
            actual = Cl_RecordsFacade.f_GetInstance().f_GetElementVisible(record, "tag_dva < 15");
            Assert.AreEqual(true, actual);
            actual = Cl_RecordsFacade.f_GetInstance().f_GetElementVisible(record, "tag_dva = 11");
            Assert.AreEqual(true, actual);
            actual = Cl_RecordsFacade.f_GetInstance().f_GetElementVisible(record, "tag_dva > 14");
            Assert.AreEqual(false, actual);
            actual = Cl_RecordsFacade.f_GetInstance().f_GetElementVisible(record, "tag_dva < 11");
            Assert.AreEqual(false, actual);

            actual = Cl_RecordsFacade.f_GetInstance().f_GetElementVisible(record, "tag_one = \"pat2\" И tag_dva > 10 ИЛИ tag_tri = 3");
            Assert.AreEqual(true, actual);
            actual = Cl_RecordsFacade.f_GetInstance().f_GetElementVisible(record, "tag_one = \"pat2\" И tag_dva < 12 ИЛИ tag_tri = 3");
            Assert.AreEqual(true, actual);
            actual = Cl_RecordsFacade.f_GetInstance().f_GetElementVisible(record, "tag_one = \"pat2\" И tag_dva = 11 ИЛИ tag_tri = 3");
            Assert.AreEqual(true, actual);
            actual = Cl_RecordsFacade.f_GetInstance().f_GetElementVisible(record, "tag_one = \"pat2\" И tag_dva = 13 ИЛИ tag_tri = 5");
            Assert.AreEqual(true, actual);
            actual = Cl_RecordsFacade.f_GetInstance().f_GetElementVisible(record, "tag_one = \"pat2\" И tag_dva = 13 ИЛИ tag_tri > 4");
            Assert.AreEqual(true, actual);
            actual = Cl_RecordsFacade.f_GetInstance().f_GetElementVisible(record, "tag_one = \"pat2\" И tag_dva = 13 ИЛИ tag_tri < 6");
            Assert.AreEqual(true, actual);
            actual = Cl_RecordsFacade.f_GetInstance().f_GetElementVisible(record, "tag_one = \"pat2\" И tag_dva = 13 ИЛИ tag_tri < tag_dva");
            Assert.AreEqual(true, actual);

            actual = Cl_RecordsFacade.f_GetInstance().f_GetElementVisible(record, "tag_one = \"pat2\" И tag_dva = 13 ИЛИ tag_tri > tag_dva");
            Assert.AreEqual(false, actual);
            actual = Cl_RecordsFacade.f_GetInstance().f_GetElementVisible(record, "tag_one = \"pat2\" И tag_dva = 13 ИЛИ tag_tri = 6");
            Assert.AreEqual(false, actual);
            actual = Cl_RecordsFacade.f_GetInstance().f_GetElementVisible(record, "tag_one = \"pat2\" И tag_dva = 13");
            Assert.AreEqual(false, actual);
            actual = Cl_RecordsFacade.f_GetInstance().f_GetElementVisible(record, "tag_one = \"pat2\" И tag_dva > 11");
            Assert.AreEqual(false, actual);
            actual = Cl_RecordsFacade.f_GetInstance().f_GetElementVisible(record, "tag_one = \"pat2\" И tag_dva < 11");
            Assert.AreEqual(false, actual);
            actual = Cl_RecordsFacade.f_GetInstance().f_GetElementVisible(record, "tag_one = \"pat3\" И tag_dva = 11");
            Assert.AreEqual(false, actual);
            actual = Cl_RecordsFacade.f_GetInstance().f_GetElementVisible(record, "tag_one = \"\" И tag_dva = 11");
            Assert.AreEqual(false, actual);

            actual = Cl_RecordsFacade.f_GetInstance().f_GetElementVisible(record, "tag_gender = man И tag_age > 10");
            Assert.AreEqual(true, actual);
            actual = Cl_RecordsFacade.f_GetInstance().f_GetElementVisible(record, "tag_gender = man И tag_age > 40");
            Assert.AreEqual(false, actual);
            actual = Cl_RecordsFacade.f_GetInstance().f_GetElementVisible(record, "tag_gender = female И tag_age > 10");
            Assert.AreEqual(false, actual);
            actual = Cl_RecordsFacade.f_GetInstance().f_GetElementVisible(record, "tag_gender = female");
            Assert.AreEqual(false, actual);
        }
        public void f_TestElementMathematicalFormula()
        {
            //tag_one = "14"; tag_dva = 11; tag_tri = 5
            var record = new Cl_Record()
            {
                p_Title = "Тест проверки формул"
            };

            record.p_Values = new List <Cl_RecordValue>();

            var template = new Cl_Template()
            {
                p_Name = "Тест проверки формул", p_Type = Cl_Template.E_TemplateType.Template
            };
            var elements = new List <Cl_TemplateElement>();

            var element = new Cl_Element()
            {
                p_ID          = 1,
                p_Name        = "Формула 1",
                p_Tag         = "one",
                p_IsNumber    = true,
                p_NumberRound = 3
            };

            element.p_ParamsValues = new List <Cl_ElementParam>();
            for (int i = 1; i < 4; i++)
            {
                element.p_ParamsValues.Add(new Cl_ElementParam()
                {
                    p_Element = element, p_TypeParam = Cl_ElementParam.E_TypeParam.NormValues, p_Value = i.ToString()
                });
                element.p_ParamsValues.Add(new Cl_ElementParam()
                {
                    p_Element = element, p_TypeParam = Cl_ElementParam.E_TypeParam.PatValues, p_Value = i.ToString()
                });
            }
            record.p_Values.Add(new Cl_RecordValue()
            {
                p_ElementID = element.p_ID, p_Element = element, p_ValueUser = "******"
            });
            elements.Add(new Cl_TemplateElement()
            {
                p_Template = template, p_ChildElement = element, p_Index = 0
            });
            element = new Cl_Element()
            {
                p_ID          = 2,
                p_Name        = "Формула 2",
                p_Tag         = "dva",
                p_IsNumber    = true,
                p_NumberRound = 2
            };
            element.p_ParamsValues = new List <Cl_ElementParam>();
            for (int i = 1; i < 4; i++)
            {
                element.p_ParamsValues.Add(new Cl_ElementParam()
                {
                    p_Element = element, p_TypeParam = Cl_ElementParam.E_TypeParam.NormValues, p_Value = i.ToString()
                });
                element.p_ParamsValues.Add(new Cl_ElementParam()
                {
                    p_Element = element, p_TypeParam = Cl_ElementParam.E_TypeParam.PatValues, p_Value = i.ToString()
                });
            }
            record.p_Values.Add(new Cl_RecordValue()
            {
                p_ElementID = element.p_ID, p_Element = element, p_ValueUser = "******"
            });
            elements.Add(new Cl_TemplateElement()
            {
                p_Template = template, p_ChildElement = element, p_Index = 1
            });
            element = new Cl_Element()
            {
                p_ID          = 3,
                p_Name        = "Формула 3",
                p_Tag         = "tri",
                p_IsNumber    = true,
                p_NumberRound = 2
            };
            element.p_ParamsValues = new List <Cl_ElementParam>();
            for (int i = 1; i < 4; i++)
            {
                element.p_ParamsValues.Add(new Cl_ElementParam()
                {
                    p_Element = element, p_TypeParam = Cl_ElementParam.E_TypeParam.NormValues, p_Value = i.ToString()
                });
                element.p_ParamsValues.Add(new Cl_ElementParam()
                {
                    p_Element = element, p_TypeParam = Cl_ElementParam.E_TypeParam.PatValues, p_Value = i.ToString()
                });
            }
            record.p_Values.Add(new Cl_RecordValue()
            {
                p_ElementID = element.p_ID, p_Element = element, p_ValueUser = "******"
            });
            elements.Add(new Cl_TemplateElement()
            {
                p_Template = template, p_ChildElement = element, p_Index = 2
            });

            element = new Cl_Element()
            {
                p_ID            = 4,
                p_Name          = "Формула 4",
                p_Tag           = "chet",
                p_IsNumber      = true,
                p_NumberRound   = 2,
                p_NumberFormula = "tag_dva - 100"
            };
            //record.p_Values.Add(new Cl_RecordValue() { p_ElementID = element.p_ID, p_Element = element });
            elements.Add(new Cl_TemplateElement()
            {
                p_Template = template, p_ChildElement = element, p_Index = 4
            });

            template.p_TemplateElements = elements;
            record.f_SetTemplate(template);

            decimal?result = Cl_RecordsFacade.f_GetInstance().f_GetElementMathematicValue(record, "tag_one + 3");

            Assert.AreEqual(17, result);
            result = Cl_RecordsFacade.f_GetInstance().f_GetElementMathematicValue(record, "tag_one + 8");
            Assert.AreEqual(22, result);

            result = Cl_RecordsFacade.f_GetInstance().f_GetElementMathematicValue(record, "tag_one - 3");
            Assert.AreEqual(11, result);
            result = Cl_RecordsFacade.f_GetInstance().f_GetElementMathematicValue(record, "tag_dva - 8");
            Assert.AreEqual(3, result);
            result = Cl_RecordsFacade.f_GetInstance().f_GetElementMathematicValue(record, "tag_dva * 11");
            Assert.AreEqual(121, result);
            result = Cl_RecordsFacade.f_GetInstance().f_GetElementMathematicValue(record, "tag_dva / 2");
            Assert.AreEqual((decimal)5.5, result);
            result = Cl_RecordsFacade.f_GetInstance().f_GetElementMathematicValue(record, "tag_tri - 7");
            Assert.AreEqual(-2, result);

            result = Cl_RecordsFacade.f_GetInstance().f_GetElementMathematicValue(record, "tag_one + tag_dva - tag_tri");
            Assert.AreEqual(20, result);
            result = Cl_RecordsFacade.f_GetInstance().f_GetElementMathematicValue(record, "tag_one * tag_dva / tag_tri");
            Assert.AreEqual((decimal)30.8, result);

            result = Cl_RecordsFacade.f_GetInstance().f_GetElementMathematicValue(record, "tag_one / tag_chet / tag_chet");
            Assert.AreEqual((decimal)0.001767, Math.Round(result.Value, 6));
        }
Ejemplo n.º 18
0
 /// <summary>Установка записи</summary>
 public void f_SetRecord(Cl_Record a_Record)
 {
     m_Record = a_Record;
     f_UpdateMKB();
 }
        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);
            }
        }