/// <summary>Пользователь создавший протокол</summary> /// <remarks>Только для 15 типа (метки), так как в начале протокола ещё нет</remarks> private void User() { string _User = ""; if (PROP_Protokol != null) { _User = MyMet.MET_UserName(PROP_Protokol.PROP_xUserUp); } PROP_Text = PROP_Text.Replace("[User]", _User); }
/// <summary>СОБЫТИЕ После загрузки окна</summary> /// <remarks>Работа с json https://www.newtonsoft.com/json/help/html/QueryingLINQtoJSON.htm </remarks> private void UserWindows_Loaded(object sender, RoutedEventArgs e) { PROP_Logs = new List <UserLog>(); // Если есть логи if (!string.IsNullOrEmpty(PRI_jLog)) { JObject _Json = JObject.Parse(PRI_jLog); foreach (var i in _Json["Log"].Children()) { var _Log = new UserLog(); _Log.Cod = (int)i["Cod"]; _Log.Date = (string)i["Date"]; _Log.Tip = (string)i["Tip"]; _Log.User = (int)i["User"]; _Log.UserName = MyMet.MET_UserName((int)i["User"]); _Log.Ver = (string)i["Ver"]; PROP_Logs.Add(_Log); } } PART_ListView.ItemsSource = PROP_Logs; }
/// <summary>МЕТОД Формируем отчет</summary> protected override void MET_Otchet() { // Заполняем строку данными запроса MySql.MET_DsAdapterFill(MyQuery.kbol_Select_2(MyGlo.KL), "Shablon"); PRO_RowShablon = MyGlo.DataSet.Tables["Shablon"].Rows[0]; // Номер амбулаторной карты xVopr = "Паспортные данные амбулаторного больного №"; xOtvet = MET_PoleStr("NomAK"); xAligment = 2; xParagraph = true; MET_Print(); // ФИО xVopr = " Пациент:"; xOtvet = MyGlo.FIO; xEnter = 1; xParagraph = true; MET_Print(); // Дата рождения xVopr = " Дата рождения:"; string _Age = MET_PoleStr("DSmerti") == "" ? MyMet.MET_Age(DateTime.Parse(MyGlo.DR), DateTime.Now) : ""; // если не умер, то считаем сколько ему лет _Age = _Age == "" ? "" : " (" + _Age + ")"; xOtvet = MyGlo.DR + _Age; xEnter = 1; MET_Print(); // Дата смерти if (MET_PoleStr("DSmerti") != "") { xVopr = " Дата смерти:"; string _Death = MyMet.MET_Age(DateTime.Parse(MyGlo.DR), DateTime.Parse(MET_PoleDat("DSmerti"))); _Death = _Death == "" ? "" : " (" + _Death + ")"; xOtvet = MET_PoleDat("DSmerti") + _Death; xEnter = 1; MET_Print(); } // Адрес проживания пациента if (MET_PoleStr("Adres") != "") { xVopr = " Адрес:"; xOtvet = MET_PoleStr("Adres"); xParagraph = true; MET_Print(); } // Домашний телефон if (MET_PoleStr("TelDom") != "") { xVopr = " Телефон 1:"; xOtvet = MyMet.MET_TryPhon(MET_PoleStr("TelDom")); xEnter = 1; xParagraph = true; MET_Print(); } // Служебный телефон if (MET_PoleStr("TelRab") != "") { xVopr = " Телефон 2:"; xOtvet = MyMet.MET_TryPhon(MET_PoleStr("TelRab")); xEnter = 1; xParagraph = true; MET_Print(); } // Cтраховоя компания if (MET_PoleStr("NameSCom") != "") { xVopr = " Страховая компания:"; xOtvet = MET_PoleStr("NameSCom"); xParagraph = true; MET_Print(); // Регион страховой компании if (MET_PoleStr("NameReg") != "") { xVopr = " регион:"; xOtvet = MET_PoleStr("NameReg"); xEnter = 1; xTab = 1; MET_Print(); } // Серия и номер полиса if (MET_PoleStr("SN") != "") { xVopr = " серия и номер полиса:"; xOtvet = (MET_PoleStr("SS") == "" ? "" : MET_PoleStr("SS") + " - ") + MET_PoleStr("SN"); xEnter = 1; xTab = 1; MET_Print(); } // Срок действия полиса if (MET_PoleStr("UI") != "") { xVopr = " срок действия полиса:"; xOtvet = MET_PoleDat("UI") + " - " + MET_PoleDat("DUI"); xEnter = 1; xTab = 1; xParagraph = true; MET_Print(); } } // ЛПУ приписки if (MET_PoleStr("NameSCom") != "") { xVopr = " ЛПУ приписки:"; xOtvet = MET_PoleStr("LPU"); xParagraph = true; MET_Print(); } // Наименование документа удостоверяющего личность if (MET_PoleStr("DocName") != "") { xVopr = " Паспортные данные:"; xOtvet = MET_PoleStr("DocName"); xParagraph = true; MET_Print(); } // Паспортные данные if (MET_PoleStr("Pasp_Ser") != "") { // Серия и номер паспорта xVopr = " серия и номер паспорта:"; xOtvet = MET_PoleStr("Pasp_Ser") + " - " + MET_PoleStr("Pasp_Nom"); xEnter = 1; xTab = 1; MET_Print(); // Дата выдачи паспорта if (MET_PoleStr("Pasp_Kogda") != "") { xVopr = " дата выдачи паспорта:"; xOtvet = MET_PoleDat("Pasp_Kogda"); xEnter = 1; xTab = 1; MET_Print(); } // Кем выдан паспорт if (MET_PoleStr("Pasp_Kem") != "") { xVopr = " кем выдан:"; xOtvet = MET_PoleStr("Pasp_Kem"); xEnter = 1; xTab = 1; MET_Print(); } } // Новый параграф xParagraph = true; // Социальный статус if (MET_PoleStr("SocStat") != "") { xVopr = " Социальный статус:"; xOtvet = MET_PoleStr("SocStat"); xEnter = 1; MET_Print(); } // Инвалидность if (MET_PoleInt("Inv") != 0) { xVopr = " Инвалидность:"; string[] SocStat = { "I группа", "II группа", "III группа", "ребенок-инвалид", "", "", "снята" }; xOtvet = SocStat[MET_PoleInt("Inv") - 1]; xEnter = 1; MET_Print(); } // Место работы if (MET_PoleStr("MRab") != "") { xVopr = " Место работы:"; xOtvet = MET_PoleStr("MRab"); xEnter = 1; MET_Print(); } // Профессия if (MET_PoleStr("Professia") != "") { xVopr = " Профессия:"; xOtvet = MET_PoleStr("Professia"); xEnter = 1; MET_Print(); } // СНИЛС if (MET_PoleStr("SNILS") != "") { xVopr = " СНИЛС:"; xOtvet = MET_PoleStr("SNILS"); xEnter = 1; MET_Print(); } // Родители if (MET_PoleStr("Parents") != "") { try { string[] _mTypeOp = { " Родитель:", " Усыновитель:", " Опекун ребенка:", " Опекун (соц. представитель):", " Попечитель:" }; string _Str = Convert.ToString(MET_PoleStr("Parents")); int x = Convert.ToInt32(_Str[90].ToString()); xVopr = _mTypeOp[x - 1]; xOtvet = _Str.Substring(0, 30).TrimEnd(' ') + _Str.Substring(29, 30).TrimEnd(' ') + _Str.Substring(59, 30).TrimEnd(' '); xParagraph = true; MET_Print(); } catch { } } // Код льготы if (MET_PoleStr("KatLgot") != "" & MET_PoleInt("KatLgot") != 0) { xVopr = " Код льготы:"; xOtvet = MET_PoleStr("KatLgot"); xParagraph = true; MET_Print(); // Льготный документ xVopr = " документ льготы:"; xOtvet = MET_PoleStr("NameDocLg"); xEnter = 1; xTab = 1; MET_Print(); // Серия и номер льготного документа xVopr = " серия и номер:"; xOtvet = MET_PoleStr("SerNomLg"); xEnter = 1; xTab = 1; MET_Print(); // Срок действия льготы xVopr = " срок действия льготы:"; xOtvet = MET_PoleDat("Ustanov") + " - " + MET_PoleDat("Pereosv"); xEnter = 1; xTab = 1; MET_Print(); } // Кто выдал направление в БУЗОО КОД if (MET_PoleInt("Napravlenie") != 0) { xVopr = " Кто выдал направление в БУЗОО КОД:"; string[] _mSocStat = { "врач онколог", "участковый врач", "узкий специалист", "без направления" }; xOtvet = _mSocStat[MET_PoleInt("Napravlenie") - 1]; xParagraph = true; MET_Print(); } // Служебная информация (только для администраторов) if (MyGlo.PROP_Admin) { xEnter = 1; MET_Print(); // Служебная информация xVopr = " Служебная информация:"; xParagraph = true; MET_Print(); // Если есть логи if (!string.IsNullOrEmpty(MET_PoleStr("xLog"))) { JObject _Json = JObject.Parse(MET_PoleStr("xLog")); // Кто создал карту xVopr = " Пользователь, создавший карту:"; try { xOtvet = MyMet.MET_UserName((int)_Json["Log"].First["User"]); xOtvet += " (" + (string)_Json["Log"].First["Date"] + ")"; } catch (Exception ex) { MyGlo.PUB_Logger.Fatal(ex, "Ошибка Лога kbol"); return; } xEnter = 1; xTab = 1; MET_Print(); // Кнопка логов xEnter = 1; xTab = 1; MET_Print(); Button _ButtonLog = new Button(); StackPanel _StackPanel = new StackPanel(); _StackPanel.Orientation = Orientation.Horizontal; Image _Image = new Image(); _Image.Height = 20; _Image.Width = 20; _Image.Source = (BitmapImage)FindResource("mnLog"); _StackPanel.Children.Add(_Image); Label _Label = new Label(); _Label.Content = "показать логи"; _StackPanel.Children.Add(_Label); _ButtonLog.Content = _StackPanel; _ButtonLog.ToolTip = "Показать логи изменения карточки пациента"; _ButtonLog.Focusable = false; _ButtonLog.Tag = 1; _ButtonLog.Click += delegate { // Открываем Форму Карточка Log UserWindow_DocumLog _WinLog = new UserWindow_DocumLog(MET_PoleStr("xLog")); _WinLog.Show(); }; PRO_Paragraph.Inlines.Add(_ButtonLog); } // KL xVopr = " KL:"; xOtvet = MyGlo.KL.ToString(); xEnter = 1; xTab = 1; MET_Print(); } }
/// <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); }
/// <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); }