示例#1
0
 /// <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
     {
     }
 }
示例#2
0
        /// <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
            {
            }
        }
示例#3
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
            {
            }
        }