/// <summary>СОБЫТИЕ Выбор контекстного меню Открытие окна логов документа</summary>
        private void PART_MenuItem_Log_Click(object sender, RoutedEventArgs e)
        {
            string _jLog;

            // Для Apac и Apstac
            if (!string.IsNullOrEmpty(PROP_xLog))
            {
                _jLog = PROP_xLog;
            }
            else
            {
                // Если протокола нет, то создаем
                if (PROP_DocumHistory.PROP_Protokol == null)
                {
                    PROP_DocumHistory.PROP_Protokol = UserProtokol.MET_FactoryProtokol(PROP_Type, (int)PROP_Cod);
                }

                _jLog = PROP_DocumHistory.PROP_Protokol.PROP_xLog;
            }

            if (!string.IsNullOrEmpty(_jLog))
            {
                // Открываем Форму Карточка Log
                UserWindow_DocumLog _WinLog = new UserWindow_DocumLog(_jLog);
                _WinLog.Show();
            }
            else
            {
                MessageBox.Show("А логов то и нет!", "Ошибочка вышла");
            }
        }
Beispiel #2
0
        /// <summary>МЕТОД Формируем дерево</summary>
        public override void MET_CreateTree()
        {
            // Заполняем основу дерево (паспорт + история)
            base.MET_CreateTree();
            // Загружаем все протоколы Protokol текущей параклиники (внутри загружаются и ListShablon и Shablon)
            UserProtokol.MET_FactoryProtokolArray(eTipDocum.Paracl, MyGlo.IND);
            VirtualNodes _Node;

            // ВЕТКА Параклинические исследования
            _Node = new UserNodes_RootsListParacl
            {
                PROP_TipNodes    = eTipNodes.Para_RootsList,
                Name             = "eleTVItem_ParaIss",
                PROP_Text        = "Исследования",
                PROP_TextDefault = "Исследования",
                PROP_ImageName   = "mnParacl",
                PROP_ParentName  = "",
                IsExpanded       = true
            };
            _Node.PROP_Docum             = new UserDocument(_Node);
            _Node.PROP_Docum.PROP_Otchet = new UserOtchet_Roots {
                PROP_Docum = _Node.PROP_Docum
            };
            _Node.MET_Inizial();
        }
Beispiel #3
0
        /// <summary>МЕТОД Создаем поле истории результата исседования КДЛ</summary>
        /// <param name="pPole">Родительское поле</param>
        private UserPole_History MET_GreatKDL(UserPole_History pPole)
        {
            // Заполняем список шаблонов
            MySql.MET_DsAdapterFill(MyQuery.MET_History_Select_4(MET_PoleInt("kdl")), "HistoryKDL");
            PRO_RowShablon = MyGlo.DataSet.Tables["HistoryKDL"].Rows[0];
            // Настраиваем поле документа
            UserPole_History _Pole = new UserPole_History();

            _Pole.PROP_Date       = MET_PoleDat("pDate");
            _Pole.PROP_Document   = MET_PoleStr("NameKr");
            _Pole.PROP_Dp         = MET_PoleDat("pDate");
            _Pole.PROP_Kdl        = MET_PoleStr("Indicator");
            _Pole.PROP_Metca      = " (" + _Pole.PROP_Kdl + ")";
            _Pole.PROP_Background = Brushes.LightYellow;
            // Окрашиваем поле в зависимости от результата
            MET_ColorKDL(_Pole);
            _Pole.PROP_Type     = eTipDocum.Kdl;
            _Pole.PROP_IsTexted = true;
            // Находим иконку
            string _Icon = MET_PoleStr("Icon") != "" ? MET_PoleStr("Icon") : "mnOneOsmotr";

            _Pole.MET_LoadIcon(_Icon);
            _Pole.PROP_Cod          = MET_PoleInt("Cod");
            _Pole.PROP_CodApstac    = pPole.PROP_CodApstac;
            _Pole.PROP_NumerShablon = MET_PoleInt("NumShablon");
            _Pole.PROP_Kdl          = "1";
            _Pole.PROP_DocumHistory = new UserDocument(_Pole.PROP_Type);
            _Pole.PROP_IsDelete     = MET_PoleInt("xDelete") == 1;
            _Pole.PROP_DocumHistory.PROP_Protokol = UserProtokol.MET_FactoryProtokol(_Pole.PROP_Type, (int)_Pole.PROP_Cod);
            _Pole.PROP_Vrach = _Pole.PROP_DocumHistory.PROP_Protokol.PROP_UserName;
            _Pole.MET_Inicial();
            // Делегат при открытии документа
            _Pole.Event_OpenNewPoleHistory = MET_Protokol;
            return(_Pole);
        }
Beispiel #4
0
 /// <summary>МЕТОД Формируем отчет</summary>
 protected override void MET_Otchet()
 {
     PROP_Docum.PROP_Protokol = UserProtokol.MET_FactoryProtokol(PROP_Docum.PROP_Protokol.PROP_TipProtokol.PROP_TipDocum,
                                                                 PROP_Docum.PROP_Protokol.PROP_Cod);
     PRO_Paragraph = new Paragraph();
     // Заполняем ответы
     MET_Protokol();
 }
Beispiel #5
0
 /// <summary>МЕТОД Формируем отчет</summary>
 protected override void MET_Otchet()
 {
     PROP_Docum.PROP_Protokol = UserProtokol.MET_FactoryProtokol(PROP_Docum.PROP_ListShablon.PROP_TipProtokol.PROP_TipDocum,
                                                                 MyGlo.IND, PROP_Docum.PROP_ListShablon.PROP_Cod, PROP_Nodes.PROP_shaIndex);
     PRO_Paragraph = new Paragraph();
     // Заполняем ответы
     MET_Protokol();
 }
Beispiel #6
0
 /// <summary>МЕТОД Заполняем экспандер при первом открытии Стационара</summary>
 /// <param name="pPole">Наше поле</param>
 private void MET_OpenStac(UserPole_History pPole)
 {
     // Заполняем список шаблонов
     MySql.MET_DsAdapterFill(MyQuery.MET_History_Select_2(pPole.PROP_Cod), "History");
     foreach (DataRow _Row in MyGlo.DataSet.Tables["History"].Rows)
     {
         PRO_RowShablon = _Row;
         // Настраиваем поле документа
         UserPole_History _Pole = new UserPole_History();
         _Pole.PROP_Date       = MET_PoleDat("pDate");
         _Pole.PROP_Document   = MET_PoleStr("NameKr");
         _Pole.PROP_Dp         = MET_PoleDat("pDate");
         _Pole.Margin          = new Thickness(5, 0, 0, 0);
         _Pole.PROP_Background = Brushes.LightYellow;
         _Pole.PROP_Type       = eTipDocum.Stac;
         _Pole.PROP_IsTexted   = true;
         // Находим иконку
         string _Icon = MET_PoleStr("Icon") != "" ? MET_PoleStr("Icon") : "mnOneOsmotr";
         _Pole.MET_LoadIcon(_Icon);
         _Pole.PROP_Cod          = MET_PoleInt("Cod");
         _Pole.PROP_CodApstac    = pPole.PROP_CodApstac;
         _Pole.PROP_NumerShablon = MET_PoleInt("NumShablon");
         _Pole.PROP_Kdl          = MET_PoleStr("kdl");
         _Pole.PROP_DocumHistory = new UserDocument(_Pole.PROP_Type);
         _Pole.PROP_DocumHistory.PROP_Protokol = UserProtokol.MET_FactoryProtokol(_Pole.PROP_Type, (int)_Pole.PROP_Cod);
         _Pole.PROP_Vrach = _Pole.PROP_DocumHistory.PROP_Protokol.PROP_UserName;
         _Pole.MET_Inicial();
         // Делегат при открытии документа
         _Pole.Event_OpenNewPoleHistory = MET_Protokol;
         // Если запрет для просмотра
         if (PUB_Ban && MET_PoleInt("Dostup") == 0)
         {
             _Pole.PROP_Description         = "(Доступ Закрыт)   ";
             _Pole.PROP_Background          = Brushes.GhostWhite;
             _Pole.IsEnabled                = false;
             _Pole.Event_OpenNewPoleHistory = null;
         }
         _Pole.PROP_IsDelete = MET_PoleInt("xDelete") == 1;
         pPole.MET_AddEle(_Pole);
         if (_Pole.PROP_Kdl != "")
         {
             var _PoleKDL = MET_GreatKDL(_Pole);
             _PoleKDL.Margin = new Thickness(5, 0, 0, 0);
             // Добавляем в очередь
             pPole.MET_AddEle(_PoleKDL);
         }
     }
     // Отключаем делегат
     pPole.Event_OpenNewPoleHistory = null;
 }
