/// <summary>Создание новой медкарты</summary>
 /// <param name="a_Number">Номер медкарта</param>
 /// <param name="a_PatientID">ID пациента</param>
 /// <param name="a_PatientSex">Пол пациента</param>
 /// <param name="a_PatientSurName">Фамиля пациента</param>
 /// <param name="a_PatientName">Имя пациента</param>
 /// <param name="a_PatientLastName">Отчество пациента</param>
 /// <param name="a_PatientDateBirth">Дата рождения пациента</param>
 /// <param name="a_Comment">Комментарий</param>
 /// <returns>Созданная медкарта</returns>
 public Cl_MedicalCard f_CreateMedicalCard(string a_Number, int a_PatientID, Cl_User.E_Sex a_PatientSex, string a_PatientSurName, string a_PatientName, string a_PatientLastName, DateTime a_PatientDateBirth, string a_Comment)
 {
     if (m_DataContextMegaTemplate != null)
     {
         if (string.IsNullOrWhiteSpace(a_Number))
         {
             MonitoringStub.Error("Error_CreateMedicalCard", "Не указан номер медкарты", null, null, null);
             return(null);
         }
         if (string.IsNullOrWhiteSpace(a_PatientSurName))
         {
             MonitoringStub.Error("Error_CreateMedicalCard", "Не указано фамилия пациента", null, null, null);
             return(null);
         }
         if (string.IsNullOrWhiteSpace(a_PatientName))
         {
             MonitoringStub.Error("Error_CreateMedicalCard", "Не указано имя пациента", null, null, null);
             return(null);
         }
         if (string.IsNullOrWhiteSpace(a_PatientLastName))
         {
             MonitoringStub.Error("Error_CreateMedicalCard", "Не указано отчество пациента", null, null, null);
             return(null);
         }
         var medicalCard = new Cl_MedicalCard();
         try
         {
             medicalCard.p_Number           = a_Number;
             medicalCard.p_DateCreate       = DateTime.Now;
             medicalCard.p_PatientID        = a_PatientID;
             medicalCard.p_PatientSex       = a_PatientSex;
             medicalCard.p_PatientSurName   = a_PatientSurName;
             medicalCard.p_PatientName      = a_PatientName;
             medicalCard.p_PatientLastName  = a_PatientLastName;
             medicalCard.p_PatientDateBirth = a_PatientDateBirth;
             medicalCard.p_Comment          = a_Comment;
             m_DataContextMegaTemplate.p_MedicalCards.Add(medicalCard);
             m_DataContextMegaTemplate.SaveChanges();
             return(medicalCard);
         }
         catch (Exception er)
         {
             m_DataContextMegaTemplate.p_MedicalCards.Remove(medicalCard);
             MonitoringStub.Error("Error_CreateMedicalCard", "Не удалось создать медкарту", er, null, null);
             return(null);
         }
     }
     else
     {
         MonitoringStub.Error("Error_MedicalCardsFacade", "Не инициализирован фасад", null, null, null);
         return(null);
     }
 }
