/// <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(); }
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; } } }
/// <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(); } } } }
public NosologyRemoveForm(CWorkersKeeper workersKeeper, CNosology nosologyInfo) { InitializeComponent(); _nosologyInfo = nosologyInfo; _nosologyWorker = workersKeeper.NosologyWorker; _patientWorker = workersKeeper.PatientWorker; _patientsWithCurrentNoslogyCnt = _patientWorker.GetCountContainedNosology(_nosologyInfo.Name); }
/// <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); }
/// <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); } }
/// <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(); }
/// <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); } }
/// <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(); }
/// <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); }
public NosologyViewForm(CWorkersKeeper workersKeeper, CNosology nosologyInfo, string notEditableNosologyName) : this(workersKeeper, nosologyInfo, string.Empty, notEditableNosologyName) { }
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); }