Beispiel #7
0
 ///<summary>МЕТОД Инициализация ветки</summary>
 public override void MET_Inizial()
 {
     // Заполняем свойства базового класса
     base.MET_Inizial();
     //  Тип протоколов
     PROP_shaTipProtokol = new MyTipProtokol(eTipDocum.Stac);
     // Если есть протокол в наличии
     if (PROP_shaPresenceProtokol)
     {
         // Находим протокол
         PROP_Docum.PROP_Protokol = UserProtokol.MET_FactoryProtokol(PROP_shaTipProtokol.PROP_TipDocum, MyGlo.IND, PROP_shaNomerShablon, PROP_shaIndex);
         PROP_Data     = PROP_Docum.PROP_Protokol.PROP_pDate;
         PROP_TextDown = PROP_Data.ToString().Substring(0, 10);
     }
 }
Beispiel #8
0
        /// <summary>МЕТОД Формируем дерево</summary>
        public override void MET_CreateTree()
        {
            // Заполняем основу дерево (паспорт + история)
            base.MET_CreateTree();

            // Загружаем все протоколы Protokol текущей поликлиники (внутри загружаются и ListShablon и Shablon)
            UserProtokol.MET_FactoryProtokolArray(eTipDocum.Pol, MyGlo.IND);
            VirtualNodes _Node;

            // Временно скрыта для врачей по приказу начальника, из за конфликта Тарасевич-Плахотенко (сентябрь 2019)
            // Пока открыл (июль 2020)
            //if (MyGlo.Admin)
            //{
            // ВЕТКА Запись в регистратуру
            _Node = new UserNodes_Inform
            {
                PROP_TipNodes   = eTipNodes.EditDocum,
                Name            = "eleTVItem_Reg",
                PROP_Text       = "Регистратура",
                PROP_ImageName  = "mnReg",
                PROP_ParentName = ""
            };
            _Node.PROP_Docum             = new UserDocument(_Node);
            _Node.PROP_Docum.PROP_Otchet = new UserOtchet_Registration {
                PROP_Docum = _Node.PROP_Docum
            };
            _Node.MET_Inizial();
            //}

            // ВЕТКА Поликлиника
            _Node = new UserNodes_RootsListPol
            {
                PROP_TipNodes    = eTipNodes.Pol_RootsList,
                Name             = "eleTVItem_Pol",
                PROP_Text        = "Поликлиника",
                PROP_TextDefault = "Поликлиника",
                PROP_ImageName   = "mnPosPolikl",
                PROP_ParentName  = "",
                IsExpanded       = true
            };
            _Node.PROP_Docum             = new UserDocument(_Node);
            _Node.PROP_Docum.PROP_Otchet = new UserOtchet_Roots {
                PROP_Docum = _Node.PROP_Docum
            };
            _Node.MET_Inizial();
            _Node.IsSelected = true;
        }
Beispiel #9
0
        /// <summary>МЕТОД Формируем дерево</summary>
        public virtual void MET_CreateTree()
        {
            // Преварительно чистим  дерево
            MyGlo.TreeView.Items.Clear();

            // Чистим структуру протоколов
            UserProtokol.MET_ClearProtokol();
            // Загружаем все протоколы Protokol таблицы kdl, по KL пациента
            UserProtokol.MET_FactoryProtokolArray(eTipDocum.Kdl, MyGlo.KL, "KL");

            // ВЕТКА Общие сведенья
            VirtualNodes _Node = new UserNodes_Inform
            {
                PROP_TipNodes   = eTipNodes.Main,
                Name            = "eleTVItemObSved",
                PROP_Text       = "Общие сведения",
                PROP_ImageName  = "mnObSved",
                PROP_ParentName = "",
                IsExpanded      = true
            };

            _Node.PROP_Docum             = new UserDocument(_Node);
            _Node.PROP_Docum.PROP_Otchet = new UserOtcher_InformCreate {
                PROP_Docum = _Node.PROP_Docum
            };
            _Node.MET_Inizial();
            {
                // ВЕТКА Паспортная часть (Сразу ставим на нем фокус)
                _Node = new UserNodes_Inform
                {
                    PROP_TipNodes   = eTipNodes.Inform,
                    Name            = "eleTVItemPasp",
                    PROP_Text       = "Паспортная часть",
                    PROP_ImageName  = "mnPasp",
                    PROP_ParentName = "eleTVItemObSved"
                };
                // Если пациент умер, то пишем сообщение
                if (Convert.ToString(MyGlo.HashKBOL["DSmerti"]) != "")
                {
                    _Node.PROP_ImageName = "mnAngel";
                    _Node.PROP_TextDown  = "   Пациент Умер";
                }
                _Node.PROP_Docum             = new UserDocument(_Node);
                _Node.PROP_Docum.PROP_Otchet = new UserOtcher_InformPasport {
                    PROP_Docum = _Node.PROP_Docum
                };
                _Node.MET_Inizial();
                _Node.IsSelected = true;

                // ВЕТКА История болезни
                _Node = new UserNodes_Inform
                {
                    PROP_TipNodes   = eTipNodes.Inform,
                    Name            = "eleTVItem_History",
                    PROP_Text       = "История болезни",
                    PROP_ImageName  = "mnHistory",
                    PROP_ParentName = "eleTVItemObSved"
                };
                _Node.PROP_Docum             = new UserDocument(_Node);
                _Node.PROP_Docum.PROP_Otchet = new UserOtcher_History {
                    PROP_Docum = _Node.PROP_Docum
                };
                ((UserOtcher_History)_Node.PROP_Docum.PROP_Otchet).PUB_Ban = PUB_Menu == 0;
                _Node.MET_Inizial();

                // ВЕТКА Канцер регистра
                if (MySql.MET_QueryBool(MyQuery.MET_varIfRakReg_Select_1(MyGlo.KL)))                // только если есть пациент в Канцер-Регистре
                {
                    _Node = new UserNodes_Inform
                    {
                        PROP_TipNodes   = eTipNodes.Inform,
                        Name            = "eleTVItem_KancerRegistr",
                        PROP_Text       = "Канцер-Регистр",
                        PROP_ImageName  = "mnRakReg",
                        PROP_ParentName = "eleTVItemObSved"
                    };
                    _Node.PROP_Docum             = new UserDocument(_Node);
                    _Node.PROP_Docum.PROP_Otchet = new UserOtcher_InformKancerRegistr {
                        PROP_Docum = _Node.PROP_Docum
                    };

                    _Node.MET_Inizial();
                }

                // ВЕТКА Общие документы
                _Node = new UserNodes_RootObDoсum
                {
                    PROP_TipNodes    = eTipNodes.Kdl_RootsList,
                    Name             = "eleTVItem_ObDocum",
                    PROP_Text        = "Общие документы",
                    PROP_TextDefault = "Общие документы",
                    PROP_ImageName   = "mnObDocum",
                    PROP_ParentName  = "eleTVItemObSved"
                };
                ((UserNodes_RootObDoсum)_Node).PROP_shaTipObsled = 140;
                _Node.PROP_Docum             = new UserDocument(_Node);
                _Node.PROP_Docum.PROP_Otchet = new UserOtchet_Roots {
                    PROP_Docum = _Node.PROP_Docum
                };
                _Node.MET_Inizial();

                bool _accessPdfView = false;
                // Для тех кто может смотреть, показываем только если есть протоколы
                if (MyPdf.PROP_AccessPdf == eAccessPdf.View)
                {
                    _accessPdfView = PUB_Protokol.Exists(p => p.PROP_TipProtokol.PROP_TipDocum == eTipDocum.Kdl &&
                                                         p.PROP_NumShablon == 2000 &&
                                                         p.PROP_xDelete == 0);
                }
                // Показываем админу, редактору в любом случае и просмоторщику если есть протоколы
                if (MyPdf.PROP_AccessPdf == eAccessPdf.Admin ||
                    MyPdf.PROP_AccessPdf == eAccessPdf.Edit ||
                    _accessPdfView)
                {
                    // ВЕТКА Pdf документы
                    _Node = new UserNodes_RootPdf
                    {
                        PROP_TipNodes    = eTipNodes.Kdl_RootsPdf,
                        Name             = "eleTVItem_Pdf",
                        PROP_Text        = "PDF документы",
                        PROP_TextDefault = "PDF документы",
                        PROP_ImageName   = "mnPdfMain",
                        PROP_ParentName  = "eleTVItemObSved"
                    };
                    ((UserNodes_RootPdf)_Node).PROP_shaTipObsled = 2;
                    _Node.PROP_Docum             = new UserDocument(_Node);
                    _Node.PROP_Docum.PROP_Otchet = new UserOtchet_RootsPdf {
                        PROP_Docum = _Node.PROP_Docum
                    };
                    _Node.MET_Inizial();
                }

                // ВЕТКА Телефоны
                _Node = new UserNodes_Inform
                {
                    Name             = "elePhone",
                    PROP_Text        = "Телефоны",
                    PROP_TextDefault = "Телефоны",
                    PROP_ImageName   = "mnPhone",
                    PROP_ParentName  = "",
                };
                _Node.PROP_Docum             = new UserDocument(_Node);
                _Node.PROP_Docum.PROP_Otchet = new UserOtcher_Phone {
                    PROP_Docum = _Node.PROP_Docum
                };
                _Node.MET_Inizial();

                // ВЕТКА Сотрудники (Только для админов)
                if (MyGlo.PROP_Admin)
                {
                    _Node = new UserNodes_Inform
                    {
                        Name             = "eleStaff",
                        PROP_Text        = "Сотрудники",
                        PROP_TextDefault = "Сотрудники",
                        PROP_ImageName   = "mnMen",
                        PROP_ParentName  = "",
                    };
                    _Node.PROP_Docum             = new UserDocument(_Node);
                    _Node.PROP_Docum.PROP_Otchet = new UserOtcher_Staff {
                        PROP_Docum = _Node.PROP_Docum
                    };
                    _Node.MET_Inizial();
                }
            }
        }
