using AIMS.OremrUserControl; using AIMSBLL; using AIMSExtension; using AIMSModel; using DCSoftDotfuscate; using DevComponents.AdvTree; using DevComponents.DotNetBar; using DocumentManagement; using System; using System.Collections.Generic; using System.Data; using System.Diagnostics; using System.Drawing; using System.Text; using System.Windows.Forms; namespace AIMS.OperationAfter.UI { public partial class frmDocument3 : Form { //文档目录 private ucClassify ucClassify; //患者基本信息 private PatientRecord Patient; const int CLOSE_SIZE = 18; //关闭图标尺寸 public string PerortName; //患者信息 DataRow vPatient = null; /// /// 声明保存数据时的状态 /// public EditState _state; public frmDocument3() { InitializeComponent(); //基本信息初始化 Patient = new PatientRecord(); } public frmDocument3(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(); } /// /// 医疗文书窗体加载 /// /// /// private void frmDocument3_Load_1(object sender, EventArgs e) { ControlExtension.GetOperationSiteRoom(labelSite, CboOperationSite, null); if (PublicMethod.OperatorNo == "admin" || PublicMethod.RoleName.Contains("数据中心")) { buttonX1.Visible = true; } System.Drawing.Size mSize = SystemInformation.WorkingArea.Size; txtnameOrHnum.Text = "姓名或住院号关键字"; txtnameOrHnum.ForeColor = Color.FromArgb(164, 164, 164); dtpSearchTime.Value = DateTime.Now; //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); this.CboOperationSite.SelectedIndexChanged += new System.EventHandler(this.CboOperationSite_SelectedIndexChanged); if (PublicMethod.OperatorNo == "admin" || PublicMethod.RoleName.Contains("删除医疗文书")) { btnDelete.Visible = true; } } /// /// 手术间信息加载到treeview /// private void FullTreeView() { treeViewPatient.Nodes.Clear(); try { DateTime beginTime = Convert.ToDateTime(dtpSearchTime.Value.ToString("yyyy-MM-dd 00:00:00")); DateTime endTime = Convert.ToDateTime(dtpSearchTime.Value.ToString("yyyy-MM-dd 23:59:59")); DataTable vPlanedOpeList = BOperationApply.GetOperationFrontDataTable(beginTime.ToString("yyyy-MM-dd 00:00:00"), endTime.ToString("yyyy-MM-dd 23:59:59")); if (vPlanedOpeList.Rows.Count <= 0) return; vPlanedOpeList = AIMSExtension.PublicMethod.GetNewDataTable(vPlanedOpeList, "State not IN ('退回','作废') ", ""); if (CboOperationSite.Visible == true && CboOperationSite.SelectedIndex > 0) { vPlanedOpeList = AIMSExtension.PublicMethod.GetNewDataTable(vPlanedOpeList, " OperationSite ='" + CboOperationSite.SelectedValue + "' ", ""); } List list = new List(); foreach (var item in ControlExtension.SiteRooms) { foreach (DataRow po in vPlanedOpeList.Rows) { if (po["OperationRoom"].ToString() != "" && po["OperationRoom"].ToString() == item.Name) { list.Add(item.Name); break; } } } foreach (var item in list) { TreeNode roomnode = new TreeNode(item); roomnode.Tag = item; treeViewPatient.Nodes.Add(roomnode); foreach (DataRow vpo in vPlanedOpeList.Rows) { if (item == vpo["OperationRoom"].ToString()) { TreeNode sNode = new TreeNode(vpo["PatientName"].ToString() + "-" + vpo["MdrecNo"].ToString()); sNode.Tag = vpo; roomnode.Nodes.Add(sNode); } } } TreeNode roomnodenull = new TreeNode("未排程"); foreach (DataRow vpo in vPlanedOpeList.Rows) { if (vpo["OperationRoom"].ToString() == "") { TreeNode sNode = new TreeNode(vpo["PatientName"].ToString() + "-" + vpo["MdrecNo"].ToString()); sNode.Tag = vpo; roomnodenull.Nodes.Add(sNode); } } treeViewPatient.Nodes.Add(roomnodenull); } catch (Exception exp) { //异常处理保存 PublicMethod.WriteLog(exp, ""); } } String templateName = string.Empty; /// /// 添加医疗文书选项卡 /// public Form frmss; /// /// 查询手术间患者 /// /// /// private void btnChoose_Click_1(object sender, EventArgs e) { this.treeViewPatient.AfterSelect -= new System.Windows.Forms.TreeViewEventHandler(this.treeViewPatient_AfterSelect); FullTreeView(); treeViewPatient.ExpandAll(); this.treeViewPatient.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeViewPatient_AfterSelect); } private void dtpSearchTime_ValueChanged(object sender, EventArgs e) { panel2.Width = groupBox2.Width; txtnameOrHnum.Text = ""; this.treeViewPatient.AfterSelect -= new System.Windows.Forms.TreeViewEventHandler(this.treeViewPatient_AfterSelect); FullTreeView(); treeViewPatient.ExpandAll(); //if (treeViewPatient.Nodes.Count > 0) treeViewPatient.SelectedNode = treeViewPatient.Nodes[0]; this.treeViewPatient.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeViewPatient_AfterSelect); } private void txtnameOrHnum_Leave(object sender, EventArgs e) { if (txtnameOrHnum.Text.Equals("")) { txtnameOrHnum.Text = "姓名或住院号关键字"; txtnameOrHnum.ForeColor = Color.FromArgb(164, 164, 164); } } private void btnBeforeDay_Click(object sender, EventArgs e) { dtpSearchTime.Value = dtpSearchTime.Value.AddDays(-1); } private void btnAfterDay_Click(object sender, EventArgs e) { dtpSearchTime.Value = dtpSearchTime.Value.AddDays(1); } private void txtnameOrHnum_KeyUp(object sender, KeyEventArgs e) { this.treeViewPatient.AfterSelect -= new System.Windows.Forms.TreeViewEventHandler(this.treeViewPatient_AfterSelect); FullTreeView(); if (treeViewPatient.Nodes.Count > 0) { treeViewPatient.ExpandAll(); //treeViewPatient.SelectedNode = treeViewPatient.Nodes[0]; } this.treeViewPatient.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeViewPatient_AfterSelect); } private void txtnameOrHnum_Click_1(object sender, EventArgs e) { txtnameOrHnum.Text = ""; txtnameOrHnum.ForeColor = Color.Black; } private void txtnameOrHnum_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { FullTreeView(); treeViewPatient.ExpandAll(); } } /// /// 赋值患者基本信息 /// /// /// private void treeViewPatient_AfterSelect(object sender, TreeViewEventArgs e) { vPatient = treeViewPatient.SelectedNode.Tag as DataRow; //如果有患者就是读患者的记录,否则以日期为条件取记录 if (vPatient != null) { //关闭打开的文档 while (tsbDoc.Tabs.Count > 0) { tsbDoc.SelectedTab = tsbDoc.Tabs[0]; CloseTab(); } GetPatinentRecord(vPatient["PatientId"].ToString()); 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(); this.ucClassify.RefreshTree(this.Patient.PatientId); } } public void GetPatinentRecord(string Patientid) { this.Patient = PatientRecord.GetPatientRecord(int.Parse(Patientid)); } 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); } /// /// 文档目录点击事件 /// /// /// void tv_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { if (e.Button == MouseButtons.Left) { //判断是否选择患者 if (this.Patient.PatientId == 0) { MessageBox.Show("请先选择患者!", "系统提示"); return; } 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(); } } } /// /// 关闭标签 /// 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); } } /// /// 添加标题*号 /// private void ModifyTitle() { if (!tsbDoc.SelectedTab.Text.EndsWith("*")) { tsbDoc.SelectedTab.Text += "*"; } } /// /// 清除标题*号 /// private void ClearTitle() { tsbDoc.SelectedTab.Text = tsbDoc.SelectedTab.Text.Replace("*", ""); } private void txtnameOrHnum_TextChanged(object sender, EventArgs e) { } private void dtpSearchTime_Click(object sender, EventArgs e) { } private void btnSel_Click(object sender, EventArgs e) { //判断是否选择患者 if (this.Patient.PatientId == 0) { MessageBox.Show("请先选择患者!"); return; } 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 Ids = new List(); 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.myEditControl.ExecuteCommand("FilePrint", false, null); ControlExtension.UPDocument(Patient.PatientId, Patient.ApplyId, doc.DModel.Id, 3, doc.DModel.TemplateId.ToString(), doc.DModel.XmlFileName); } } } } } private void buttonX1_Click(object sender, EventArgs e) { //判断是否选择患者 if (this.Patient.PatientId == 0) { MessageBox.Show("请先选择患者!", "系统提示"); return; } EMRExtension.OpenEMRS(Patient.PatientId, Patient.ApplyId); } private void btnDelete_Click(object sender, EventArgs e) { //判断是否选择患者 if (this.Patient.PatientId == 0 || tsbDoc.SelectedTab == null) { MessageBox.Show("请先选择患者!", "系统提示"); return; } PrintDocument DModel = DocumentDAL.GetDocumentbyName(tsbDoc.SelectedTab.Text, Patient.PatientId); if (DModel != null && DModel.Id > 0) { DialogResult dialogResult = MessageBox.Show("确认要删除 " + tsbDoc.SelectedTab.Text + " 文书?", "系统提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (dialogResult == DialogResult.Yes) { DocumentDAL.DeletePrintDocument2(DModel); PublicMethod.WriteLog("删除文书" + tsbDoc.SelectedTab.Text, Patient.PatientId); this.ucClassify.RefreshTree(this.Patient.PatientId); CloseTab(); } } } private void CboOperationSite_SelectedIndexChanged(object sender, EventArgs e) { ControlExtension.SetOperationSiteRoom(CboOperationSite, null); dtpSearchTime_ValueChanged(null, null); } } }