} // func lKbolInfoDel /// <summary>Lua Функция. Добавление признака ОМС в kbolInfo</summary> /// <param name="pOms">Значения поля ОМС: 0 - не подавать в реестры, 1 - подавать в реестры ОМС</param> /// <returns>Возвращаем успех или не успех изменения данных</returns> private bool lKbolInfoOms(int pOms = 1) { // Код записи (Cod из Apac, IND из Apstac, Cod из parObsledov decimal _CodZap = MyGlo.IND; // Смотрим наличие указанной таблицы pTab string _Tab = PUB_Pole.PROP_FormShablon.PROP_TipProtokol.PROP_KbolInfo; UserKbolInfo _KbolInfo = UserKbolInfo.MET_FactoryKbolInfo(_Tab, _CodZap, MyGlo.KL); _KbolInfo.MET_ChangeOms(pOms); return(true); } // func lKbolInfoOms
} // func lKbolInfoAdd /// <summary>Lua Функция. Удаление данных из таблицы kbolInfo</summary> /// <param name="pTag">Имя ключа тега</param> /// <param name="pRazdKey">Имя ключа раздела (если нет, то не используем раздел)</param> /// <param name="pRazdCod">Код раздела (не ставим, если нет раздела)</param> /// <param name="pTab">К какой таблицы привязываемся (kbol, pol, stac, par), по умолчанию привязываем в зависимости от типа шаблона</param> /// <returns>Возвращаем успех или не успех добавления/изменения данных</returns> /// <remarks>Реализовано только указание параметров pTag</remarks> private bool lKbolInfoDel(string pTag, string pRazdKey = "", decimal pRazdCod = 0, string pTab = "") { // Смотрим наличие раздела //string _Razdel = pRazdCod == 0 ? "" : $", '{pRazdKey}', {pRazdCod}"; // Код записи (Cod из Apac, IND из Apstac, KL из kbol decimal _CodZap = MyGlo.IND; // Смотрим наличие указанной таблицы pTab pTab = pTab == "" ? PUB_Pole.PROP_FormShablon.PROP_TipProtokol.PROP_KbolInfo : pTab; UserKbolInfo _KbolInfo = UserKbolInfo.MET_FactoryKbolInfo(pTab, _CodZap, MyGlo.KL); _KbolInfo.MET_Delete(pTag); return(true); } // func lKbolInfoDel
} // func lLog /// <summary>Lua Функция. Добавление/изменение таблицы kbolInfo</summary> /// <param name="pTag">Имя ключа тега</param> /// <param name="pValue">Значение</param> /// <param name="pRazdKey">Имя ключа раздела (если нет, то не используем раздел)</param> /// <param name="pRazdCod">Код раздела (не ставим, если нет раздела)</param> /// <param name="pTab">К какой таблицы привязываемся (kbol, pol, stac), по умолчанию привязываем в зависимости от типа шаблона</param> /// <returns>Возвращаем успех или не успех добавления/изменения данных</returns> /// <remarks>Реализовано только указание параметров pTag, pValue</remarks> private bool lKbolInfoAdd(string pTag, object pValue = null, string pRazdKey = "", decimal pRazdCod = 0, string pTab = "") { // Значение object _Value = pValue ?? PUB_Pole.PROP_Text; // : pValue; // Смотрим наличие раздела //string _Razdel = pRazdCod == 0 ? "" : $", '{pRazdKey}', {pRazdCod}"; // Код записи (Cod из Apac, IND из Apstac, KL из kbol decimal _CodZap = MyGlo.IND; // Смотрим наличие указанной таблицы pTab pTab = pTab == "" ? PUB_Pole.PROP_FormShablon.PROP_TipProtokol.PROP_KbolInfo : pTab; UserKbolInfo _KbolInfo = UserKbolInfo.MET_FactoryKbolInfo(pTab, _CodZap, MyGlo.KL); _KbolInfo.MET_Change(pTag, _Value); //string _Query = $"exec dbo.jsonInfoAdd {_Cod}, '{pTab}', '{pKey}', '{_Value}', '' {_Razdel}"; //MySql.MET_QueryNo(_Query); return(true); } // func lKbolInfoAdd
/// <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> 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; }