Beispiel #10
0
        /// <summary>МЕТОД Формируем дерево</summary>
        public override void MET_CreateTree()
        {
            // Преварительно чистим  дерево
            MyGlo.TreeView.Items.Clear();

            if (MyGlo.KL > 0)
            {
                // Чистим структуру протоколов
                UserProtokol.MET_ClearProtokol();
                // Загружаем все протоколы Protokol таблицы kdl, по KL пациента
                UserProtokol.MET_FactoryProtokolArray(eTipDocum.Kdl, MyGlo.KL, "KL");

                // ВЕТКА Общие сведенья
                VirtualNodes _Node = new UserNodes_Inform
                {
                    PROP_TipNodes   = eTipNodes.Main,
                    Name            = "eleTVItemObSved",
                    PROP_Text       = "Общие сведения",
                    PROP_ImageName  = "mnObSved",
                    PROP_ParentName = "",
                    IsExpanded      = true
                };
                _Node.PROP_Docum             = new UserDocument(_Node);
                _Node.PROP_Docum.PROP_Otchet = new UserOtcher_InformCreate {
                    PROP_Docum = _Node.PROP_Docum
                };
                _Node.MET_Inizial();
                {
                    // ВЕТКА Паспортная часть (Сразу ставим на нем фокус)
                    _Node = new UserNodes_Inform
                    {
                        PROP_TipNodes   = eTipNodes.Inform,
                        Name            = "eleTVItemPasp",
                        PROP_Text       = "Паспортная часть",
                        PROP_ImageName  = "mnPasp",
                        PROP_ParentName = "eleTVItemObSved"
                    };
                    // Если пациент умер, то пишем сообщение
                    if (Convert.ToString(MyGlo.HashKBOL["DSmerti"]) != "")
                    {
                        _Node.PROP_TextDown = "   Пациент Умер";
                    }
                    _Node.PROP_Docum             = new UserDocument(_Node);
                    _Node.PROP_Docum.PROP_Otchet = new UserOtcher_InformPasport {
                        PROP_Docum = _Node.PROP_Docum
                    };
                    _Node.MET_Inizial();
                    _Node.IsSelected = true;

                    // ВЕТКА Для лабораторных исследований (протоколы с 1000 по 1999)
                    _Node = new UserNodes_RootLaboratory
                    {
                        PROP_TipNodes    = eTipNodes.Kdl_RootsList,
                        Name             = "eleTVItem_Laboratory",
                        PROP_Text        = "Исследования",
                        PROP_TextDefault = "Исследования",
                        PROP_ImageName   = "mnKdl_green",
                        PROP_ParentName  = "eleTVItemObSved",
                        IsExpanded       = true
                    };
                    _Node.PROP_Docum             = new UserDocument(_Node);
                    _Node.PROP_Docum.PROP_Otchet = new UserOtchet_Roots {
                        PROP_Docum = _Node.PROP_Docum
                    };
                    _Node.MET_Inizial();
                }
            }
            else
            {
                VirtualUserWindow _WinSpr = new UserWindow_Laboratory();
                _WinSpr.PROP_Modal  = true;
                _WinSpr.WindowStyle = WindowStyle.ToolWindow;
                _WinSpr.ShowDialog();
                if (_WinSpr.PROP_Return)
                {
                    // Запуск программы MET_Window_Loaded()
                    MyGlo.Event_ReloadWindows?.Invoke(true);
                }
            }
        }