Example #2
0
 /// <summary>Добавление новой категории</summary>
 public Cl_Category f_AddCategory(Cl_Category.E_CategoriesTypes a_CategoryType, string a_CategoryName)
 {
     if (m_IsInit)
     {
         var cat = new Cl_Category()
         {
             p_Type = a_CategoryType, p_Name = a_CategoryName
         };
         m_DataContextMegaTemplate.p_Categories.Add(cat);
         m_DataContextMegaTemplate.SaveChanges();
         return(cat);
     }
     else
     {
         return(null);
     }
 }
        /// <summary>
        /// Сохранение шаблона
        /// </summary>
        /// <param name="curTemplate">Сохраняемый шаблон</param>
        /// <param name="items">Новый список элементов в сохраняемом шаблоне</param>
        /// <param name="m_Log">Объект логгера</param>
        /// <returns></returns>
        public Cl_Template f_SaveTemplate(Cl_Template curTemplate, I_Element[] elements, Cl_EntityLog m_Log = null)
        {
            using (var transaction = m_DataContextMegaTemplate.Database.BeginTransaction())
            {
                try
                {
                    Cl_Template newTemplate = null;
                    if (curTemplate.p_Version == 0)
                    {
                        newTemplate           = curTemplate;
                        newTemplate.p_Version = 1;
                    }
                    else
                    {
                        newTemplate = new Cl_Template();
                        newTemplate.p_TemplateID       = curTemplate.p_TemplateID;
                        newTemplate.p_Title            = curTemplate.p_Title;
                        newTemplate.p_CategoryTotalID  = curTemplate.p_CategoryTotalID;
                        newTemplate.p_CategoryTotal    = curTemplate.p_CategoryTotal;
                        newTemplate.p_CategoryClinicID = curTemplate.p_CategoryClinicID;
                        newTemplate.p_CategoryClinic   = curTemplate.p_CategoryClinic;
                        newTemplate.p_Type             = curTemplate.p_Type;
                        newTemplate.p_Name             = curTemplate.p_Name;
                        newTemplate.p_Version          = curTemplate.p_Version + 1;
                        newTemplate.p_ParentGroupID    = curTemplate.p_ParentGroupID;
                        newTemplate.p_ParentGroup      = curTemplate.p_ParentGroup;
                        newTemplate.p_Description      = curTemplate.p_Description;

                        m_DataContextMegaTemplate.p_Templates.Add(newTemplate);
                    }

                    m_DataContextMegaTemplate.SaveChanges();

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

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

                        m_DataContextMegaTemplate.p_TemplatesElements.Add(tplEl);
                    }

                    m_DataContextMegaTemplate.SaveChanges();

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

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

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

                return(curTemplate);
            }
        }
        public void f_TestCreateRecord()
        {
            var temlName = "Тест проверки создания API работы с записями";
            var dc       = new Cl_DataContextMegaTemplate(f_GetConnectionString());

            dc.f_Init();
            var result = Cl_MedicalCardsFacade.f_GetInstance().f_Init(dc);

            Assert.AreEqual(true, result);
            result = Cl_TemplatesFacade.f_GetInstance().f_Init(dc);
            Assert.AreEqual(true, result);
            result = Cl_RecordsFacade.f_GetInstance().f_Init(dc, f_GetLocalResourcesPath());
            Assert.AreEqual(true, result);
            result = Cl_CatalogsFacade.f_GetInstance().f_Init(dc);
            Assert.AreEqual(true, result);

            var groupTpl = dc.p_Groups.FirstOrDefault(g => g.p_Type == Cl_Group.E_Type.Templates && g.p_Name == "test");

            if (groupTpl == null)
            {
                groupTpl = new Cl_Group()
                {
                    p_Name = "test", p_Type = Cl_Group.E_Type.Elements
                };
                dc.p_Groups.Add(groupTpl);
                dc.SaveChanges();
            }
            var groupEl = dc.p_Groups.FirstOrDefault(g => g.p_Type == Cl_Group.E_Type.Templates && g.p_Name == "test");

            if (groupEl == null)
            {
                groupEl = new Cl_Group()
                {
                    p_Name = "test", p_Type = Cl_Group.E_Type.Elements
                };
                dc.p_Groups.Add(groupEl);
                dc.SaveChanges();
            }

            if (!Cl_CatalogsFacade.f_GetInstance().f_HasCategory("Осмотр"))
            {
                Cl_CatalogsFacade.f_GetInstance().f_AddCategory(Cl_Category.E_CategoriesTypes.Total, "Осмотр");
            }
            if (!Cl_CatalogsFacade.f_GetInstance().f_HasCategory("Клиническая 1"))
            {
                Cl_CatalogsFacade.f_GetInstance().f_AddCategory(Cl_Category.E_CategoriesTypes.Clinic, "Клиническая 1");
            }

            var catTotal = Cl_CatalogsFacade.f_GetInstance().f_GetCategory("Осмотр");

            Assert.AreNotEqual(null, catTotal);
            var catClinic = Cl_CatalogsFacade.f_GetInstance().f_GetCategory("Клиническая 1");

            Assert.AreNotEqual(null, catClinic);

            var tmpl = Cl_TemplatesFacade.f_GetInstance().f_GetTemplateByName(temlName);

            if (tmpl == null)
            {
                tmpl = new Cl_Template()
                {
                    p_Name = temlName, p_Type = Cl_Template.E_TemplateType.Template
                };
                var elements = new List <Cl_TemplateElement>();

                var element = new Cl_Element()
                {
                    p_ParentGroupID = groupEl.p_ID,
                    p_ParentGroup   = groupEl,
                    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()
                    });
                }
                elements.Add(new Cl_TemplateElement()
                {
                    p_Template = tmpl, p_ChildElement = element, p_Index = 0
                });

                element = new Cl_Element()
                {
                    p_ParentGroupID = groupEl.p_ID,
                    p_ParentGroup   = groupEl,
                    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()
                    });
                }
                elements.Add(new Cl_TemplateElement()
                {
                    p_Template = tmpl, p_ChildElement = element, p_Index = 1
                });
                element = new Cl_Element()
                {
                    p_ParentGroupID = groupEl.p_ID,
                    p_ParentGroup   = groupEl,
                    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()
                    });
                }
                elements.Add(new Cl_TemplateElement()
                {
                    p_Template = tmpl, p_ChildElement = element, p_Index = 2
                });
                tmpl.p_ParentGroupID    = groupTpl.p_ID;
                tmpl.p_ParentGroup      = groupTpl;
                tmpl.p_TemplateElements = elements;
                tmpl.p_CategoryTotalID  = catTotal.p_ID;
                tmpl.p_CategoryTotal    = catTotal;
                tmpl.p_CategoryClinicID = catClinic.p_ID;
                tmpl.p_CategoryClinic   = catClinic;

                dc.p_Templates.Add(tmpl);
                dc.SaveChanges();
            }
            Assert.AreNotEqual(null, tmpl);

            var elts = Cl_TemplatesFacade.f_GetInstance().f_GetElements(tmpl);

            Assert.AreNotEqual(null, elts);
            var vals = new List <Cl_RecordValue>();

            foreach (var el in elts)
            {
                vals.Add(new Cl_RecordValue()
                {
                    p_ElementID = el.p_ID, p_Element = el, p_ValueUser = "******"
                });
            }
            var medicalCard1 = Cl_MedicalCardsFacade.f_GetInstance().f_GetMedicalCard("777", 1);

            if (medicalCard1 == null)
            {
                medicalCard1 = Cl_MedicalCardsFacade.f_GetInstance().f_CreateMedicalCard("777", 1, Core.Permision.Cl_User.E_Sex.Man, "Иванов", "Иван", "Иванович", new DateTime(1996, 3, 11), "Медкарта API тест 777");
            }
            Assert.IsNotNull(medicalCard1);
            result = Cl_RecordsFacade.f_GetInstance().f_CreateRecord(medicalCard1, catTotal, catClinic, "Заголовок API тест - значения", "Клиника API тест значения", 56369,
                                                                     "Доктор_Фамилия", "Доктор_Имя", "Доктор_Отчество",
                                                                     tmpl, vals);
            Assert.AreEqual(true, result);
            result = Cl_RecordsFacade.f_GetInstance().f_CreateRecord(medicalCard1, catTotal, catClinic, "Заголовок API тест - файл", "Клиника API тест файл", 56369,
                                                                     "Доктор_Фамилия", "Доктор_Имя", "Доктор_Отчество",
                                                                     E_RecordFileType.HTML, Encoding.UTF8.GetBytes("<h1>API тест файл<h1>"));
            Assert.AreEqual(true, result);
        }