コード例 #1
0
        /// <summary>
        /// Добавить новую нозологию
        /// </summary>
        /// <param name="sender">Объект, пославший сообщение</param>
        /// <param name="e">Объект, содержащий данные посланного сообщения</param>
        private void buttonAdd_Click(object sender, EventArgs e)
        {
            if (treeViewNosologyes.SelectedNode == null)
            {
                new NosologyViewForm(_workersKeeper, null, null).ShowDialog();
            }
            else
            {
                CNosology nosology = _nosologyWorker.GetByGeneralData(treeViewNosologyes.SelectedNode.Text);

                if (nosology.Type == NodeType.Folder)
                {
                    new NosologyViewForm(_workersKeeper, null, treeViewNosologyes.SelectedNode.Text, null).ShowDialog();
                }
                else if (treeViewNosologyes.SelectedNode.Level > 0)
                {
                    new NosologyViewForm(_workersKeeper, null, treeViewNosologyes.SelectedNode.Parent.Text, null).ShowDialog();
                }
                else
                {
                    new NosologyViewForm(_workersKeeper, null, null).ShowDialog();
                }
            }

            ShowNosologyes();
        }
コード例 #2
0
        public NosologyViewForm(CWorkersKeeper workersKeeper, CNosology nosologyInfo, string defaultParentFolderName, string notEditableNosologyName)
        {
            InitializeComponent();

            _workersKeeper  = workersKeeper;
            _nosologyWorker = workersKeeper.NosologyWorker;

            if (!string.IsNullOrEmpty(notEditableNosologyName))
            {
                textBoxNosologyName.ReadOnly = true;
                textBoxNosologyName.Text     = notEditableNosologyName;
            }

            if (nosologyInfo == null)
            {
                _nosologyInfo = new CNosology();
                Text          = "Добавление новой нозологии";
                AddAllParentNosologyesToComboBox(string.Empty);
                comboBoxParentNodeName.Text = defaultParentFolderName;
            }
            else
            {
                _nosologyInfo            = new CNosology(nosologyInfo);
                Text                     = "Редактирование нозологии";
                textBoxNosologyName.Text = _nosologyInfo.Name;

                AddAllParentNosologyesToComboBox(nosologyInfo.Name);

                if (nosologyInfo.IdParent != -1)
                {
                    CNosology nosology = _nosologyWorker.GetById(nosologyInfo.IdParent);
                    comboBoxParentNodeName.Text = nosology.Name;
                }
            }
        }
コード例 #3
0
        /// <summary>
        /// Отобразить все вложенные узлы для данного узла
        /// </summary>
        /// <param name="treeNodes">Узелы на списке узлов</param>
        /// <param name="nosologyId">Id нозологии, который находится в этом узле</param>
        private void FillNodes(TreeNodeCollection treeNodes, int nosologyId)
        {
            CNosology[] nosologies = _nosologyWorker.GetChilds(nosologyId);

            foreach (CNosology nosology in nosologies)
            {
                treeNodes.Add(nosology.Name);
            }

            foreach (TreeNode node in treeNodes)
            {
                if (IsSelectedNosologysContainNosology(node.Text))
                {
                    _stopCheckCatching = false;
                    node.Checked       = true;
                    _stopCheckCatching = true;
                }

                CNosology nosology = _nosologyWorker.GetByGeneralData(node.Text);
                if (nosology.Type == NodeType.Folder)
                {
                    FillNodes(node.Nodes, nosology.Id);

                    if (nosology.NodeFolderStated == NodeFolderStated.Opened && node.Nodes.Count > 0)
                    {
                        node.Expand();
                    }
                }
            }
        }
コード例 #4
0
        public NosologyRemoveForm(CWorkersKeeper workersKeeper, CNosology nosologyInfo)
        {
            InitializeComponent();

            _nosologyInfo   = nosologyInfo;
            _nosologyWorker = workersKeeper.NosologyWorker;
            _patientWorker  = workersKeeper.PatientWorker;
            _patientsWithCurrentNoslogyCnt = _patientWorker.GetCountContainedNosology(_nosologyInfo.Name);
        }
コード例 #5
0
        /// <summary>
        /// Запоминание состояния папки при сворачивании
        /// </summary>
        /// <param name="sender">Объект, пославший сообщение</param>
        /// <param name="e">Объект, содержащий данные посланного сообщения</param>
        private void treeViewNosologyes_AfterExpand(object sender, TreeViewEventArgs e)
        {
            if (_stopCheckCatching)
            {
                return;
            }

            CNosology nosology = _nosologyWorker.GetByGeneralData(e.Node.Text);

            nosology.NodeFolderStated = NodeFolderStated.Opened;
            _nosologyWorker.Update(nosology);
        }
