AIMS/AIMS.UI/DocManager/frmDocument.cs
2023-08-13 21:05:09 +08:00

210 lines
7.5 KiB
C#

using AIMS.OremrUserControl;
using AIMSExtension;
using AIMSModel;
using DevComponents.DotNetBar;
using DocumentManagement;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Text;
using System.Windows.Forms;
namespace AIMS.DocManager
{
public partial class frmDocument : Form
{
//文档目录
private ucClassify ucClassify;
//患者基本信息
private PatientRecord Patient;
public frmDocument()
{
InitializeComponent();
//基本信息初始化
Patient = new PatientRecord();
}
public frmDocument(PatientRecord p)
{
InitializeComponent();
Patient = p;
StringBuilder sb = new StringBuilder();
string t = " ";
sb.Append("患者:" + Patient.PatientName + t);
sb.Append("住院号:" + Patient.MdrecNo + t);
sb.Append("性别:" + Patient.Sex + t);
sb.Append("手术名称:" + Patient.OperationInfoName + t);
sb.Append("状态:" + Patient.State + t);
this.lblPatient.Text = sb.ToString();
}
void tsbDoc_TabItemClose(object sender, TabStripActionEventArgs e)
{
TabItem tb = (sender as DevComponents.DotNetBar.TabControl).SelectedTab;
ucDocument doc = tb.AttachedControl.Controls[0] as ucDocument;
doc.CloseMsg(tb.Text, ref e.Cancel);
}
/// <summary>
/// 文档目录点击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void tv_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
TreeNode node = e.Node;
//父节点不操作
if (node.Parent == null)
{
foreach (TreeNode item in node.Nodes)
{
item.Checked = node.Checked;
}
return;
}
if (this.Patient.PatientId > 0)
{
//判断是否已经打开文书
foreach (var item in tsbDoc.Tabs)
{
if ((item as TabItem).Text.Replace("*", "").Equals(node.Text))
{
tsbDoc.SelectedTab = item as TabItem;
return;
}
}
//创建该文书标签
TabItem tb = this.tsbDoc.CreateTab(node.Text);
tsbDoc.SelectedTab = tb;
Control c = tb.AttachedControl;
ucDocument doc = new ucDocument(int.Parse(node.Name), int.Parse(node.Tag.ToString()), Patient);
doc.RefreshUc += new ucDocument.RefreshUcClassify(ucClassify.RefreshTree);
doc.ModifyT += new ucDocument.ModifyTitle(ModifyTitle);
doc.ClearT += new ucDocument.ClearTitle(ClearTitle);
doc.CloseP += new ucDocument.CloseParent(CloseTab);
doc.Parent = c;
doc.Dock = DockStyle.Fill;
doc.Show();
}
}
}
/// <summary>
/// 关闭标签
/// </summary>
private void CloseTab()
{
ucDocument doc = tsbDoc.SelectedTab.AttachedControl.Controls[0] as ucDocument;
bool isCancel = false;
doc.CloseMsg(tsbDoc.SelectedTab.Text, ref isCancel);
if (!isCancel)
{
tsbDoc.Tabs.Remove(tsbDoc.SelectedTab);
}
}
/// <summary>
/// 添加标题*号
/// </summary>
private void ModifyTitle()
{
if (!tsbDoc.SelectedTab.Text.EndsWith("*"))
{
tsbDoc.SelectedTab.Text += "*";
}
}
/// <summary>
/// 清除标题*号
/// </summary>
private void ClearTitle()
{
tsbDoc.SelectedTab.Text = tsbDoc.SelectedTab.Text.Replace("*", "");
}
private void btnSel_Click(object sender, EventArgs e)
{
string showtext = "";
//判断是否已经打开文书
foreach (var item in tsbDoc.Tabs)
{
if ((item as TabItem).Text.Contains("*"))
{
tsbDoc.SelectedTab = item as TabItem;
showtext += (item as TabItem).Text + " ";
}
}
if (showtext != "")
{
MessageBox.Show(showtext + "未保存 请确认保存后批量打印!", "系统提示");
return;
}
tsbDoc.Tabs.Clear();
List<int> Ids = new List<int>();
for (int i = 0; i < ucClassify.tv.Nodes.Count; i++)
{
TreeNode item = ucClassify.tv.Nodes[i];
if (item != null && item.Parent == null)
{
foreach (TreeNode node in item.Nodes)
{
if (node.Tag != null && int.Parse(node.Tag.ToString()) > 0 && this.Patient.PatientId > 0 && node.Checked == true)
{
Ids.Add(int.Parse(node.Tag.ToString()));
}
}
}
}
for (int i = 0; i < ucClassify.tv.Nodes.Count; i++)
{
TreeNode item = ucClassify.tv.Nodes[i];
if (item != null)
{
foreach (TreeNode node in item.Nodes)
{
if (Ids.Contains(int.Parse(node.Tag.ToString())))
{
//创建该文书标签
TabItem tb = this.tsbDoc.CreateTab(node.Text);
tsbDoc.SelectedTab = tb;
Control c = tb.AttachedControl;
ucDocument doc = new ucDocument(int.Parse(node.Name), int.Parse(node.Tag.ToString()), Patient);
doc.RefreshUc += new ucDocument.RefreshUcClassify(ucClassify.RefreshTree);
doc.ModifyT += new ucDocument.ModifyTitle(ModifyTitle);
doc.ClearT += new ucDocument.ClearTitle(ClearTitle);
doc.CloseP += new ucDocument.CloseParent(CloseTab);
doc.Parent = c;
doc.Dock = DockStyle.Fill;
doc.Show();
doc.tsbSaveAndPrint_Click(null, null);
}
}
}
}
}
private void frmDocument2_Load(object sender, EventArgs e)
{
//ucClassify初始化
ucClassify = new DocumentManagement.ucClassify();
this.expandablePanel1.Controls.Add(ucClassify);
ucClassify.IsReadOnly = true;
ucClassify.Dock = DockStyle.Fill;
ucClassify.tv.NodeMouseClick += new TreeNodeMouseClickEventHandler(tv_NodeMouseClick);
ucClassify.RefreshTree(Patient.PatientId);
tsbDoc.TabItemClose += new TabStrip.UserActionEventHandler(tsbDoc_TabItemClose);
}
private void buttonX1_Click(object sender, EventArgs e)
{
EMRExtension.OpenEMRS(Patient.PatientId, Patient.ApplyId);
}
}
}