using AIMS.DocManager; using AIMS.PublicUI.UI; using AIMSBLL; using AIMSExtension; using AIMSModel; using DevComponents.Editors.DateTimeAdv; using DocumentManagement; using DrawGraph; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Drawing.Printing; using System.Linq; using System.Reflection; using System.Windows.Forms; namespace AIMS.OperationAanesthesia { public partial class frmAanesthesiaRecover : Form { #region 初始化 public OperationRecord _record; public TemplateManage templateManage; public AIMSModel.OperationRoom NowRoom; public int PatientId = 0; public int ApplyId = 0; public int RecoverId = 2; private System.Windows.Forms.Timer timerGetTextCollectorData; public AIMSExtension.EditState State; public bool isReadOnly = false; public frmAanesthesiaRecover() { InitializeComponent(); #region 时间轴事件 txtInRoom.MouseDown += new MouseEventHandler(txtDateTime_MouseDown); txtOutRoom.MouseDown += new MouseEventHandler(txtDateTime_MouseDown); txtAnaesthesiaEnd.MouseDown += new MouseEventHandler(txtDateTime_MouseDown); txtBG.MouseDown += new MouseEventHandler(txtDateTime_MouseDown); txtAnaesthesiaEnd.KeyUp += new KeyEventHandler(dateTimePicker_KeyUp); txtBG.KeyUp += new KeyEventHandler(dateTimePicker_KeyUp); txtInRoom.LostFocus += new EventHandler(txtDateTime_LostFocus); txtOutRoom.LostFocus += new EventHandler(txtDateTime_LostFocus); txtAnaesthesiaEnd.LostFocus += new EventHandler(txtDateTime_LostFocus); txtBG.LostFocus += new EventHandler(txtDateTime_LostFocus); this.picInRoom.BackgroundImage = global::AIMSControls.Properties.Resources.入手术室; this.picBG.BackgroundImage = global::AIMSControls.Properties.Resources.拔管; this.picAnesEnd.BackgroundImage = global::AIMSControls.Properties.Resources.麻醉结束; this.picOutRoom.BackgroundImage = global::AIMSControls.Properties.Resources.出手术室; #endregion } private void frmAnasRecordBillNew_Load(object sender, EventArgs e) { labOperatorName.Text = "(" + AIMSExtension.PublicMethod.OperatorNo + ")" + " " + AIMSExtension.PublicMethod.OperatorName; if (NowRoom != null) lblRoom.Text = NowRoom.Name; circularProgress1.Location = new Point((panel8.Width - circularProgress1.Width) / 2, (panel8.Height - circularProgress1.Height) / 2); if (PublicMethod.OperatorNo == "admin" || PublicMethod.RoleName.Contains("复苏收费记录")) { btnChage.Visible = true; } if (PublicMethod.OperatorNo == "admin" || PublicMethod.RoleName.Contains("数据中心")) { btnsjzx.Visible = true; } if (PublicMethod.OperatorNo == "admin" || PublicMethod.RoleName.Contains("大屏通知")) { btndptz.Visible = true; } if (PublicMethod.HospitalName.Contains("天福")) { btnOperationInfo.Text = " 恢复信息"; btnTemplate.Visible = false; } LoadAnesRescue(); } #endregion #region 打印方法 public List mPanes = new List(); public List UpPanes = new List(); public int printWidth = 800; public int printHeight = 1160; int count = 0; private void pDoc_PrintPage(object sender, PrintPageEventArgs e) { Font f = new Font("宋体", 10, FontStyle.Regular); decimal Chinese_OneWidth = Convert.ToDecimal(e.Graphics.MeasureString("测", f).Width); int pageWidth = Convert.ToInt32(Math.Round(e.PageSettings.PrintableArea.Width, 0)) - 1;//打印机可打印区域的宽度 int onePageHeight = Convert.ToInt32(Math.Round(e.PageSettings.PrintableArea.Height, 0)) - 1;//打印机可打印区域的高度 int printCount = mPanes.Count; if (mPanes.Count > 0 && count < printCount) { mPanes[count].Draw(e.Graphics); count++; if (count < printCount) { e.HasMorePages = true; } } else { e.HasMorePages = false; } } private void plPrintBrowse_Click(object sender, EventArgs e) { int pylWidth = 3; plPrintBrowse.Select(); if (_record.SAreaObj != null && _record.SAreaObj.Selected == true) { _record.SAreaObj.Clear(); } if (_record.SelPhysioConfig != null) { _record.SelPhysioConfig.IsClick = false; _record.SelPhysioConfig.onClick(e); _record.SelPhysioConfig = null; } System.Drawing.Printing.PrintDocument pDoc = new System.Drawing.Printing.PrintDocument(); pDoc.DefaultPageSettings.Landscape = false; pDoc.OriginAtMargins = true; pDoc.DefaultPageSettings.Margins = new Margins(pylWidth, 0, 0, 0);//8, 0); pDoc.DefaultPageSettings.PrinterResolution.Kind = PrinterResolutionKind.High; pDoc.PrintPage -= new PrintPageEventHandler(PrintDocPage); pDoc.PrintPage += new PrintPageEventHandler(PrintDocPage); PrintPreviewDialog pdg = new PrintPreviewDialog(); pdg.Width = zgcAnaesRecord.Width; Form f = (Form)pdg; f.WindowState = FormWindowState.Maximized; pdg.Document = pDoc; pdg.PrintPreviewControl.Zoom = 1; pdg.ShowDialog(this); pdg.Focus(); pdg.BringToFront(); } private void PrintDocPage(object sender, PrintPageEventArgs e) { if (_record == null) return; int zgcAnaesRecordWidth = zgcAnaesRecord.Size.Width; int zgcAnaesRecordHeight = zgcAnaesRecord.Size.Height; printHeight = Convert.ToInt32(printWidth * 1.414) + 2; zgcAnaesRecord.Size = new Size(printWidth, printHeight); TipBox.Hidden(); MasterPane mPane = zgcAnaesRecord.MasterPane; //this.MasterPane; mPane.Border.IsVisible = false; //GraphPane cPane = mPane.PaneList[0]; //graphPane; //cPane.Border.IsVisible = false; //当前窗体中的矩形区域大小 RectangleF saveRect = mPane.Rect; templateManage.initChart(); mPanes.Add(mPane.Clone()); if (e != null) mPane.Draw(e.Graphics); //在打印文档中画出MasterPane内容 using (Graphics g = zgcAnaesRecord.CreateGraphics()) { mPane.ReSize(g, saveRect); } zgcAnaesRecord.Size = new Size(zgcAnaesRecordWidth, zgcAnaesRecordHeight); templateManage.initChart(); UpPanes.Add(mPane.Clone()); } private void plPrint_Click(object sender, EventArgs e) { if (_record == null || _record.Id == 0) return; plPrint.Select(); if (_record.SAreaObj != null && _record.SAreaObj.Selected == true) { _record.SAreaObj.Clear(); } if (_record.SelPhysioConfig != null) { _record.SelPhysioConfig.IsClick = false; _record.SelPhysioConfig.onClick(e); _record.SelPhysioConfig = null; } if (_record.StateName == "麻醉复苏中") { if (txtOutRoom.CustomFormat == " ") { txtOutRoom.BackColor = Color.Red; MessageBox.Show("复苏还没有结束,请填写出室时间!", "系统提示"); return; } } try { mPanes = new List(); UpPanes = new List(); int printrcount = 0; while (_record.pageCount != 1) { btnUpPage_Click(null, null); } while (_record.currentPage != _record.pageCount) { PrintDocPage(null, null); printrcount++; btnNextPage_Click(null, null); if (printrcount > 10) break; } PrintDocPage(null, null); count = 0; int pylWidth = 3; System.Drawing.Printing.PrintDocument pDoc = new System.Drawing.Printing.PrintDocument(); pDoc.DefaultPageSettings.Landscape = false; pDoc.OriginAtMargins = true; pDoc.DefaultPageSettings.PrinterResolution.Kind = PrinterResolutionKind.High; pDoc.DefaultPageSettings.Margins = new Margins(pylWidth, 0, 0, 0); pDoc.PrintPage -= new PrintPageEventHandler(pDoc_PrintPage); pDoc.PrintPage += new PrintPageEventHandler(pDoc_PrintPage); System.Windows.Forms.PrintDialog pDlg = new System.Windows.Forms.PrintDialog(); pDlg.Document = pDoc; if (pDlg.ShowDialog() == System.Windows.Forms.DialogResult.OK) { pDoc.Print(); } ControlExtension.UPDocument(_record.PatientId.Value, _record.OperationApplyId.Value, _record.Id.Value, _record.RecoverId.Value, "10", "恢复记录单"); PublicMethod.WriteLog("打印恢复记录单", _record.PatientId.Value, 1, "恢复"); count = 0; } catch (Exception exp) { PublicMethod.WriteLog(exp, ""); } } #endregion #region 上方按钮 /// /// 复苏特殊事件时间点处理事件 /// /// /// public void txtDateTime_MouseDown(object sender, MouseEventArgs e) { if (PatientId == 0) return; DateTimeInput tb = sender as DateTimeInput; //if (_record != null && _record.OutRoomTime != null) //{ // if ((tb.Name == "txtBG" || tb.Name == "txtCG") && tb.Text.Trim() == "") // { // return; // } //} if (tb.Text.Trim() == "" && tb.CustomFormat == " ") { tb.BackColor = Color.White; SetPic(sender); } else { tb.CustomFormat = "HH:mm"; tb.ButtonDropDown.Visible = true; } } private void txtDateTime_LostFocus(object sender, EventArgs e) { if (PatientId == 0) return; DateTimeInput tb = sender as DateTimeInput; if (tb.CustomFormat == "HH:mm") { if (tb.Name == "txtInRoom" || tb.Name == "txtOutRoom") { tb.CustomFormat = "MM-dd HH:mm"; } tb.ButtonDropDown.Visible = false; } if (tb.Text.Trim() != "" && tb.Value.ToString() != tb.Tag.ToString()) { try { SetPic(sender, tb.Value); tb.BackColor = Color.White; } catch (Exception) { tb.Focus(); tb.Value = DateTime.Parse(tb.Tag.ToString()); return; } } else { if (tb.Tag != null && tb.Tag.ToString() != "") tb.Value = DateTime.Parse(tb.Tag.ToString()); } } private void dateTimePicker_KeyUp(object sender, KeyEventArgs e) { if (PatientId == 0) return; DateTimeInput dtpak = (DateTimeInput)sender; if (e.KeyCode == Keys.Delete || e.KeyCode == Keys.Back) { if (dtpak.CustomFormat != " " && dtpak.Tag != null) { try { SetPic((DateTimeInput)sender); } catch (Exception) { //PublicMethod.ShowMessage("输入的时间格式不符合规范(HH:mm)!"); return; } } } } /// /// 特殊事件触发时设置图片 /// /// 显示时间的控件 private void SetPic(Object obj) { DrawGraph.FactEvents Inevent = null; DateTimeInput tb = obj as DateTimeInput; DateTime nowtime = DateTime.Now;// getOpeMaxTime(); DateTime curTimeTemp = new DateTime(nowtime.Year, nowtime.Month, nowtime.Day, nowtime.Hour, nowtime.Minute, 0); InsertOrUpdateEventTime(0, "txtInRoom", "入室", tb, curTimeTemp, ref Inevent); curTimeTemp = curTimeTemp.AddSeconds(2); InsertOrUpdateEventTime(0, "txtBG", cmbBGType.Text, tb, curTimeTemp, ref Inevent); curTimeTemp = curTimeTemp.AddSeconds(2); InsertOrUpdateEventTime(0, "txtAnaesthesiaEnd", "麻醉完成", tb, curTimeTemp, ref Inevent); curTimeTemp = curTimeTemp.AddSeconds(2); InsertOrUpdateEventTime(0, "txtOutRoom", "出室", tb, curTimeTemp, ref Inevent); if (Inevent != null) { _record.FactEventsList.Add(Inevent); if (Inevent.EventName == "入室") { _record.pageCount = 0; ReviewEvent(); } else if (Inevent.EventName == "出室" || Inevent.EventBeginTime > _record.lastPageBegin) { ReviewEvent(); } else { DrawEvent(); } PublicMethod.WriteLog(Inevent.EventName, _record.PatientId.Value, 1, "恢复"); } } /// /// 特殊事件触发时设置图片 /// /// 显示时间的控件 private void SetPic(Object obj, DateTime curTimeTemp) { DrawGraph.FactEvents Inevent = null; DateTimeInput tb = obj as DateTimeInput; curTimeTemp = new DateTime(curTimeTemp.Year, curTimeTemp.Month, curTimeTemp.Day, curTimeTemp.Hour, curTimeTemp.Minute, 0); //try //{ // if (curTimeTemp.Date < _record.PlanOperationTime.AddDays(-3).Date) // { // tb.Focus(); // tb.Value = DateTime.Parse(tb.Tag.ToString()); // return; // } //} //catch (Exception) //{ //} InsertOrUpdateEventTime(1, "txtInRoom", "入室", tb, curTimeTemp, ref Inevent); curTimeTemp = curTimeTemp.AddSeconds(2); InsertOrUpdateEventTime(1, "txtBG", cmbBGType.Text, tb, curTimeTemp, ref Inevent); curTimeTemp = curTimeTemp.AddSeconds(2); InsertOrUpdateEventTime(1, "txtAnaesthesiaEnd", "麻醉完成", tb, curTimeTemp, ref Inevent); curTimeTemp = curTimeTemp.AddSeconds(2); InsertOrUpdateEventTime(1, "txtOutRoom", "出室", tb, curTimeTemp, ref Inevent); if (Inevent != null) { if (Inevent.EventName == "入室") { _record.pageCount = 0; ReviewEvent(); } else if (Inevent.EventName == "出室" || Inevent.EventBeginTime > _record.lastPageBegin) { ReviewEvent(); } else { DrawEvent(); } PublicMethod.WriteLog("修改" + Inevent.EventName, _record.PatientId.Value, 1, "恢复"); } } /// /// 特殊事件触发时设置图片 /// /// 显示时间的控件 private void SetPic(DateTimeInput obj) { DrawGraph.FactEvents Inevent = null; DateTimeInput tb = obj as DateTimeInput; if (_record.StateName == "麻醉复苏中" || tb.Name.Equals("txtBG")) { DeleteEventTime("txtAnaesthesiaEnd", "麻醉完成", tb, ref Inevent); DeleteEventTime("txtBG", cmbBGType.Text, tb, ref Inevent); } else { MessageBox.Show("选择的事件不可删除 只可修改!"); } if (Inevent != null) { tb.ButtonDropDown.Visible = false; _record.FactEventsList.Remove(Inevent); DrawEvent(); PublicMethod.WriteLog("删除" + Inevent.EventName, _record.PatientId.Value, 1, "恢复"); } } /// /// 判断控件对应的事件 删除事件 /// /// 事件对应的控件名称 /// 事件名称 /// 控件 private void DeleteEventTime(string EventTxtName, string EventName, DateTimeInput tb, ref DrawGraph.FactEvents Inevent) { if (tb.Name.Equals(EventTxtName)) { List list = _record.FactEventsList.Where(c => c.EventName == EventName).ToList(); if (list.Count <= 0) return; Inevent = list[0]; if (EventName == "入室" || EventName == "出室") { //PublicMethod.ShowMessage("该事件为主要事件 不可删除 只可修改!!"); tb.Value = Inevent.EventBeginTime.Value; Inevent = null; return; } BFactEvents.DeleteById(Inevent.Id.ToString()); Inevent.clearAddObj(zgcAnaesRecord); tb.CustomFormat = " "; tb.Value = DateTime.Now; tb.Tag = null; if (Inevent != null && Inevent.EventName == "麻醉完成") { _record.AnesthesiaEndTime = null; this.picAnesEnd.BackgroundImage = global::AIMSControls.Properties.Resources.麻醉结束; BOperationRecord.Update(" AnesthesiaEndTime=null where Id=@id ", new AIMSModel.ParameterList("@id", _record.Id)); } if (Inevent != null && Inevent.EventName == cmbBGType.Text) { _record.InBGType = ""; _record.SpileOutTime = null; this.picBG.BackgroundImage = global::AIMSControls.Properties.Resources.拔管; BOperationRecord.Update(" SpileOutTime=null where Id=@id ", new AIMSModel.ParameterList("@id", _record.Id)); //UpdatePhysioDataResp(); } } } /// /// 判断控件对应的事件 插入事件 /// /// 0插入 1更新 /// 事件对应的控件名称 /// 事件名称 /// 事件对应的对象时间 /// 控件 /// 事件时间 /// 事件对象 private void InsertOrUpdateEventTime(int state, string EventTxtName, string EventName, DateTimeInput tb, DateTime curTimeTemp, ref DrawGraph.FactEvents Inevent) { if (tb.Name.Equals(EventTxtName)) { string messing = ""; bool timeistrue = true; timeistrue = BOperationRecord.IfTimeisTrue(false, _record, EventName, curTimeTemp, ref messing); if (_record.State != null) { if (messing != "") { MessageBox.Show(messing); } } else { timeistrue = true; } if (EventName == "出室" && _record.StateName == "麻醉复苏中" && state == 0) { if (GetOpeState(ref messing) == false) { if (messing != "") MessageBox.Show(messing, "系统提示"); //if (messing == "请填写复苏不良事件!") // btnAdverseFactEvents_Click(null, null); return; } } if (timeistrue == false) { if (tb.Tag != null) tb.Value = DateTime.Parse(tb.Tag.ToString()); return; } if (EventName == "出室" && curTimeTemp.ToString("yyyy-MM-dd HH:mm") == _record.lastPageBegin.ToString("yyyy-MM-dd HH:mm")) { curTimeTemp = _record.lastPageBegin; } if (state != 1) { Inevent = BFactEvents.Insert(PatientId, EventName, curTimeTemp, curTimeTemp, RecoverId); } else { updateEventTime(EventName, curTimeTemp, ref Inevent); } tb.Value = curTimeTemp; tb.Tag = curTimeTemp; if (Inevent != null && Inevent.EventName == "入室" && _record.InRoomTime != Inevent.EventBeginTime) { _record.InRoomTime = Inevent.EventBeginTime; this.picInRoom.BackgroundImage = global::AIMSControls.Properties.Resources.入手术室_select; BOperationRecord.Update("InRoomTime=@InRoom where Id=@id ", new AIMSModel.ParameterList("@InRoom", _record.InRoomTime.Value.ToString("yyyy-MM-dd HH:mm:ss"), "@id", _record.Id)); } if (Inevent != null && Inevent.EventName == cmbBGType.Text && _record.SpileOutTime != Inevent.EventBeginTime) { _record.InBGType = cmbBGType.Text; _record.SpileOutTime = Inevent.EventBeginTime; this.picBG.BackgroundImage = global::AIMSControls.Properties.Resources.拔管_select; BOperationRecord.Update(" SpileOutTime=@SpileOut where Id=@id ", new AIMSModel.ParameterList("@SpileOut", _record.SpileOutTime.Value.ToString("yyyy-MM-dd HH:mm:ss"), "@id", _record.Id)); } if (Inevent != null && Inevent.EventName == "麻醉完成" && _record.AnesthesiaEndTime != Inevent.EventBeginTime) { _record.AnesthesiaEndTime = Inevent.EventBeginTime; this.picAnesEnd.BackgroundImage = global::AIMSControls.Properties.Resources.麻醉结束_select; BOperationRecord.Update("AnesthesiaEndTime=@AnesthesiaEndTime where Id=@id ", new AIMSModel.ParameterList("@AnesthesiaEndTime", _record.AnesthesiaEndTime.Value.ToString("yyyy-MM-dd HH:mm:ss"), "@id", _record.Id)); } if (Inevent != null && Inevent.EventName == "出室" && _record.OutRoomTime != Inevent.EventBeginTime) { _record.OutRoomTime = Inevent.EventBeginTime; this.picOutRoom.BackgroundImage = global::AIMSControls.Properties.Resources.出手术室_select; BOperationRecord.Update("OutRoomTime=@OutRoom where Id=@id ", new AIMSModel.ParameterList("@OutRoom", _record.OutRoomTime.Value.ToString("yyyy-MM-dd HH:mm:ss"), "@id", _record.Id)); } } } /// /// 修改事件时间 /// /// /// public void updateEventTime(string eventName, DateTime dt, ref DrawGraph.FactEvents elist) { List list = _record.FactEventsList.Where(c => c.EventName == eventName).ToList(); if (list.Count <= 0) return; elist = list[0]; if (elist.EventBeginTime != dt) { elist.EventBeginTime = dt; elist.EventEndTime = dt; BFactEvents.Update("EventBeginTime=@EventBeginTime,EventEndTime=@EventEndTime where id=@id ", new AIMSModel.ParameterList("@EventBeginTime", elist.EventBeginTime, "@EventEndTime", elist.EventEndTime, "@id", elist.Id)); } } #endregion #region 下方按钮 private void panel8_Scroll(object sender, ScrollEventArgs e) { templateManage.SetPYL(); } private void plRefresh_Click(object sender, EventArgs e) { if (PatientId == 0) return; //刷新到当前页 ReviewEvent(); } private void btnUpPage_Click(object sender, EventArgs e) { if (PatientId == 0) return; if (_record.pageCount == 1) return; SetUpPageTime(); ReviewEvent(); } private void btnNextPage_Click(object sender, EventArgs e) { if (PatientId == 0) return; if (_record.pageCount == _record.currentPage) return; SetNextPageTime(); ReviewEvent(); } private void btnUpFsPage_Click(object sender, EventArgs e) { while (_record.pageCount != 1) { btnUpPage_Click(null, null); } } private void btnNextEndPage_Click(object sender, EventArgs e) { while (_record.currentPage != _record.pageCount) { btnNextPage_Click(null, null); } } public void SetUpPageTime() { if (_record.PageBegin < _record.sharpBegin) return; _record.lastPageBegin = _record.PageBegin; _record.PageBegin = _record.PageBegin.AddMinutes(-240); _record.pageCount--; if (_record.pageCount < 1) _record.pageCount = 1; } public void SetNextPageTime() { //当下一页的开始时间,小于当前最大时间 DateTime curTimeTemp = getOpeMaxTime(_record); if (_record.lastPageBegin > curTimeTemp) return; //先设置新页的开始时间 _record.PageBegin = _record.lastPageBegin; _record.lastPageBegin = _record.PageBegin.AddMinutes(240); _record.pageCount++; if (_record.pageCount > _record.currentPage) _record.pageCount = _record.currentPage; } #endregion #region 左侧按钮 private void btnSelectPatient_Click(object sender, EventArgs e) { OperationAanesthesia.frmRecoverPatient frmSelectPatient = new OperationAanesthesia.frmRecoverPatient(); //frmSelectPatient.isMainOpen = true; frmSelectPatient.FormClosed += new FormClosedEventHandler(frmSelectPatient_FormClosed); frmSelectPatient.ShowDialog(); } void frmSelectPatient_FormClosed(object sender, FormClosedEventArgs e) { LoadAnesRescue(); } private System.Windows.Forms.Timer timerLoadAnesRescue; public void LoadAnesRescue() { circularProgress1.IsRunning = true; circularProgress1.Visible = true; zgcAnaesRecord.Visible = false; timerLoadAnesRescue = new System.Windows.Forms.Timer(components); timerLoadAnesRescue.Enabled = true;//调试时设置为FALSE , timerLoadAnesRescue.Interval = 300; timerLoadAnesRescue.Tick -= TimerLoadAnesRescue_Tick; timerLoadAnesRescue.Tick += TimerLoadAnesRescue_Tick; timerLoadAnesRescue.Start(); } private void TimerLoadAnesRescue_Tick(object sender, EventArgs e) { try { timerLoadAnesRescue.Dispose(); if (PatientId > 0 && State == AIMSExtension.EditState.ADD) { try { HelperDB.DbHelperSQL.BeginTrans(); _record = new OperationRecord(); _record.OperationApplyId = ApplyId; _record.PatientId = PatientId; _record.RecoverId = RecoverId; _record.Id = BOperationRecord.AddTitleTime2(PatientId, ApplyId, RecoverId, 3, NowRoom.Id.Value); HelperDB.DbHelperSQL.CommitTrans(); //_record.currentPage = 1; ClearTimeText(); btnSelectPatient.Enabled = false; DrawAnasReordBill.IniDrawAnasReordBill3(_record, zgcAnaesRecord, ref templateManage); //初始化麻醉记录单界 PublicMethod.WriteLog("入恢复室", _record.PatientId.Value, 1, "恢复"); StartTimer(); } catch { HelperDB.DbHelperSQL.RollbackTrans(); } } else if (PatientId > 0 && State == AIMSExtension.EditState.EDIT) { _record = new OperationRecord(); btnSelectPatient.Enabled = false; //清空记录点并重新加载 ClearTimeText(); if (templateManage != null) { templateManage.ControlClear(); } DrawAnasReordBill.IniDrawAnasReordBill3(_record, zgcAnaesRecord, ref templateManage); //初始化麻醉记录单界面 StartTimer(); } else if (PatientId > 0 && State == AIMSExtension.EditState.BROWSE) { _record = new OperationRecord(); btnSelectPatient.Enabled = true; btnCancelOperation.Enabled = false; btnCancelIn.Enabled = false; ClearTimeText(); if (templateManage != null) { templateManage.ControlClear(); } DrawAnasReordBill.IniDrawAnasReordBill3(_record, zgcAnaesRecord, ref templateManage); //初始化麻醉记录单界面 DisposeTimer(); } plRefresh_Click(null, null); if (_record.MedicalRecord != null && _record.MedicalRecord != "") { btnOperationInfo.Enabled = false; btnOutputLiquids.Enabled = false; btnDrug.Enabled = false; btnAddEvents.Enabled = false; txtInRoom.Enabled = false; txtAnaesthesiaEnd.Enabled = false; txtOutRoom.Enabled = false; txtBG.Enabled = false; isReadOnly = true; } } catch (Exception ex) { throw ex; } circularProgress1.IsRunning = false; circularProgress1.Visible = false; zgcAnaesRecord.Visible = true; } private void btnOperationInfo_Click(object sender, EventArgs e) { if (PatientId != 0) { if (btnOperationInfo.Text.Trim() == "恢复信息") { frmOpeRecoverInfo frmOperationInfo = new frmOpeRecoverInfo(); frmOperationInfo._record = _record; frmOperationInfo.FormClosed += new FormClosedEventHandler(plRefresh_Click); frmOperationInfo.ShowDialog(); } else { frmOpeRecoverInInfo frmOperationInfo = new frmOpeRecoverInInfo(); frmOperationInfo._record = _record; frmOperationInfo.FormClosed += new FormClosedEventHandler(plRefresh_Click); frmOperationInfo.ShowDialog(); } } else { MessageBox.Show("请选择患者"); } } private void btnDrug_Click(object sender, EventArgs e) { if (PatientId != 0) { PublicUI.UI.frmFactDrugNew frmFactDrug = new PublicUI.UI.frmFactDrugNew(); frmFactDrug._record = _record; frmFactDrug.zgcAnaesRecord = zgcAnaesRecord; frmFactDrug.DrugTypeId = RecoverId; // 事件类型 1 麻醉单事件 2 麻醉复苏单 frmFactDrug.FormClosed += new FormClosedEventHandler(frmFactEventsNew_FormClosed); frmFactDrug.ShowDialog(); } else { MessageBox.Show("请选择患者"); } } private void btnAddEvents_Click(object sender, EventArgs e) { if (PatientId != 0) { PublicUI.UI.frmFactEventsNew frmFactEventsNew = new PublicUI.UI.frmFactEventsNew(); frmFactEventsNew._record = _record; frmFactEventsNew.zgcAnaesRecord = zgcAnaesRecord; frmFactEventsNew.EventTypeId = RecoverId; // 事件类型 1 麻醉单事件 2 麻醉复苏单 frmFactEventsNew.EventParam += ReferEventDrugs; frmFactEventsNew.ShowDialog(); } else { MessageBox.Show("请选择患者"); } } private void btnOutputLiquids_Click(object sender, EventArgs e) { if (PatientId != 0) { PublicUI.UI.frmFactOutputLiquidsNew frmFactOutputLiquids = new PublicUI.UI.frmFactOutputLiquidsNew(); frmFactOutputLiquids._record = _record; frmFactOutputLiquids.OutputLiquidTypeId = RecoverId; // 事件类型 1 麻醉单事件 2 麻醉复苏单 frmFactOutputLiquids.FormClosed += new FormClosedEventHandler(frmFactEventsNew_FormClosed); frmFactOutputLiquids.ShowDialog(); } else { MessageBox.Show("请选择患者"); } } private void button6_Click(object sender, EventArgs e) { frmAanesthesiaQuality frmAnaseDataQuality = new frmAanesthesiaQuality(); frmAnaseDataQuality._record = _record; frmAnaseDataQuality.ShowDialog(); } void frmFactEventsNew_FormClosed(object sender, FormClosedEventArgs e) { DateTime EndTime = getOpeMaxTime(_record); if (EndTime > _record.lastPageBegin) { ReviewEvent(); } else { templateManage.Bind("DrugsManage"); templateManage.Bind("SapManage"); templateManage.Bind("RemarkManage"); } } private void btnCancelOperation_Click(object sender, EventArgs e) { if (PatientId == 0) { MessageBox.Show("请选择患者!"); return; } if (BOperationRecord.GetDataCount(_record.Id.Value, PatientId, RecoverId) > 0) { MessageBox.Show("清除数据在进行作废复苏操作!"); return; } if (MessageBox.Show("确认要停止复苏吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { try { HelperDB.DbHelperSQL.BeginTrans(); BOperationApply.UpdateApplyState(ApplyId, 8); //BOperationRecord.DeleteOperationRecordData(PatientId, RecoverId); BOperationRecord.UpdateState(PatientId, 1, 5); HelperDB.DbHelperSQL.CommitTrans(); //ClearData(); this.Close(); } catch { HelperDB.DbHelperSQL.RollbackTrans(); } } } private void btnCancelIn_Click(object sender, EventArgs e) { if (PatientId == 0) { MessageBox.Show("请选择患者!"); return; } if (BOperationRecord.GetDataCount(_record.Id.Value, PatientId, RecoverId) > 0) { MessageBox.Show("清除数据在进行取消转入操作!"); return; } if (MessageBox.Show("确认要取消转入吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { try { HelperDB.DbHelperSQL.BeginTrans(); BOperationApply.UpdateApplyState(ApplyId, 8); BOperationRecord.DeleteOperationRecorvreData(_record.Id.Value, PatientId, RecoverId); HelperDB.DbHelperSQL.CommitTrans(); PublicMethod.WriteLog("取消转入", _record.PatientId.Value, 0, "恢复"); DisposeTimer(); //ClearData(); this.Close(); } catch { HelperDB.DbHelperSQL.RollbackTrans(); } } } private void btnTemplate_Click(object sender, EventArgs e) { if (PatientId != 0) { frmOpeRecoverOutInfo frmOperationInfo = new frmOpeRecoverOutInfo(); frmOperationInfo._record = _record; frmOperationInfo.FormClosed += new FormClosedEventHandler(plRefresh_Click); frmOperationInfo.ShowDialog(); } else { MessageBox.Show("请选择患者"); } } private void tsbExePlan_Click(object sender, EventArgs e) { if (PatientId == 0) { MessageBox.Show("请先选择患者!"); return; } PatientRecord patient = PatientRecord.GetPatientRecord(PatientId); frmDocument frmDocument = new frmDocument(patient); frmDocument.StartPosition = FormStartPosition.CenterScreen; frmDocument.WindowState = FormWindowState.Maximized; frmDocument.ShowDialog(); } void toolStripMenuItem2_Click(object sender, EventArgs e) { frmPhysiosSetting frm = new frmPhysiosSetting(); frm.ConfigParam += new frmPhysiosSetting.ConfigParamHandler(templateManage.frmInstance_ConfigParam); frm._record = _record; frm.ShowDialog(); } private void reDrawAnalysis() { try { //图表的对象 TextPackObj janCePack = templateManage.GetPackObjectOTag("PhysioDataManage_TextPackObj_17"); LinePackObj H5pack = templateManage.GetPackObjectOTag("IconManage_LinePackObj_5"); RectangleFramePackObj IconPpack = templateManage.GetPackObjectOTag("IconManage_RectangleFramePackObj_2"); foreach (FactBloodGasAnalysis analysis in _record.FactBloodGasAnalysisList) { analysis.clearAddObj(zgcAnaesRecord); if (analysis.RecordTime.Value >= _record.PageBegin && analysis.RecordTime.Value < _record.lastPageBegin) { analysis.setAnasArr(zgcAnaesRecord, H5pack.RealX, IconPpack.RealY, _record.PageBegin, _record.PageBegin.AddMinutes(240)); analysis.drawText(janCePack.RealEndX, janCePack.RealY); } } if (_record.FactBloodGasAnalysisList != null && _record.FactBloodGasAnalysisList.Count > 0) zgcAnaesRecord.Refresh(); } catch (Exception exp) { PublicMethod.WriteLog(exp, ""); } } #endregion #region 采集程序 public DateTime? LastMonitorDataTime = null; private void timerGetCollectorData_Tick() { if (State == AIMSExtension.EditState.BROWSE || _record.StateName != "麻醉复苏中" || NowRoom == null || isReadOnly == true) return; //if (!PublicMethod.RoleId.Operator.RoleRef.Name.Contains("麻醉") && PublicMethod.Operator.Id != _record.OperatorId // && _record.OperatorId != 1 && PublicMethod.Operator.Name != "系统管理员") return; if (_record.OutRoomTime != null && DateTime.Now >= _record.OutRoomTime) return; DateTime dtTime = DateTime.Now; double span = ((TimeSpan)(dtTime - _record.InRoomTime.Value)).TotalSeconds % 300; if (span < 10 || span > 12) return; if (LastMonitorDataTime != null && LastMonitorDataTime.Value.ToString("yyyy-MM-dd HH:mm") == dtTime.ToString("yyyy-MM-dd HH:mm")) return; if (LastMonitorDataTime != null && LastMonitorDataTime.Value > dtTime) return; try { //bool isNowRoom = isOpeRoom(); //if (isNowRoom == false) //{ // return; //} PublicMethod.StartCollectorDataProgram(); LastMonitorDataTime = dtTime; DateTime InsertTime = Convert.ToDateTime(dtTime.ToString("yyyy-MM-dd HH:mm:00.000")); int date = 0; List physioDatas = new List(); foreach (PhysioDataConfig addPP in _record.PhysioConfigList) { string key = addPP.Name; string value = addPP.Enname; if (addPP.IsValid == false) continue; //if (addPP.StopCollect == true) continue; if (key == "机械通气") continue; if (value == null || value == "") continue; int minMinutes = -5; DataTable dtPhysioData = BOperationRecord.getPhysioDataByTimeName(NowRoom.Ip, value, InsertTime.AddMinutes(minMinutes), InsertTime.AddSeconds(1)); if (dtPhysioData != null && dtPhysioData.Rows.Count > 0) { foreach (DataRow dr in dtPhysioData.Rows) { try { //if (Double.Parse(dr["ParamValue"].ToString()) <= 1) continue; //if (key.Contains("压") && Double.Parse(dr["ParamValue"].ToString()) <= 30) continue; if (!isCgtime(addPP.Name, dtTime)) continue; PhysioData pdTemp = PhysioDataConfig.newPhysioData(addPP, _record.Id.Value, dtTime, dr["ParamValue"].ToString()); physioDatas.Add(pdTemp); continue; } catch (Exception) { continue; } } } } //有有创清空无创 foreach (var pdTemp in physioDatas) { if (pdTemp.PhysioDataConfigId == 7) { foreach (var temp in physioDatas) { if (temp.PhysioDataConfigId == 5) { temp.Value = 0; } } } if (pdTemp.PhysioDataConfigId == 8) { foreach (var temp in physioDatas) { if (temp.PhysioDataConfigId == 6) { temp.Value = 0; } } } } foreach (var pdTemp in physioDatas) { if (pdTemp.Value < 1) continue; PhysioDataConfig addPP = _record.PhysioConfigList.Where(a => pdTemp.PhysioDataConfigId == a.Id).ToList()[0]; //addPP.AddOrDelItem(pdTemp, 5); addPP.AddPointItem(pdTemp); date++; } if (dtTime > _record.lastPageBegin && ((TimeSpan)(dtTime - _record.lastPageBegin)).TotalHours < 24 && date > 0) { _record.currentPage++; btnNextPage_Click(null, null); } else { templateManage.Bind("DrugsManage"); templateManage.Bind("SapManage"); DrawEvent(); } } catch (Exception) { //getPhysioData_Click(null, null); } } public string szy;//舒张压 public string ssy;//收缩压 public DateTime? LastRespMonitorDataTime; private void timerGetTextCollectorData_Tick(object sender, EventArgs e) { try { if (((TimeSpan)(DateTime.Now - _record.lastPageBegin)).TotalHours > 24 || NowRoom == null) return; timerGetCollectorData_Tick(); if (State != AIMSExtension.EditState.BROWSE) ShowMonitorDataToRight(); } catch (Exception) { //PublicMethod.WriteLog(ex); } } private BackgroundWorker backgroundWorker1; public void ShowMonitorDataToRight() { this.backgroundWorker1 = new BackgroundWorker(); this.backgroundWorker1.WorkerReportsProgress = true; this.backgroundWorker1.WorkerSupportsCancellation = true; this.backgroundWorker1.DoWork += new DoWorkEventHandler(this.backgroundWorker1_DoWork); this.backgroundWorker1.RunWorkerCompleted += new RunWorkerCompletedEventHandler(this.backgroundWorker1_RunWorkerCompleted); this.backgroundWorker1.RunWorkerAsync(); } private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { BackgroundWorker worker = sender as BackgroundWorker; List lists = DeviceCacheData.Select(" IPAddress='" + NowRoom.Ip + "' and UpdateTime>='" + DateTime.Now.AddSeconds(-300) + "'"); e.Result = lists; } private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { List lists = e.Result as List; if (lists != null && lists.Count > 0) { DeviceCacheData deviceCacheData = lists[0]; NowPhysioData nowPhysioData = JsonConvert.DeserializeObject(deviceCacheData.JsonData); if (nowPhysioData.HR != null && nowPhysioData.HR.ToString() != string.Empty && nowPhysioData.HR.ToString() != "NaN" && nowPhysioData.HR.ToString() != "NULL") { double value = Double.Parse(nowPhysioData.HR.ToString()); lblHR.Text = value <= 0 ? "- -" : value.ToString(); } if (nowPhysioData.Resp != null && nowPhysioData.Resp.ToString() != string.Empty && nowPhysioData.Resp.ToString() != "NaN" && nowPhysioData.Resp.ToString() != "NULL") { double value = Double.Parse(nowPhysioData.Resp.ToString()); lblRESP.Text = value <= 0 ? "- -" : value.ToString(); } if (nowPhysioData.SPO2 != null && nowPhysioData.SPO2.ToString() != string.Empty && nowPhysioData.SPO2.ToString() != "NaN" && nowPhysioData.SPO2.ToString() != "NULL") { double value = Double.Parse(nowPhysioData.SPO2.ToString()); lblSpo2.Text = value <= 0 ? "- -" : value.ToString(); } if (nowPhysioData.PR != null && nowPhysioData.PR.ToString() != string.Empty && nowPhysioData.PR.ToString() != "NaN" && nowPhysioData.PR.ToString() != "NULL") { double value = Double.Parse(nowPhysioData.PR.ToString()); lblPR.Text = value <= 0 ? "- -" : value.ToString(); } if (nowPhysioData.Dia != null && nowPhysioData.Dia.ToString() != string.Empty && nowPhysioData.Dia.ToString() != "NaN" && nowPhysioData.Dia.ToString() != "NULL") { double value = Double.Parse(nowPhysioData.Dia.ToString()); szy = value <= 0 ? "" : value.ToString(); } if (nowPhysioData.Sys != null && nowPhysioData.Sys.ToString() != string.Empty && nowPhysioData.Sys.ToString() != "NaN" && nowPhysioData.Sys.ToString() != "NULL") { double value = Double.Parse(nowPhysioData.Sys.ToString()); ssy = value <= 0 ? "" : value.ToString(); } if (nowPhysioData.Dia_H != null && nowPhysioData.Dia_H.ToString() != string.Empty && nowPhysioData.Dia_H.ToString() != "NaN" && nowPhysioData.Dia_H.ToString() != "NULL") { double value = Double.Parse(nowPhysioData.Dia_H.ToString()); szy = value <= 0 ? "" : value.ToString(); } if (nowPhysioData.Sys_H != null && nowPhysioData.Sys_H.ToString() != string.Empty && nowPhysioData.Sys_H.ToString() != "NaN" && nowPhysioData.Sys_H.ToString() != "NULL") { double value = Double.Parse(nowPhysioData.Sys_H.ToString()); ssy = value <= 0 ? "" : value.ToString(); } string szyssy = ssy + "/" + szy; if (szyssy != "/") lblDia.Text = szyssy; } else { lblHR.Text = "--"; lblRESP.Text = "--"; lblSpo2.Text = "--"; lblPR.Text = "--"; lblDia.Text = "---/---"; lblHR.ForeColor = Color.Green; lblRESP.ForeColor = Color.DarkOrange; lblSpo2.ForeColor = Color.Cyan; lblPR.ForeColor = Color.Green; lblDia.ForeColor = Color.Red; } } public bool isCgtime(string key, DateTime time) { bool b = false; try { if (key == "自主呼吸") { if (_record.SpileInTime != null && _record.SpileOutTime != null) { if (time > _record.SpileInTime && time < _record.SpileOutTime) b = true; } if (_record.SpileInTime != null && _record.SpileOutTime == null) { if (time > _record.SpileInTime) b = true; } } else { b = false; } } catch (Exception ex) { PublicMethod.WriteLog(ex); } return b; } private void StartTimer() { if (timerGetTextCollectorData == null) timerGetTextCollectorData = new System.Windows.Forms.Timer(components); timerGetTextCollectorData.Enabled = true;//调试时设置为FALSE , timerGetTextCollectorData.Interval = 2000; timerGetTextCollectorData.Tick -= new System.EventHandler(timerGetTextCollectorData_Tick); timerGetTextCollectorData.Tick += new System.EventHandler(timerGetTextCollectorData_Tick); timerGetTextCollectorData.Start(); PublicMethod.StartCollectorDataProgram(); } private void DisposeTimer() { if (timerGetTextCollectorData != null) { timerGetTextCollectorData.Enabled = false; timerGetTextCollectorData.Stop(); } } public void StarttimerGetTextCollectorData() { if (timerGetTextCollectorData == null) return; timerGetTextCollectorData.Start(); } #endregion #region 鼠标右键 private void zgcAnaesRecord_KeyUp(object sender, KeyEventArgs e) { if (templateManage != null) { ZedGraphControl send = sender as ZedGraphControl; templateManage.zedControl_KeyUp(send, e); } } private bool zgcAnaesRecord_MouseDownEvent(ZedGraphControl sender, MouseEventArgs e) { if (templateManage != null && isReadOnly == false) { SelectWorkerValue.Hidden(); SelectDictValue.Hidden(); templateManage.zedControl_MouseDownEvent(sender, e); } return default(bool); } private bool zgcAnaesRecord_MouseUpEvent(ZedGraphControl sender, MouseEventArgs e) { if (templateManage != null && isReadOnly == false) { templateManage.zedControl_MouseUpEvent(sender, e); } return default(bool); } private bool zgcAnaesRecord_MouseMoveEvent(ZedGraphControl sender, MouseEventArgs e) { if (templateManage != null) { templateManage.zedControl_MouseMoveEvent(sender, e); } return default(bool); } private void zgcAnaesRecord_MouseDoubleClick(object sender, MouseEventArgs e) { if (templateManage != null && isReadOnly == false) { ZedGraphControl send = sender as ZedGraphControl; templateManage.zedControl_MouseDoubleClick(send, e); } } //public ucStripMenuItem menuItem = new ucStripMenuItem(); private void zgcAnaesRecord_ContextMenuBuilder(ZedGraphControl sender, ContextMenuStrip menuStrip, Point mousePt, ZedGraphControl.ContextMenuObjectState objState) { //if (PatientId == 0) return; //menuStrip.Width = 1; //menuItem.Visible = true; //menuItem.Location = mousePt; //menuItem.BringToFront(); //if (menuItem.isAdd == false) //{ // menuItem.isAdd = true; // zgcAnaesRecord.Controls.Add(menuItem); //} //添加自定义的新菜单 ToolStripMenuItem clearSelectCouve = new ToolStripMenuItem(); clearSelectCouve.Text = "清空选中曲线"; clearSelectCouve.Click += new EventHandler(clearSelectCouve_Click); menuStrip.Items.Add(clearSelectCouve); if (NowRoom != null) { ToolStripMenuItem getPhysioData = new ToolStripMenuItem(); getPhysioData.Text = "添加监护仪数据"; getPhysioData.Click += getPhysioData_Click; menuStrip.Items.Add(getPhysioData); } ToolStripMenuItem mnuAddDrug = new ToolStripMenuItem(); mnuAddDrug.Name = "add_medicine"; mnuAddDrug.Tag = "add_medicine"; mnuAddDrug.Text = "手动添加数据"; mnuAddDrug.Click += ((s, er) => { frmPhysioDataEdit frm = new frmPhysioDataEdit(_record); frm.FormClosed += ((ss, err) => { templateManage.Bind("MonitorManage"); zgcAnaesRecord.Refresh(); }); frm.ShowDialog(); }); menuStrip.Items.Add(mnuAddDrug); ToolStripMenuItem btnSyatemPhysion = new ToolStripMenuItem(); btnSyatemPhysion.Name = "btnSyatemPhysion"; btnSyatemPhysion.Tag = "btnSyatemPhysion"; btnSyatemPhysion.Text = "修改痕迹"; btnSyatemPhysion.Click += new EventHandler(btnSyatemPhysion_Click); menuStrip.Items.Add(btnSyatemPhysion); } /// /// 生命体征修改痕迹 /// /// /// private void btnSyatemPhysion_Click(object sender, EventArgs e) { if (PatientId == 0) return; frmPhysioDataUpdateLog Log = new frmPhysioDataUpdateLog(); Log.OperationRecordId = _record.Id.Value; Log.ShowDialog(); } private void getPhysioData_Click(object sender, EventArgs e) { if (State != AIMSExtension.EditState.BROWSE && _record.StateName == "麻醉复苏中" && NowRoom != null && isReadOnly == false) { //没有IP判断 DataTable dtPhysioData = BOperationRecord.getPhysioDataByIp(NowRoom.Ip, _record.Id.Value, _record.InRoomTime.Value, getOpeMaxTime(_record), 5); //同步未画点数据 DrawFillPhysioData(dtPhysioData); templateManage.Bind("PhysioDataManage"); zgcAnaesRecord.Refresh(); } } private void DrawFillPhysioData(DataTable dtPhysioData) { if (dtPhysioData.Rows.Count <= 0) return; if (dtPhysioData != null && dtPhysioData.Rows.Count > 0) { foreach (var addPP in _record.PhysioConfigList) { if (addPP.IsValid == false) continue; foreach (DataRow dr in dtPhysioData.Rows) { if (Double.Parse(dr["ParamValue"].ToString()) <= 0) continue; if (dr["ParameterName"] != null && dr["ParameterName"].ToString() != "" && dr["ParameterName"].ToString().Equals(addPP.Id.ToString())) { DateTime RecordTime = DateTime.Parse(dr["InsertTime"].ToString()); if (!isCgtime(addPP.Name, RecordTime)) continue; PhysioData pdTemp = PhysioDataConfig.newPhysioData(addPP, _record.Id.Value, RecordTime, dr["ParamValue"].ToString()); addPP.AddPointItem(pdTemp); } } } } } private void clearSelectCouve_Click(Object sender, EventArgs e) { templateManage.ClearSelectCouve(); } #endregion #region 公共方法 private void ReviewEvent() { if (PatientId != 0) { templateManage.OpeRecord = BOperationRecord.getRecord(_record, PatientId, RecoverId); templateManage.BindOperationRecordValueAll(templateManage.OpeRecord); reDrawEvent(); templateManage.Bind(); reDrawAnalysis(); zgcAnaesRecord.Refresh(); } } private void DrawEvent() { reDrawEvent(); templateManage.Bind("IconManage"); templateManage.Bind("RemarkManage"); zgcAnaesRecord.Refresh(); } private void reDrawEvent() { ClearTimeText(); if (_record.InRoomTime != null) { txtInRoom.CustomFormat = "MM-dd HH:mm"; txtInRoom.ButtonDropDown.Visible = false; txtInRoom.Tag = _record.InRoomTime.Value; txtInRoom.Value = _record.InRoomTime.Value; this.picInRoom.BackgroundImage = global::AIMSControls.Properties.Resources.入手术室_select; } if (_record.SpileOutTime != null) { cmbBGType.Text = _record.InBGType; txtBG.CustomFormat = "MM-dd HH:mm"; txtBG.Tag = _record.SpileOutTime.Value; txtBG.Value = _record.SpileOutTime.Value; this.picBG.BackgroundImage = global::AIMSControls.Properties.Resources.拔管_select; } if (_record.AnesthesiaEndTime != null) { txtAnaesthesiaEnd.CustomFormat = "HH:mm"; txtAnaesthesiaEnd.ButtonDropDown.Visible = false; txtAnaesthesiaEnd.Tag = _record.AnesthesiaEndTime.Value; txtAnaesthesiaEnd.Value = _record.AnesthesiaEndTime.Value; this.picAnesEnd.BackgroundImage = global::AIMSControls.Properties.Resources.麻醉结束_select; } if (_record.OutRoomTime != null) { txtOutRoom.CustomFormat = "MM-dd HH:mm"; txtOutRoom.ButtonDropDown.Visible = false; txtOutRoom.Tag = _record.OutRoomTime.Value; txtOutRoom.Value = _record.OutRoomTime.Value; this.picOutRoom.BackgroundImage = global::AIMSControls.Properties.Resources.出手术室_select; } if (_record.OutRoomTime != null && _record.StateName == "麻醉复苏中") { txtOutRoom.CustomFormat = "MM-dd HH:mm"; txtOutRoom.ButtonDropDown.Visible = false; txtOutRoom.Tag = _record.OutRoomTime.Value; txtOutRoom.Value = _record.OutRoomTime.Value; EndOperationOutRoom(); } } public void ReferEventDrugs() { //if (IsReadOnly == false) //BOperationRecord.Update(_record); if (txtInRoom.Value != _record.InRoomTime) { _record.pageCount = 0; ReviewEvent(); } else { plRefresh_Click(null, null); } } private void ClearTimeText() { txtInRoom.CustomFormat = " "; txtAnaesthesiaEnd.CustomFormat = " "; txtOutRoom.CustomFormat = " "; txtBG.CustomFormat = " "; txtInRoom.Tag = null; txtAnaesthesiaEnd.Tag = null; txtOutRoom.Tag = null; txtBG.Tag = null; txtInRoom.Text = ""; txtAnaesthesiaEnd.Text = ""; txtOutRoom.Text = ""; txtBG.Text = ""; this.picInRoom.BackgroundImage = global::AIMSControls.Properties.Resources.入手术室; this.picBG.BackgroundImage = global::AIMSControls.Properties.Resources.拔管; this.picAnesEnd.BackgroundImage = global::AIMSControls.Properties.Resources.麻醉结束; this.picOutRoom.BackgroundImage = global::AIMSControls.Properties.Resources.出手术室; } public DateTime getOpeMaxTime(OperationRecord myOpeRecord) { try { DateTime dts = BOperationRecord.lastMaxOperationDate(myOpeRecord.PatientId.Value, myOpeRecord.RecoverId.Value); DateTime nowDate = DateTime.Now; TimeSpan tsp = nowDate - dts; if (tsp.TotalHours <= 12 && tsp.TotalDays <= 1 && dts < nowDate)//&& IsReview == false { dts = nowDate; } if (dts.ToString("yyyy-MM-dd HH:mm") == myOpeRecord.PageBegin.AddMinutes(240).ToString("yyyy-MM-dd HH:mm")) { dts = myOpeRecord.PageBegin.AddMinutes(240); } if (myOpeRecord.OutRoomTime != null) { DateTime outRoomTime = DateTime.Parse(myOpeRecord.OutRoomTime.ToString()); if (DateTime.Compare(dts, outRoomTime) > 0) { dts = outRoomTime; } } return dts; } catch (Exception) { return DateTime.Now; } } private bool GetOpeState(ref string message) { bool isTrue = true; string anaesName = DBManage.GetDictionaryValuesById(_record.AnaesthesiaMethodId, "麻醉方式"); if (_record.AnaesthesiaMethodId == null || _record.AnaesthesiaMethodId.ToString().Trim() == "") { message = "请添加麻醉方式!"; isTrue = false; } if (anaesName.Contains("全身麻醉")) { if (_record.OperationDoctor == null || _record.OperationDoctor.Trim() == "") { message = "请添加术者!"; isTrue = false; } } return isTrue; } private void EndOperationOutRoom() { if (_record == null || _record.StateName != "麻醉复苏中") return; try { //CloseOtherFrom(); //保存持续加药未结束药品 foreach (FactDrug temp in _record.FactDrugList) { if (temp.IsContinue == 1 && temp.DrugBeginTime == temp.DrugEndTime) { temp.DrugEndTime = _record.OutRoomTime.Value; temp.OperatorNo = PublicMethod.OperatorNo; temp.OperatorName = PublicMethod.OperatorName; temp.OperateDate = DateTime.Now; BFactDrug.Update(temp); } } //保存持续事件未结束事件 foreach (FactEvents temp in _record.FactEventsList) { if (temp.IsContinue == 1 && temp.EventBeginTime == temp.EventEndTime) { temp.EventEndTime = _record.OutRoomTime; temp.OperatorNo = PublicMethod.OperatorNo; temp.OperatorName = PublicMethod.OperatorName; temp.OperateDate = DateTime.Now; BFactEvents.Update(temp); } } _record.StateName = "复苏结束"; BOperationApply.UpdateApplyState(ApplyId, 9); BOperationRecord.UpdateState(PatientId, RecoverId, 4); //PublicMethod.WriteLog("结束转出复苏: " + _record.Id); //TipBox.Hidden(true); State = AIMSExtension.EditState.BROWSE; btnCancelOperation.Enabled = false; btnCancelIn.Enabled = false; btnSelectPatient.Enabled = true; DisposeTimer(); ReviewEvent(); } catch (Exception exp) { PublicMethod.WriteLog(exp, ""); } } #endregion #region 右侧按钮 private void btnzsk_Click(object sender, EventArgs e) { frmKnowledgeBase frm = new frmKnowledgeBase(); frm.Show(); } private void btndptz_Click(object sender, EventArgs e) { frmNoticeLargeScreen fnc = new frmNoticeLargeScreen(); if (_record != null) { fnc.lblName.Text = _record.Name; fnc.textBox2.Focus(); fnc.groupBox1.Visible = false; } fnc.ShowDialog(); } private void btnsbwh_Click(object sender, EventArgs e) { frmInstrumentRegistration frm = new frmInstrumentRegistration(); frm.Show(); } private void btnsjzx_Click(object sender, EventArgs e) { if (_record != null) { EMRExtension.OpenEMRS(_record.PatientId.Value, _record.OperationApplyId.Value); } } private void btnChage_Click(object sender, EventArgs e) { if (_record != null) { EMRExtension.OpenFeesRecord(_record, "恢复室"); } } private void button1_Click(object sender, EventArgs e) { if (_record != null) { frmAanesthesiaRecord frmAnasRecord = new frmAanesthesiaRecord(); frmAnasRecord.PatientId = _record.PatientId.Value; frmAnasRecord.ApplyId = _record.OperationApplyId.Value; frmAnasRecord.State = AIMSExtension.EditState.BROWSE; frmAnasRecord.Show(); } } private void PanelSave_Paint(object sender, PaintEventArgs e) { PanelSave.Select(); if (_record != null) { BOperationRecord.Update(_record); if (_record.OpeRecordInfo != null) BOperationRecordInfo.Update(_record.OpeRecordInfo); if (_record.OpeRecoverInInfo != null) BOperationRecoverInInfo.Update(_record.OpeRecoverInInfo); if (_record.OpeRecoverOutInfo != null) BOperationRecoverOutInfo.Update(_record.OpeRecoverOutInfo); ReviewEvent(); new frmMessageBox().Show(); } } #endregion } }