/// <summary>Тройная переменная по шаблону и номеру вопроса (VarId) [ShabVarId|620|50]</summary> private void ShabVarId() { try { int _Start = PROP_Text.IndexOf("[ShabVarId"); int _End = PROP_Text.IndexOf("]", _Start) - _Start + 1; string[] _mArr = PROP_Text.Substring(_Start + 1, _End - 2).Split('|'); // Если номер шаблона меньше 100, то это номер для всех отделениий int _Num = Convert.ToInt32(_mArr[1]); _Num = _Num < 100 ? MET_NomShablon(_Num) : _Num; PROP_Text = PROP_Text.Replace(PROP_Text.Substring(_Start, _End), MET_StrRazdel(_Num, "", Convert.ToInt32(_mArr[2]), "", true)); } catch { } }
/// <summary>Вставляем текст в зависимости от кода отделения Otd</summary> /// <remarks> /// <para>Вид переменной: [astIfOtd|Условие|Отд1,Отд2, ... |Текст]</para> /// <list type="table"> /// <listheader><term>Константа</term><description>Описание</description></listheader> /// <item><term>astIfOtd</term><description>константа (имя переменной)</description></item> /// <item><term>Условие</term><description>3 спец символа</description></item> /// <item><term>- =</term><description>отделение равно указанным отделениям</description> </item> /// <item><term>- !</term><description>отделение не равно указанным отделениям</description> </item> /// <item><term>- ></term><description>отделеие больше указанной госпитализации</description> </item> /// <item><term>Отд1,Отд2, ... </term><description>перечень отделений</description> </item> /// <item><term>Текст</term><description>отображаемый текст, в случае правильного отделения</description></item> /// </list> /// </remarks> private void astIfOtd() { try { int _Start = PROP_Text.IndexOf("[astIfOtd"); int _End = PROP_Text.IndexOf("]", _Start) - _Start + 1; // 0 - условие, 1 - перечень отделений, через запятую, 2 - текст который вставляем string[] _mArr = PROP_Text.Substring(_Start + 1, _End - 2).Split('|'); // Подстановочный текст string _Text = _mArr[3]; try { // Отделение госпитализации int _Otd = (int)MyGlo.HashAPSTAC["otd"]; if (_Otd == 0) { _Text = ""; goto exit; } // Перечень отделений int[] _mOtd = _mArr[2].Split(',').Select(int.Parse).ToArray(); // Условия switch (_mArr[1]) { case "=": if (Array.IndexOf(_mOtd, _Otd) == -1) { _Text = ""; } break; case "!": if (Array.IndexOf(_mOtd, _Otd) != -1) { _Text = ""; } break; case ">": if (_Otd <= _mOtd[0]) { _Text = ""; } break; default: _Text = ""; break; } exit: ; } catch { _Text = ""; } PROP_Text = PROP_Text.Replace(PROP_Text.Substring(_Start, _End), _Text); } catch { } }
/// <summary>Переменная по поиску нахождению и выводу данных из всех протоколов указанного номера шаблона/типа протоколов</summary> /// <remarks> /// <para>Вид переменной: [Docum|Tip|Nomer|X1|X2|...|Xn]</para> /// <list type="table"> /// <listheader><term>Константа</term><description>Описание</description></listheader> /// <item><term>Docum</term><description>константа (имя переменной)</description></item> /// <item><term>Tip</term><description>3 константы</description></item> /// <item><term>- Tip</term><description>номер типа шаблона, для посещения</description> </item> /// <item><term>- TipAll</term><description>номер типа шаблона, для пациента</description> </item> /// <item><term>- Sha</term><description>номер шаблона (если меньше 100, то умножаем на 100 и номер отдела, иначе и есть сам номер шаблона), для посещения</description> </item> /// <item><term>Nomer</term><description>номер со значением из Tip</description> </item> /// <item><term>Х1, X2, X3, ... Xn</term><description>переменные</description></item> /// <item><term>- pDate</term><description>дата текущего протокола</description> </item> /// <item><term>- 100</term><description>число, номер VarId вопроса</description> </item> /// <item><term>- Диагноз</term><description>раздел</description> </item> /// <item><term>- fE</term><description>новая строка</description> </item> /// <item><term>- fEy</term><description>новая строка в разделе между вопросами (по умолчанию)</description> </item> /// <item><term>- fEn</term><description>без новой строки в разделе между вопросами</description> </item> /// </list> /// </remarks> private void Docum() { try { string _Str = ""; // В разделе, вопросы отображаем с новой строки, fEy - по умолчанию bool _Enter = true; // Находим 1й и последний символ int _Start = PROP_Text.IndexOf("[Docum"); int _End = PROP_Text.IndexOf("]", _Start) - _Start + 1; // Разбиваем строку на слова string[] _mArr = PROP_Text.Substring(_Start + 1, _End - 2).Split('|'); // Тип или номер шаблона true - тип, false - номер шаблона string _Type = _mArr[1]; // Номер шаблона или номер типа int _Num = Convert.ToInt32(_mArr[2]); // Если номер шаблона меньше 100, то это номер для всех отделениий if (_Type == "Sha") { _Num = _Num < 100 ? MyGlo.Otd * 100 + _Num : _Num; } // Загружаем протоколы switch (_Type) { // По типу обследования, для текущего посещения case "Tip": MySql.MET_DsAdapterFill(MyQuery.MET_Protokol_Select_1(MyGlo.KL, MyGlo.IND, _Num, PROP_Prefix), "ProtokolRazdel"); break; // По типу обследования, для всех протоколов case "TipAll": MySql.MET_DsAdapterFill(MyQuery.MET_Protokol_Select_3(MyGlo.KL, _Num, PROP_Prefix), "ProtokolRazdel"); break; // По коду шаблона case "Sha": // Если номер шаблона меньше 100, то это номер для всех отделениий _Num = _Num < 100 ? MyGlo.Otd * 100 + _Num : _Num; MySql.MET_DsAdapterFill(MyQuery.MET_Protokol_Select_2(MyGlo.KL, MyGlo.IND, _Num, PROP_Prefix), "ProtokolRazdel"); break; } // Количество протоколов данного типа int _Count = MyGlo.DataSet.Tables["ProtokolRazdel"].Rows.Count; // Перебираем все протоколы for (int p = 0; p < _Count; p++) { string _Protokol = MyGlo.DataSet.Tables["ProtokolRazdel"].Rows[p]["Protokol"].ToString(); int _NomProtokol = Convert.ToInt32(MyGlo.DataSet.Tables["ProtokolRazdel"].Rows[p]["NumShablon"]); if (p > 0) { _Str += ",\n"; } int _NumVopr = 0; // номер вопроса/раздела // Перебераем все параметры for (int i = 3; i < _mArr.Length; i++) { // Ставим в разделе между ответами знак Энтер if (_mArr[i] == "fEy") { _Enter = true; continue; } // НЕ ставим в разделе между ответами знак Энтер if (_mArr[i] == "fEn") { _Enter = false; continue; } // Вставляем дату проведения манипуляции if (_mArr[i] == "pDate") { _Str += MyGlo.DataSet.Tables["ProtokolRazdel"].Rows[p]["pDate"].ToString().Substring(0, 10) + " г. "; continue; } // Знак перехода на новую строку fE if (_Str.Length > 1 && _mArr[i] == "fE") { _Str += "\n"; continue; } try { // Увеличиваем VarID или раздел _NumVopr++; // Если VarID или раздел не первый, то печатаем OutText, в первом вопросе bool _OneOut = _NumVopr != 1; if (int.TryParse(_mArr[i], out int _VarID)) { // VarID _Str += MET_LoadStr(_Protokol, _NomProtokol, "", _VarID, "", true, _OneOut) + " "; } else { // Раздел _Str += MET_LoadStr(_Protokol, _NomProtokol, _mArr[i], 0, "", _Enter, _OneOut) + " "; } } catch { } } } PROP_Text = PROP_Text.Replace(PROP_Text.Substring(_Start, _End), _Str).TrimEnd(); } catch { } }