Beispiel #11
0
        /// <summary>МЕТОД Сохраняем данные</summary>
        public override bool MET_Save()
        {
            // Срабатываю фокус поля, что бы выполнилась Lua функция OnChange
            UIElement _ElementWithFocus = Keyboard.FocusedElement as UIElement;                             // элемент фокуса

            if (_ElementWithFocus?.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next)) ?? false) // сдвигаю фокус на следующее поле
            {
                _ElementWithFocus.Focus();
            }
            // возвращаю фокус на место
            string      _Rezult = "";                                           // результат ответа
            VirtualPole _Pole;                                                  // элементы поля
            DateTime    _Date = DateTime.Today;                                 // дата осмотра

            // Формируем строку ответов
            foreach (DictionaryEntry _DiEnt in PUB_HashPole)
            {
                _Pole = (VirtualPole)_DiEnt.Value;                              // наше поле с ответом

                if (_Pole.PROP_Type == eVopros.Label)
                {
                    continue;                                                            // не берем поля с меткой
                }
                if (_Pole.PROP_VarId > 0 && !string.IsNullOrWhiteSpace(_Pole.PROP_Text)) // если есть ответ, то вставляем его в строку ответов
                {
                    _Rezult += "\\" + _Pole.PROP_VarId + "#" + _Pole.PROP_Text;
                }
                if (_Pole.Name == "DateOsmotr")
                {
                    _Date = Convert.ToDateTime(_Pole.PROP_Text);
                }
                // Запускаем Lua функцию, перед сохранием, если есть.
                if (!(_Pole.PROP_Lua?.MET_OnBeforeSave() ?? true))
                {
                    return(false);
                }
            }
            // Сохраняем ответы
            if (_Rezult.Length > 0)
            {
                // Если данные уже сохроняли, то просто обновляем, иначе добавляем
                string _StrSql;                                                     // строка SQL запроса
                int    _User     = MyGlo.User;
                string _UserName = MyGlo.UserName;
                if (PROP_Cod > 0)
                {
                    // Если установлен админ - то обновляем протокол с пользователем, создавшем данный протокол
                    if (MyGlo.PROP_Admin || MyGlo.FlagEdit)
                    {
                        _User     = PROP_Docum.PROP_Protokol.PROP_xUserUp;
                        _UserName = MyMet.MET_UserName(_User);
                    }
                    // Обновим логи
                    PROP_Docum.PROP_Protokol.MET_ChangeLogs(MyGlo.User, "Изменён");
                    _StrSql = MyQuery.MET_Protokol_Update_1(PROP_Cod, _Rezult, DateTime.Today, _User, _Date,
                                                            PROP_TipProtokol.PROP_Prefix, PROP_Docum.PROP_Protokol.PROP_xLog);
                    // Обновим протокол в SQL
                    MySql.MET_QueryNo(_StrSql);
                    // Обновим Protokol
                    PROP_Docum.PROP_Protokol.MET_Save(_Rezult, DateTime.Today, _User, _Date);
                }
                else
                {
                    string _xLog = UserLog.MET_CreateLogs();
                    PROP_Cod = MySql.MET_GetNextRef(PROP_TipProtokol.PROP_NextRef);
                    _StrSql  = MyQuery.MET_Protokol_Insert_1(PROP_Cod, MyGlo.IND, PRO_NomerShablon, _Rezult,
                                                             MyGlo.KL, DateTime.Today, _User, PUB_VirtualNodes.PROP_shaIndex, _Date, PROP_TipProtokol.PROP_Prefix, _xLog);
                    // Сохраним протокол в SQL
                    MySql.MET_QueryNo(_StrSql);
                    // Создадим Protokol
                    PROP_Docum.PROP_Protokol = UserProtokol.MET_FactoryProtokol(PUB_VirtualNodes.PROP_shaTipProtokol.PROP_TipDocum, PROP_Cod);
                }
                if (!PUB_VirtualNodes.PROP_shaPresenceProtokol)
                {
                    PUB_VirtualNodes.PROP_shaPresenceProtokol = true;           // пометили, что сохранили шаблон
                }
                // Дата протокола
                PUB_VirtualNodes.PROP_Data = _Date;
                // Нижний текст вкладок
                PUB_VirtualNodes.PROP_TextDown = _Date.ToString().Substring(0, 10) + " " + _UserName;
                // Только для добавляемых веток
                PUB_VirtualNodes.PROP_Text = PUB_VirtualNodes.PROP_TextDefault;
                PROP_EditShablon           = false;                             // сохранили шаблон
                PUB_VirtualNodes.PROP_Docum.PROP_Otchet.PROP_NewCreate = true;  // отчет необходимо переформировать
                // Выполняем сохранение определенных полей
                foreach (DictionaryEntry _DiEnt in PUB_HashPole)
                {
                    _Pole = (VirtualPole)_DiEnt.Value;                          // наше поле с ответом
                    // Запускаем Lua функцию, после сохрания, если есть.
                    _Pole?.PROP_Lua?.MET_OnSave();
                    // Запускаем сохранение полей
                    if (!_Pole.MET_Save())
                    {
                        MessageBox.Show("Ошибка сохранения");
                        return(false);
                    }
                }
                UserKbolInfo.MET_SaveKbolInfo();
                return(true);
            }
            return(false);
        }
Beispiel #12
0
        /// <summary>МЕТОД Сохраняем данные</summary>
        public override bool MET_Save()
        {
            // Сохраняем Pdf файл на сервер
            if (!PRI_Page.MET_Save())
            {
                return(false);
            }

            // возвращаю фокус на место
            string      _Rezult = "";                                                                         // результат ответа
            VirtualPole _Pole;                                                                                // элементы поля
            DateTime    _Date      = PROP_NewProtokol ? DateTime.Today : PROP_Docum.PROP_Protokol.PROP_pDate; // дата создания протокола
            string      _textDocum = "";

            // Формируем строку ответов
            foreach (DictionaryEntry _DiEnt in PUB_HashPole)
            {
                _Pole = (VirtualPole)_DiEnt.Value;                                       // наше поле с ответом
                if (_Pole.PROP_VarId > 0 && !string.IsNullOrWhiteSpace(_Pole.PROP_Text)) // если есть ответ, то вставляем его в строку ответов
                {
                    _Rezult += "\\" + _Pole.PROP_VarId + "#" + _Pole.PROP_Text;
                }

                if (_Pole.PROP_VarId == 1)
                {
                    _textDocum = _Pole.PROP_Text;
                }
                ;
            }

            // Если данные уже сохроняли, то просто обновляем, иначе добавляем
            string _StrSql;                                                     // строка SQL запроса
            int    _User     = MyGlo.User;
            string _UserName = MyGlo.UserName;

            if (PROP_Cod > 0)
            {
                // Если установлен админ - то обновляем протокол с пользователем, создавшем данный протокол
                if (MyGlo.PROP_Admin || MyGlo.FlagEdit)
                {
                    _User     = PROP_Docum.PROP_Protokol.PROP_xUserUp;
                    _UserName = MyMet.MET_UserName(_User);
                }
                // Обновим логи
                PROP_Docum.PROP_Protokol.MET_ChangeLogs(MyGlo.User, "Изменён");
                _StrSql = MyQuery.MET_Protokol_Update_1(PROP_Cod, _Rezult, DateTime.Today, _User, _Date,
                                                        PROP_TipProtokol.PROP_Prefix, PROP_Docum.PROP_Protokol.PROP_xLog);
                // Обновим протокол в SQL
                MySql.MET_QueryNo(_StrSql);
                // Обновим Protokol
                PROP_Docum.PROP_Protokol.MET_Save(_Rezult, DateTime.Today, _User, _Date);
            }
            else
            {  // Новый протокол
                string _xLog = UserLog.MET_CreateLogs();
                PROP_Cod = MySql.MET_GetNextRef(PROP_TipProtokol.PROP_NextRef);
                _StrSql  = MyQuery.MET_Protokol_Insert_1(PROP_Cod, MyGlo.IND, PRO_NomerShablon, _Rezult,
                                                         MyGlo.KL, DateTime.Today, _User, PUB_VirtualNodes.PROP_shaIndex, _Date, PROP_TipProtokol.PROP_Prefix, _xLog);
                // Сохраним протокол в SQL
                MySql.MET_QueryNo(_StrSql);
                // Создадим Protokol
                PROP_Docum.PROP_Protokol = UserProtokol.MET_FactoryProtokol(PUB_VirtualNodes.PROP_shaTipProtokol.PROP_TipDocum, PROP_Cod);
            }
            if (!PUB_VirtualNodes.PROP_shaPresenceProtokol)
            {
                PUB_VirtualNodes.PROP_shaPresenceProtokol = true;           // пометили, что сохранили шаблон
            }
            // Дата протокола
            PUB_VirtualNodes.PROP_Data = _Date;
            // Нижний текст вкладок
            PUB_VirtualNodes.PROP_TextDown = _Date.ToString().Substring(0, 10) + " " + _UserName;
            // Наименование ветки
            PUB_VirtualNodes.PROP_Text        = _textDocum;
            PUB_VirtualNodes.PROP_TextDefault = _textDocum;

            PROP_EditShablon = false;                                       // сохранили шаблон
            PUB_VirtualNodes.PROP_Docum.PROP_Otchet.PROP_NewCreate = true;  // отчет необходимо переформировать
            return(true);
        }