コード例 #6
0
        /// <summary>
        /// Загрузить список нозологий
        /// </summary>
        private void Load()
        {
            _nosologyList = new List <CNosology>();
            string allDataStr = CDatabaseEngine.UnpackText(_nosologyPath);

            // Получаем набор объектов
            string[] objectsStr = allDataStr.Split(new[] { ObjSplitStr }, StringSplitOptions.RemoveEmptyEntries);

            // Проходим по всем объектам
            foreach (string objectStr in objectsStr)
            {
                // Для каждого объекта получаем список значений
                string[] datasStr = objectStr.Split(new[] { DataSplitStr }, StringSplitOptions.RemoveEmptyEntries);

                var nosologyInfo = new CNosology();
                foreach (string dataStr in datasStr)
                {
                    string[] keyValue = dataStr.Split(new[] { '=' }, 2);
                    switch (keyValue[0])
                    {
                    case "Id":
                        nosologyInfo.Id = Convert.ToInt32(keyValue[1]);
                        break;

                    case "Name":
                        nosologyInfo.Name = keyValue[1];
                        break;

                    case "IdParent":
                        nosologyInfo.IdParent = Convert.ToInt32(keyValue[1]);
                        break;

                    case "Type":
                        nosologyInfo.Type = (NodeType)Enum.Parse(typeof(NodeType), keyValue[1]);
                        break;

                    case "NodeFolderStated":
                        nosologyInfo.NodeFolderStated = (NodeFolderStated)Enum.Parse(typeof(NodeFolderStated), keyValue[1]);
                        break;
                    }
                }

                _nosologyList.Add(nosologyInfo);
            }
        }
コード例 #7
0
        /// <summary>
        /// Добавить новую нозологию к списку нозологий
        /// </summary>
        /// <param name="nosologyInfo">Информация по нозологии</param>
        public void Add(CNosology nosologyInfo)
        {
            if (GetByGeneralData(nosologyInfo.Name) != null)
            {
                throw new Exception("Нозология с таким названием уже существует");
            }

            var newNosologyInfo = new CNosology(nosologyInfo)
            {
                Id = GetNewID(NosologyList)
            };

            _nosologyList.Add(newNosologyInfo);

            UpdateParentType(nosologyInfo.IdParent);

            Save();
        }
