Exemple #1
0
        /// <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
            {
            }
        }