Beispiel #13
0
        /// <summary>МЕТОД Формируем дерево</summary>
        public override void MET_CreateTree()
        {
            // Преварительно чистим  дерево
            MyGlo.TreeView.Items.Clear();
            if (MyGlo.KL > 0)
            {
                // Чистим структуру протоколов
                UserProtokol.MET_ClearProtokol();
                // Загружаем все протоколы Protokol таблицы kdl, по KL пациента
                UserProtokol.MET_FactoryProtokolArray(eTipDocum.Kdl, MyGlo.KL, "KL");
                // Загружаем все протоколы Protokol таблицы Pol, по KL пациента
                UserProtokol.MET_FactoryProtokolArray(eTipDocum.Pol, MyGlo.KL, "KL");
                // Загружаем все протоколы Protokol таблицы Stac, по KL пациента
                UserProtokol.MET_FactoryProtokolArray(eTipDocum.Stac, MyGlo.KL, "KL");

                // ВЕТКА Общие сведенья
                VirtualNodes _Node = new UserNodes_Inform
                {
                    PROP_TipNodes   = eTipNodes.Main,
                    Name            = "eleTVItemObSved",
                    PROP_Text       = "Общие сведения",
                    PROP_ImageName  = "mnObSved",
                    PROP_ParentName = "",
                    IsExpanded      = true
                };
                _Node.PROP_Docum             = new UserDocument(_Node);
                _Node.PROP_Docum.PROP_Otchet = new UserOtcher_InformCreate {
                    PROP_Docum = _Node.PROP_Docum
                };
                _Node.MET_Inizial();
                {
                    // ВЕТКА Паспортная часть (Сразу ставим на нем фокус)
                    _Node = new UserNodes_Inform
                    {
                        PROP_TipNodes   = eTipNodes.Inform,
                        Name            = "eleTVItemPasp",
                        PROP_Text       = "Паспортная часть",
                        PROP_ImageName  = "mnPasp",
                        PROP_ParentName = "eleTVItemObSved"
                    };
                    // Если пациент умер, то пишем сообщение
                    if (Convert.ToString(MyGlo.HashKBOL["DSmerti"]) != "")
                    {
                        _Node.PROP_TextDown = "   Пациент Умер";
                    }
                    _Node.PROP_Docum             = new UserDocument(_Node);
                    _Node.PROP_Docum.PROP_Otchet = new UserOtcher_InformPasport {
                        PROP_Docum = _Node.PROP_Docum
                    };
                    _Node.MET_Inizial();
                    _Node.IsSelected = true;

                    // ВЕТКА История болезни
                    _Node = new UserNodes_Inform
                    {
                        PROP_TipNodes   = eTipNodes.Inform,
                        Name            = "eleTVItem_History",
                        PROP_Text       = "История болезни",
                        PROP_ImageName  = "mnHistory",
                        PROP_ParentName = "eleTVItemObSved"
                    };
                    _Node.PROP_Docum             = new UserDocument(_Node);
                    _Node.PROP_Docum.PROP_Otchet = new UserOtcher_History {
                        PROP_Docum = _Node.PROP_Docum
                    };
                    ((UserOtcher_History)_Node.PROP_Docum.PROP_Otchet).PUB_Ban = PUB_Menu == 0;
                    _Node.MET_Inizial();

                    // ВЕТКА Канцер регистра
                    if (MySql.MET_QueryBool(MyQuery.MET_varIfRakReg_Select_1(MyGlo.KL)))
                    // только если есть пациент в Канцер-Регистре
                    {
                        _Node = new UserNodes_Inform
                        {
                            PROP_TipNodes   = eTipNodes.Inform,
                            Name            = "eleTVItem_KancerRegistr",
                            PROP_Text       = "Канцер-Регистр",
                            PROP_ImageName  = "mnRakReg",
                            PROP_ParentName = "eleTVItemObSved"
                        };
                        _Node.PROP_Docum             = new UserDocument(_Node);
                        _Node.PROP_Docum.PROP_Otchet = new UserOtcher_InformKancerRegistr
                        {
                            PROP_Docum = _Node.PROP_Docum
                        };
                        _Node.MET_Inizial();
                    }

                    // ВЕТКА Для направлений
                    _Node = new UserNodes_RootNaprInOtherLpu
                    {
                        PROP_TipNodes    = eTipNodes.Pol_RootsList,
                        Name             = "eleTVItem_NaprOtherLpu",
                        PROP_Text        = "Направления",
                        PROP_TextDefault = "Направления",
                        PROP_ImageName   = "mnSelectPac",
                        PROP_ParentName  = "eleTVItemObSved",
                        IsExpanded       = true
                    };
                    _Node.PROP_Docum             = new UserDocument(_Node);
                    _Node.PROP_Docum.PROP_Otchet = new UserOtchet_Roots {
                        PROP_Docum = _Node.PROP_Docum
                    };
                    _Node.MET_Inizial();

                    // ВЕТКА Для документов - внешних ЛПУ
                    _Node = new UserNodes_OtherLpu
                    {
                        PROP_TipNodes    = eTipNodes.Kdl_RootsList,
                        Name             = "eleTVItem_OtherLpu",
                        PROP_Text        = "Документы",
                        PROP_TextDefault = "Документы",
                        PROP_ImageName   = "mnObDocum",
                        PROP_ParentName  = "eleTVItemObSved",
                        IsExpanded       = true
                    };
                    _Node.PROP_Docum             = new UserDocument(_Node);
                    _Node.PROP_Docum.PROP_Otchet = new UserOtchet_Roots {
                        PROP_Docum = _Node.PROP_Docum
                    };
                    _Node.MET_Inizial();
                }
            }
            else
            {
                VirtualUserWindow _WinSpr = new UserWindow_OtherLpu();
                _WinSpr.PROP_Modal  = true;
                _WinSpr.WindowStyle = WindowStyle.ToolWindow;
                _WinSpr.ShowDialog();
                if (_WinSpr.PROP_Return)
                {
                    // Запуск программы MET_Window_Loaded()
                    MyGlo.Event_ReloadWindows?.Invoke(true);
                }
            }
        }