コード例 #8
0
        /// <summary>
        /// Сохранение изменений
        /// </summary>
        /// <param name="sender">Объект, пославший сообщение</param>
        /// <param name="e">Объект, содержащий данные посланного сообщения</param>
        private void buttonOk_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(textBoxNosologyName.Text))
            {
                MessageBox.ShowDialog("Поля, отмеченные звёздочкой, обязательны для заполнения", "Предупреждение", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            try
            {
                string oldNosologyName = _nosologyInfo.Name;
                _nosologyInfo.Name = textBoxNosologyName.Text;

                if (comboBoxParentNodeName.Text == "Корневая папка")
                {
                    _nosologyInfo.IdParent = -1;
                }
                else
                {
                    CNosology parentNosology = _nosologyWorker.GetByGeneralData(comboBoxParentNodeName.Text);
                    _nosologyInfo.IdParent = parentNosology.Id;
                }

                if (_nosologyInfo.Id == 0)
                {
                    _nosologyWorker.Add(_nosologyInfo);
                }
                else
                {
                    _nosologyWorker.Update(_nosologyInfo);
                    _workersKeeper.PatientWorker.ChangeNosology(oldNosologyName, _nosologyInfo.Name);
                }

                _isFormClosingByButton = true;
                Close();
            }
            catch (Exception ex)
            {
                MessageBox.ShowDialog(ex.ToString(), "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
コード例 #9
0
        /// <summary>
        /// Обновить информацию о нозологии
        /// </summary>
        /// <param name="nosologyInfo">Информация по нозологии</param>
        public void Update(CNosology nosologyInfo)
        {
            CNosology tempNosology = GetByGeneralData(nosologyInfo.Name);

            if (tempNosology != null && tempNosology.Id != nosologyInfo.Id)
            {
                throw new Exception("Нозология с таким названием уже существует");
            }

            int n        = GetIndexFromNosologyListById(nosologyInfo.Id);
            int idParent = _nosologyList[n].IdParent;

            _nosologyList[n] = new CNosology(nosologyInfo);

            UpdateParentType(idParent);
            if (idParent != nosologyInfo.IdParent)
            {
                UpdateParentType(nosologyInfo.IdParent);
            }

            Save();
        }
コード例 #10
0
        /// <summary>
        /// Получить полный список нозологий для пациента по переданным ключевым нозологиям
        /// </summary>
        /// <param name="keyNosologies">Ключевые (конечный) нозологии</param>
        /// <returns></returns>
        public string GetNosologyDisplayName(List <string> keyNosologies)
        {
            string displayName = ", ";

            foreach (string keyNosology in keyNosologies)
            {
                var nameParts = new List <string> {
                    keyNosology
                };
                CNosology nosology = GetByGeneralData(keyNosology);

                if (nosology == null)
                {
                    return(string.Empty);
                }

                while (nosology.IdParent != -1)
                {
                    nosology = GetById(nosology.IdParent);
                    nameParts.Add(nosology.Name);
                }

                for (int i = nameParts.Count - 1; i >= 0; i--)
                {
                    if (!displayName.Contains(", " + nameParts[i] + ","))
                    {
                        displayName += string.Format("{0}, ", nameParts[i]);
                    }
                }
            }

            if (displayName.Length > 2)
            {
                return(displayName.Substring(2, displayName.Length - 4));
            }

            return(string.Empty);
        }
コード例 #11
0
 public NosologyViewForm(CWorkersKeeper workersKeeper, CNosology nosologyInfo, string notEditableNosologyName)
     : this(workersKeeper, nosologyInfo, string.Empty, notEditableNosologyName)
 {
 }
コード例 #12
0
        private string GetDifferenсesInNosologies()
        {
            CNosologyWorker ownNosologyWorker    = _mainForm.WorkersKeeper.NosologyWorker;
            CNosologyWorker foreinNosologyWorker = _mainForm.ForeinWorkersKeeper.NosologyWorker;

            var ownNewInfo = new StringBuilder("\r\nНаша база содержит следуюущие уникальные нозологии:\r\n");
            var diffInfo   = new StringBuilder("\r\nСледующие нозологии имеют различия в типе или расположении:\r\n");

            foreach (var ownNosology in ownNosologyWorker.NosologyList)
            {
                CNosology foreinNosology = foreinNosologyWorker.GetByGeneralData(ownNosology.Name);
                if (foreinNosology == null)
                {
                    ownNewInfo.Append(ownNosology.Name + ", ");
                    continue;
                }

                if (ownNosology.Type != foreinNosology.Type)
                {
                    diffInfo.Append(ownNosology.Name + ", ");
                    continue;
                }

                CNosology parentOwnNosology    = ownNosology;
                CNosology parentForeinNosology = foreinNosology;
                while (parentOwnNosology.IdParent != -1 && parentForeinNosology.IdParent != -1)
                {
                    parentOwnNosology    = ownNosologyWorker.GetById(parentOwnNosology.IdParent);
                    parentForeinNosology = foreinNosologyWorker.GetById(parentForeinNosology.IdParent);
                    if (parentOwnNosology.Name != parentForeinNosology.Name)
                    {
                        break;
                    }
                }

                if (parentOwnNosology.IdParent != -1 || parentForeinNosology.IdParent != -1)
                {
                    diffInfo.Append(ownNosology.Name + ", ");
                }
            }

            var foreinNewInfo = new StringBuilder("\r\nВнешняя база содержит следуюущие уникальные нозологии:\r\n");

            foreach (var foreinNosology in foreinNosologyWorker.NosologyList)
            {
                CNosology ownNosology = ownNosologyWorker.GetByGeneralData(foreinNosology.Name);
                if (ownNosology == null)
                {
                    foreinNewInfo.Append(foreinNosology.Name + ", ");
                    continue;
                }

                if (ownNosology.Type != foreinNosology.Type)
                {
                    diffInfo.Append(foreinNosology.Name + ", ");
                }
            }

            string diffResult = string.Empty;

            if (ownNewInfo.ToString().EndsWith(", "))
            {
                diffResult += ownNewInfo.ToString().Substring(0, ownNewInfo.Length - 2);
            }

            if (foreinNewInfo.ToString().EndsWith(", "))
            {
                diffResult += foreinNewInfo.ToString().Substring(0, foreinNewInfo.Length - 2);
            }

            if (diffInfo.ToString().EndsWith(", "))
            {
                diffResult += diffInfo.ToString().Substring(0, diffInfo.Length - 2);
            }

            return(diffResult);
        }