Beispiel #14
0
        /// <summary>МЕТОД Формируем отчет История болезни</summary>
        protected override void MET_Otchet()
        {
            PRO_Paragraph = new Paragraph();
            MyGlo.HashOtchet.Add("eleTVItem_History", this);

            // Добавляем кнопки фильтра истории
            StackPanel _Panel = new StackPanel();

            _Panel.Orientation = Orientation.Horizontal;
            PRO_Paragraph.Inlines.Add(_Panel);
            Button _ButtonSort = new Button();
            Image  _Image      = new Image();

            _Image.Height         = 20;
            _Image.Width          = 20;
            _Image.Source         = (BitmapImage)FindResource("mnGreenUp");
            _ButtonSort.Content   = _Image;
            _ButtonSort.ToolTip   = "Меняет сортировку по дате посещения на обратную";
            _ButtonSort.Focusable = false;
            _ButtonSort.Tag       = 1;
            _ButtonSort.Click    += PART_ButtonSort_Click;
            _Panel.Children.Add(_ButtonSort);
            Label _LabelFiltr = new Label();

            _LabelFiltr.Content           = "Фильтр по:";
            _LabelFiltr.VerticalAlignment = VerticalAlignment.Center;
            _Panel.Children.Add(_LabelFiltr);
            RadioButton _ButtonAll = new RadioButton();

            _ButtonAll.Content   = "Все";
            _ButtonAll.ToolTip   = "Отображает Все посещения";
            _ButtonAll.Margin    = new Thickness(5);
            _ButtonAll.IsChecked = true;
            _ButtonAll.Checked  += PART_RadioButton_Checked;
            _Panel.Children.Add(_ButtonAll);
            RadioButton _ButtonIssl = new RadioButton();

            _ButtonIssl.Content  = "Параклиника";
            _ButtonIssl.ToolTip  = "Отображает только посещения в Параклинику";
            _ButtonIssl.Margin   = new Thickness(5);
            _ButtonIssl.Checked += PART_RadioButton_Checked;
            _Panel.Children.Add(_ButtonIssl);
            RadioButton _ButtonStac = new RadioButton();

            _ButtonStac.Content  = "Стационар";
            _ButtonStac.ToolTip  = "Отображает только посещения Стационара";
            _ButtonStac.Margin   = new Thickness(5);
            _ButtonStac.Checked += PART_RadioButton_Checked;
            _Panel.Children.Add(_ButtonStac);
            RadioButton _ButtonPol = new RadioButton();

            _ButtonPol.Content  = "Поликлиника";
            _ButtonPol.ToolTip  = "Отображает только посещения Поликлиники";
            _ButtonPol.Margin   = new Thickness(5);
            _ButtonPol.Checked += PART_RadioButton_Checked;
            _Panel.Children.Add(_ButtonPol);
            RadioButton _ButtonKdl = new RadioButton();

            _ButtonKdl.Content = "Диагностика";
            _ButtonKdl.ToolTip = "     Отображает только те посещения,\n" +
                                 "в которых есть результат Диагностических исследований\n" +
                                 "(пока только Гистологии, Цитологии)";
            _ButtonKdl.Margin   = new Thickness(5);
            _ButtonKdl.Checked += PART_RadioButton_Checked;
            _Panel.Children.Add(_ButtonKdl);
            PRO_Paragraph.Inlines.Add(new LineBreak());                         // разрыв строки
            // Заполняем список шаблонов
            MySql.MET_DsAdapterFill(MyQuery.MET_History_Select_1(MyGlo.KL), "History");
            foreach (DataRow _Row in MyGlo.DataSet.Tables["History"].Rows)
            {
                PRO_RowShablon = _Row;
                UserPole_History _Pole = new UserPole_History();
                string           _Icon = "";
                // Тип поля
                _Pole.PROP_Type = (eTipDocum)MET_PoleInt("Nom");
                // Код документа
                _Pole.PROP_Cod       = MET_PoleDec("Cod");
                _Pole.PROP_Vrach     = MET_PoleStr("Vr");
                _Pole.PROP_Dp        = MET_PoleDat("Dp");
                _Pole.PROP_Diag      = MET_PoleStr("D");
                _Pole.PROP_Profil    = MET_PoleStr("Profil");
                _Pole.PROP_CodApstac = MET_PoleDec("CodApstac");
                _Pole.PROP_Kdl       = MET_PoleStr("kdl");
                _Pole.PROP_IsDelete  = MET_PoleInt("xDelete") == 1;
                _Pole.PROP_xLog      = MET_PoleStr("xLog");
                // В зависимости от типа: поликлинника/стационар/параклиника
                switch (_Pole.PROP_Type)
                {
                case eTipDocum.Pol:
                    _Icon               = "mnPosPolikl";
                    _Pole.PROP_Date     = MET_PoleDat("Dp");
                    _Pole.PROP_Document = MET_PoleStr("Profil");
                    _Pole.PROP_Vrach    = MET_PoleStr("Vr");
                    _Pole.PROP_Diag     = MET_PoleStr("D");
                    // Цвет
                    if (MET_PoleInt("pCount") > 0)
                    {
                        _Pole.PROP_Background = Brushes.Azure;
                    }
                    // Тип посещения (разовое, обращение)
                    _Pole.PROP_Metca = MET_PoleStr("Metka");
                    // Если нет протоколов, то
                    if (MET_PoleInt("pCount") == 0)
                    {
                        _Pole.PROP_Metca += " (без протоколов)";
                        _Pole.IsEnabled   = false;
                    }
                    // Ставим значек консилиум
                    if (MET_PoleStr("ImageInform") == "консилиум")
                    {
                        _Pole.MET_LoadIconInform("mnKons", "Наличие консилиума");
                    }
                    _Pole.Event_OpenNewPoleHistory = MET_OpenPolicl;
                    break;

                case eTipDocum.Stac:
                    _Icon = MET_PoleStr("ImageInform");
                    string _Dk = MET_PoleDat("Dk");
                    if (_Dk == "")
                    {
                        _Dk = "(по сегодня)";
                    }
                    _Pole.PROP_Date     = MET_PoleDat("Dp") + " - " + _Dk;
                    _Pole.PROP_Document = MET_PoleStr("Profil");
                    _Pole.PROP_Vrach    = MET_PoleStr("Vr");
                    _Pole.PROP_Diag     = MET_PoleStr("D");
                    // Цвет
                    if (MET_PoleInt("pCount") > 0)
                    {
                        _Pole.PROP_Background = Brushes.AliceBlue;
                    }
                    // Если нет протоколов, то
                    if (MET_PoleInt("pCount") == 0)
                    {
                        _Pole.PROP_Metca = "(без протоколов)";
                        _Pole.IsEnabled  = false;
                    }
                    _Pole.Event_OpenNewPoleHistory = MET_OpenStac;
                    break;

                case eTipDocum.Paracl:
                    _Icon                   = "mnParacl";
                    _Pole.PROP_Date         = MET_PoleDat("Dp");
                    _Pole.PROP_Document     = MET_PoleStr("Profil");
                    _Pole.PROP_Vrach        = MET_PoleStr("Vr");
                    _Pole.PROP_Background   = Brushes.BlanchedAlmond;
                    _Pole.PROP_NumerShablon = MET_PoleInt("pCount");
                    _Pole.PROP_IsTexted     = true;
                    _Pole.PROP_DocumHistory = new UserDocument(_Pole.PROP_Type);
                    _Pole.PROP_DocumHistory.PROP_Protokol = UserProtokol.MET_FactoryProtokol(_Pole.PROP_Type, (int)_Pole.PROP_Cod);
                    _Pole.MET_Inicial();
                    _Pole.Event_OpenNewPoleHistory = MET_Protokol;
                    // Костыль для физиологов
                    if (_Pole.PROP_NumerShablon > 300 & _Pole.PROP_NumerShablon < 400)
                    {
                        _Icon = "mnPhysiology";
                        _Pole.PROP_Background = Brushes.LightYellow;
                    }
                    break;
                }
                // Иконка
                _Pole.MET_LoadIcon(_Icon);
                // Если есть результат КДЛ, то окрашиваем это поле в зависимости от результата
                if (_Pole.PROP_Kdl != "" && _Pole.PROP_Type != eTipDocum.Paracl)
                {
                    MET_ColorKDL(_Pole);
                }
                // Добавляем в очередь
                PRO_PoleHistory.Add(_Pole);
                // Добавляем поле в параграф
                PRO_Paragraph.Inlines.Add(_Pole);
                if (_Pole.PROP_Kdl != "" && _Pole.PROP_Type == eTipDocum.Paracl)
                {
                    var _KDL = MET_GreatKDL(_Pole);
                    // Добавляем в очередь
                    PRO_PoleHistory.Add(_KDL);
                    // Добавляем поле в параграф
                    PRO_Paragraph.Inlines.Add(_KDL);
                }
                //PRO_Paragraph.Inlines.Add(new LineBreak());                     // разрыв строки
            }
        }
        /// <summary>СОБЫТИЕ После загрузки окна</summary>
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            PROP_FIOkbol = MyGlo.FIO;
            UserProtokol _Protokol = null;

            if (PROP_PoleHistory.PROP_Nodes != null)                            // протоколы основной карточки
            {
                _Protokol = PROP_PoleHistory.PROP_DocumHistory?.PROP_Protokol;
            }
            else                                                                // из истории болезни
            {
                PROP_MyTipProtokol = new MyTipProtokol(PROP_PoleHistory.PROP_Type);
                if (PROP_PoleHistory.PROP_IsTexted)                               // ... если протокол
                {
                    PROP_CodProtokol = (int)PROP_PoleHistory.PROP_Cod;
                    // Протокол

                    _Protokol = UserProtokol.MET_FactoryProtokol(PROP_MyTipProtokol.PROP_TipDocum, PROP_CodProtokol);
                }
                else                                                            // ... если карточка
                {
                    PROP_KLkbol = MyGlo.KL;
                    PROP_Date   = DateTime.Parse(PROP_PoleHistory.PROP_Dp);
                    PROP_IND    = PROP_PoleHistory.PROP_Cod;
                    PROP_Tip    = "карта";
                }
            }
            // Только протоколы
            if (_Protokol != null)
            {
                // Запись протокола
                PROP_CodProtokol = _Protokol.PROP_Cod;
                PROP_KLkbol      = _Protokol.PROP_KL;
                // Для kdl, IND будет равен коду протокола
                PROP_IND           = _Protokol.PROP_TipProtokol.PROP_TipDocum == eTipDocum.Kdl ? PROP_CodProtokol : _Protokol.PROP_CodApstac;
                PROP_Index         = _Protokol.PROP_pIndex;
                PROP_NumShablon    = _Protokol.PROP_NumShablon;
                PROP_Date          = _Protokol.PROP_pDate;
                PROP_DateUp        = _Protokol.PROP_xDateUp;
                PROP_UserUp        = _Protokol.PROP_xUserUp;
                PROP_UserUpName    = _Protokol.PROP_UserName;
                PROP_MyTipProtokol = _Protokol.PROP_TipProtokol;
                PROP_xDelete       = _Protokol.PROP_xDelete;
                PROP_Tip           = "протокол";
            }

            PRI_KbolInfo = UserKbolInfo.MET_FactoryKbolInfo(PROP_MyTipProtokol.PROP_KbolInfo, PROP_IND, MyGlo.KL);
            if (!PRI_KbolInfo.PROP_FlagNew && PRI_KbolInfo.PROP_jTag != null)
            {
                // Берем сразу отформатированные теги
                PROP_jTag = PRI_KbolInfo.PROP_Json.ToString();
                PROP_Oms  = PRI_KbolInfo.PROP_Oms == 1;
                PART_CheckBoxOms.IsEnabled    = PROP_MyTipProtokol.PROP_TipDocum == eTipDocum.Kdl;
                PART_ButtonKbolInfo.IsEnabled = false;
            }
            else
            {
                PART_StacPanelKbolInfo.IsEnabled = false;
                PROP_jTag = "Нет записи kbolInfo";
            }
            // Запрет на проверку правописания
            PART_jTag.PART_TextBox.SpellCheck.IsEnabled = false;
        }
Beispiel #16
0
        /// <summary>МЕТОД Формируем дерево</summary>
        public override void MET_CreateTree()
        {
            // Заполняем основу дерево (паспорт + история)
            base.MET_CreateTree();
            // Загружаем все протоколы Protokol текущего стационара (внутри загружаются и ListShablon и Shablon)
            UserProtokol.MET_FactoryProtokolArray(eTipDocum.Stac, MyGlo.IND);

            // ВЕТКА Ошибки Стационара (для реестров)
            MySql.MET_DsAdapterFill(MyQuery.MET_varErrorStac_Select_1(MyGlo.Otd, MyGlo.User), "ErrorStac");
            int          _AllError = MyGlo.DataSet.Tables["ErrorStac"].Rows.Count;
            VirtualNodes _Node;

            if (_AllError > 0)
            {
                _Node = new UserNodes_Inform
                {
                    PROP_TipNodes   = eTipNodes.Main,
                    Name            = "eleTVItem_ErrorStac",
                    PROP_Text       = "\"Ошибки\" стационара",
                    PROP_ImageName  = "mnDevil",
                    PROP_ParentName = "eleTVItemObSved"
                };
                _Node.PROP_Docum             = new UserDocument(_Node);
                _Node.PROP_Docum.PROP_Otchet = new UserOtcher_ErrorStac {
                    PROP_Docum = _Node.PROP_Docum
                };
                _Node.MET_Inizial();

                var _UserError = MyGlo.DataSet.Tables["ErrorStac"].Compute("Count(Us)", "Us=1");
                _Node.PROP_TextDown = $"Ваших пациентов: {_UserError} из {_AllError}";

                if (_UserError != null)
                {
                    _Node.IsSelected = Convert.ToInt16(_UserError) > 0;
                }
            }

            // ВЕТКА Текущий стационар
            _Node = new UserNodes_Inform
            {
                PROP_TipNodes   = eTipNodes.Main,
                Name            = "eleTVItem_TekStac",
                PROP_Text       = "Текущий стационар",
                PROP_ParentName = "eleTVItemObSved",
                IsExpanded      = true
            };
            // Иконка в зависимости от типа стационара
            if (MySql.MET_QueryInt(MyQuery.s_Department_Select_2(MyGlo.Otd)) == 1)
            {
                _Node.PROP_ImageName = "mnStac";
            }
            else
            {
                _Node.PROP_ImageName = "mnStacDnev";
            }
            _Node.PROP_Docum             = new UserDocument(_Node);
            _Node.PROP_Docum.PROP_Otchet = new UserOtchet_Roots {
                PROP_Docum = _Node.PROP_Docum
            };
            _Node.MET_Inizial();
            {
                // ВЕТКА Приемное отделение
                _Node = new UserNodes_Inform
                {
                    PROP_TipNodes   = eTipNodes.Inform,
                    Name            = "eleTVItem_PriemnOtd",
                    PROP_Text       = "Приемное отделение",
                    PROP_ImageName  = "mnPriemnOtd",
                    PROP_ParentName = "eleTVItem_TekStac"
                };
                // Дата поступления - выписки
                string _DN = Convert.ToString(MyGlo.HashAPSTAC["DN"]);
                string _DK = Convert.ToString(MyGlo.HashAPSTAC["DK"]);
                _DN = _DN == "" ? "" : _DN.Substring(0, 10);
                _DK = _DK == "" ? " - в отделении" : " - " + _DK.Substring(0, 10);
                _Node.PROP_TextDown          = _DN + _DK;
                _Node.PROP_Docum             = new UserDocument(_Node);
                _Node.PROP_Docum.PROP_Otchet = new UserOtcher_InformPriem {
                    PROP_Docum = _Node.PROP_Docum
                };
                _Node.MET_Inizial();

                // ВЕТКА Осмотр при поступлении
                _Node = new UserNodes_EditVrStac
                {
                    PROP_TipNodes    = eTipNodes.Stac_Edit,
                    Name             = "eleTVItem_OneOsmotr",
                    PROP_Text        = "Осмотр при поступлении",
                    PROP_TextDefault = "Осмотр при поступлении",
                    PROP_ImageName   = "mnOneOsmotr",
                    PROP_ParentName  = "eleTVItem_TekStac"
                };
                _Node.PROP_shaNomerShablon        = 1;
                _Node.PROP_Docum                  = new UserDocument(_Node, eTipDocum.Stac);
                _Node.PROP_Docum.PROP_ListShablon = UserListShablon.MET_FactoryListShablon(eTipDocum.Stac, _Node.PROP_shaNomerShablon);
                _Node.PROP_Docum.PROP_Otchet      = new UserOtchet_EditVrStac {
                    PROP_Docum = _Node.PROP_Docum
                };
                _Node.MET_Inizial();
                {
                    // ВЕТКА Гистология
                    _Node = new UserNodes_EditVrStac
                    {
                        PROP_TipNodes    = eTipNodes.Stac_Edit,
                        Name             = "eleTVItem_Gistol",
                        PROP_Text        = "Гистология",
                        PROP_TextDefault = "Гистология",
                        PROP_ImageName   = "mnDoc_2",
                        PROP_ParentName  = "eleTVItem_OneOsmotr"
                    };
                    _Node.PROP_shaNomerShablon        = 9911;
                    _Node.PROP_Docum                  = new UserDocument(_Node, eTipDocum.Stac);
                    _Node.PROP_Docum.PROP_ListShablon = UserListShablon.MET_FactoryListShablon(eTipDocum.Stac, _Node.PROP_shaNomerShablon);
                    _Node.PROP_Docum.PROP_Otchet      = new UserOtchet_EditVrStac {
                        PROP_Docum = _Node.PROP_Docum
                    };
                    _Node.MET_Inizial();
                }

                // ВЕТКА Назначения мед. препаратов
                _Node = new UserNodes_NaznachMed
                {
                    PROP_TipNodes    = eTipNodes.EditDocum,
                    Name             = "eleTVItem_NaznachMed",
                    PROP_Text        = "Медикаменты",
                    PROP_TextDefault = "Медикаменты",
                    PROP_ImageName   = "mnNaznachMed",
                    // PROP_ParentName = "eleTVItem_Naznach"
                    PROP_ParentName = "eleTVItem_TekStac"
                };
                _Node.PROP_Docum             = new UserDocument(_Node);
                _Node.PROP_Docum.PROP_Otchet = new UserOtchet_NaznachMed {
                    PROP_Docum = _Node.PROP_Docum
                };
                _Node.MET_Inizial();
                _Node.PROP_prnPadding = 2;
                {
                    // ВЕТКА Бланк листа назначений
                    _Node = new UserNodes_Inform
                    {
                        PROP_TipNodes    = eTipNodes.Inform,
                        Name             = "eleTVItem_NaznachBlanck",
                        PROP_Text        = "Бланк листа назначений",
                        PROP_TextDefault = "Бланк листа назначений",
                        PROP_ImageName   = "mnDoc_7",
                        PROP_ParentName  = "eleTVItem_NaznachMed"
                                           //PROP_ParentName = "eleTVItem_Naznach"
                    };
                    _Node.PROP_Docum             = new UserDocument(_Node);
                    _Node.PROP_Docum.PROP_Otchet = new UserOtchet_NaznachBlanck {
                        PROP_Docum = _Node.PROP_Docum
                    };
                    _Node.MET_Inizial();
                    _Node.PROP_prnPadding = 2;
                }

                // ВЕТКА Анестезиолог
                _Node = new UserNodes_RootListVrStac
                {
                    PROP_TipNodes    = eTipNodes.Stac_RootsList,
                    Name             = "eleTVItem_Anest",
                    PROP_Text        = "Анестезиолог",
                    PROP_TextDefault = "Анестезиолог",
                    PROP_ImageName   = "mnAnest",
                    PROP_ParentName  = "eleTVItem_TekStac"
                };
                ((UserNodes_RootListVrStac)_Node).PROP_shaTipObsled = 130;
                _Node.PROP_Docum             = new UserDocument(_Node);
                _Node.PROP_Docum.PROP_Otchet = new UserOtchet_Roots {
                    PROP_Docum = _Node.PROP_Docum
                };
                _Node.MET_Inizial();

                // ВЕТКА Лечение
                _Node = new UserNodes_RootListVrStac
                {
                    PROP_TipNodes    = eTipNodes.Stac_RootsList,
                    Name             = "eleTVItem_Oper",
                    PROP_Text        = "Лечение",
                    PROP_TextDefault = "Лечение",
                    PROP_ImageName   = "mnOper",
                    PROP_ParentName  = "eleTVItem_TekStac"
                };
                ((UserNodes_RootListVrStac)_Node).PROP_shaTipObsled = 104;
                _Node.PROP_Docum             = new UserDocument(_Node);
                _Node.PROP_Docum.PROP_Otchet = new UserOtchet_Roots {
                    PROP_Docum = _Node.PROP_Docum
                };
                _Node.MET_Inizial();

                // ВЕТКА Обходы, консилиумы
                _Node = new UserNodes_RootListVrStac
                {
                    PROP_TipNodes    = eTipNodes.Stac_RootsList,
                    Name             = "eleTVItem_Obhod",
                    PROP_Text        = "Обходы, консилиумы",
                    PROP_TextDefault = "Обходы, консилиумы",
                    PROP_ImageName   = "mnObhod",
                    PROP_ParentName  = "eleTVItem_TekStac"
                };
                ((UserNodes_RootListVrStac)_Node).PROP_shaTipObsled = 110;
                _Node.PROP_Docum             = new UserDocument(_Node);
                _Node.PROP_Docum.PROP_Otchet = new UserOtchet_Roots {
                    PROP_Docum = _Node.PROP_Docum
                };
                _Node.MET_Inizial();

                // ВЕТКА Документы
                _Node = new UserNodes_RootListVrStac
                {
                    PROP_TipNodes    = eTipNodes.Stac_RootsList,
                    Name             = "eleTVItem_Dokum",
                    PROP_Text        = "Документы",
                    PROP_TextDefault = "Документы",
                    PROP_ImageName   = "mnDocuments",
                    PROP_ParentName  = "eleTVItem_TekStac"
                };
                ((UserNodes_RootListVrStac)_Node).PROP_shaTipObsled = 105;
                _Node.PROP_Docum             = new UserDocument(_Node);
                _Node.PROP_Docum.PROP_Otchet = new UserOtchet_Roots {
                    PROP_Docum = _Node.PROP_Docum
                };
                _Node.MET_Inizial();

                // ВЕТКА Выписные документы
                var _Node2 = new UserNodes_RootListVrStac
                {
                    PROP_TipNodes    = eTipNodes.Stac_RootsList,
                    Name             = "eleTVItem_Extact",
                    PROP_Text        = "Выписные документы",
                    PROP_TextDefault = "Выписные документы",
                    PROP_ImageName   = "mnGoHome",
                    PROP_ParentName  = "eleTVItem_TekStac"
                };
                _Node2.PROP_shaTipObsled      = 120;
                _Node2.PROP_Docum             = new UserDocument(_Node2);
                _Node2.PROP_Docum.PROP_Otchet = new UserOtchet_Roots {
                    PROP_Docum = _Node2.PROP_Docum
                };
                _Node2.MET_Inizial();
            }
        }