using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Drawing2D;
using AIMSModel;
using AIMSBLL;
using AIMSExtension;
using DCSoftDotfuscate;
using DrawGraph;
using System.Reflection;
using Newtonsoft.Json;
using AIMS.OperationAanesthesia;
namespace AIMS.OperationAfter.UI
{
public partial class frmPhysiologyLargeScreen : Form
{
public frmPhysiologyLargeScreen()
{
InitializeComponent();
}
private void frmPhysiologyLargeScreen_Load(object sender, EventArgs e)
{
Initial();
}
///
/// 初始化数据
///
private void Initial()
{
List rooms = BOperationRoom.GetOperationRooms("IsValid=1 and Site='手术室'");
SetTabPages(rooms);
DataTable dt = SelectPatient.GetTodayDoOpePatientDataTable
(DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd")));
FullUCControlData(dt);
timer1.Enabled = true;
timer1.Start();
}
///
/// 根据手术间数量设置有多少个TabPages,每个TabPages显示10个手术间
///
private void SetTabPages(List list)
{
tabControl.TabPages.Clear();
if (list.Count > 0 && list.Count <= 10)
{
tabControl.TabPages.Add(" 1间—10间 ");
FullControlToTabPages(0, list.Skip(0).Take(10).ToList());
}
else if (list.Count > 10 && list.Count <= 20)
{
tabControl.TabPages.Add(" 1间—10间 ");
FullControlToTabPages(0, list.Skip(0).Take(10).ToList());
tabControl.TabPages.Add(" 11间—20间 ");
FullControlToTabPages(1, list.Skip(10).Take(10).ToList());
}
else if (list.Count > 20 && list.Count <= 30)
{
tabControl.TabPages.Add(" 1间—10间 ");
FullControlToTabPages(0, list.Skip(0).Take(10).ToList());
tabControl.TabPages.Add(" 11间—20间 ");
FullControlToTabPages(1, list.Skip(10).Take(10).ToList());
tabControl.TabPages.Add(" 21间—30间 ");
FullControlToTabPages(2, list.Skip(20).Take(10).ToList());
}
}
///
/// 将信息卡填充到tabPages
///
///
///
private void FullControlToTabPages(int tabPagesIndex, List roomlist)
{
int i = 0, j = 0;
foreach (OperationRoom room in roomlist)
{
AIMS.OremrUserControl.UCPatientPhysiology uc = new AIMS.OremrUserControl.UCPatientPhysiology();
uc.OperationRoom = room.Name;
uc.OperationRoomIp = room.Ip;
uc.lblRoom.Tag = room.Id;
uc.panel2.Visible = false;
uc.Location = new Point(j * (this.Width / 5) + 5, i * (uc.Height + 20) + 5);
tabControl.TabPages[tabPagesIndex].Controls.Add(uc);
j++;
if (j == 5)
{
i++;
j = 0;
}
}
}
private void PlRefresh_Click(object sender, EventArgs e)
{
System.Windows.Forms.Panel plRefresh = sender as System.Windows.Forms.Panel;
OperationRecord apply = BOperationRecord.SelectSingle(Convert.ToInt32(plRefresh.Tag));
frmAanesthesiaRecord frmAnasRecord = new frmAanesthesiaRecord();
frmAnasRecord.PatientId = apply.PatientId.Value;
frmAnasRecord.ApplyId = apply.OperationApplyId.Value;
frmAnasRecord.State = AIMSExtension.EditState.BROWSE;
frmAnasRecord.Show();
}
///
/// 将数据填充到信息卡
///
///
private void FullUCControlData(DataTable dt)
{
for (int i = 0; i < tabControl.TabPages.Count; i++)
{
foreach (Control ctl in tabControl.TabPages[i].Controls)
{
if (ctl is AIMS.OremrUserControl.UCPatientPhysiology)
{
AIMS.OremrUserControl.UCPatientPhysiology uc = ctl as AIMS.OremrUserControl.UCPatientPhysiology;
foreach (DataRow dr in dt.Rows)
{
if (dr["OperationRoomId"].ToString() == uc.lblRoom.Tag.ToString())
{
uc.panel2.Visible = true;
uc.Tag = dr["Id"].ToString();
uc.plRefresh.Tag = dr["Id"].ToString();
uc.PatientName = dr["PatientName"].ToString()+" "+ dr["Sex"].ToString()+" "+ dr["Age"].ToString();
uc.OperationName = dr["ApplyOperationInfoName"].ToString();
uc.AnaesthesiaMethod = dr["AnaesthesiaMethodName"].ToString();
uc.OperationDoctor = dr["OperationDoctor"].ToString();
uc.AnaesthesiaDoctor = dr["AnesthesiaDoctor"].ToString();
uc.OperationTime = dr["InRoomTime"].ToString();
uc.plRefresh.Click -= PlRefresh_Click;
uc.plRefresh.Click += PlRefresh_Click;
FullPatientPhysiology(uc, Convert.ToInt32(uc.Tag));
break;
}
}
}
}
}
}
///
/// 刷新控件及生命体征数据
///
private void RefreshPatientPhysiology()
{
DataTable dt = SelectPatient.GetTodayDoOpePatientDataTable
(DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd")));
for (int i = 0; i < tabControl.TabPages.Count; i++)
{
foreach (Control ctl in tabControl.TabPages[i].Controls)
{
if (ctl is AIMS.OremrUserControl.UCPatientPhysiology)
{
bool key = false;
AIMS.OremrUserControl.UCPatientPhysiology uc = ctl as AIMS.OremrUserControl.UCPatientPhysiology;
if (uc.Tag == null) continue;
foreach (DataRow dr in dt.Rows)
{
if (uc.lblRoom.Tag.ToString() == dr["OperationRoomId"].ToString())
{
key = true;
uc.panel2.Visible = true;
uc.Tag = dr["Id"].ToString();
uc.plRefresh.Tag = dr["Id"].ToString();
uc.PatientName = dr["PatientName"].ToString() + " " + dr["Sex"].ToString() + " " + dr["Age"].ToString();
uc.OperationName = dr["ApplyOperationInfoName"].ToString();
uc.AnaesthesiaMethod = dr["AnaesthesiaMethodName"].ToString();
uc.OperationDoctor = dr["OperationDoctor"].ToString();
uc.AnaesthesiaDoctor = dr["AnesthesiaDoctor"].ToString();
uc.OperationTime = dr["InRoomTime"].ToString();
uc.plRefresh.Click -= PlRefresh_Click;
uc.plRefresh.Click += PlRefresh_Click;
//刷新生命体征数据
FullPatientPhysiology(uc, Convert.ToInt32(uc.Tag));
break;
}
}
if (!key)
{
uc.panel2.Visible = false;
}
}
}
}
}
///
/// 为控件填充生命体征数据
///
/// 控件
/// 手术编号
private void FullPatientPhysiology(AIMS.OremrUserControl.UCPatientPhysiology uc, int operationRecordId)
{
List lists = DeviceCacheData.Select(" IPAddress='" + uc.OperationRoomIp + "' and UpdateTime>='" + DateTime.Now.AddSeconds(-300) + "'");
string hr = string.Empty;
string spo2 = string.Empty;
string br = string.Empty;
string pr = string.Empty;
string etco2 = string.Empty;
string dia = string.Empty;
string sys = string.Empty;
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());
hr = 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());
}
if (nowPhysioData.SPO2 != null && nowPhysioData.SPO2.ToString() != string.Empty && nowPhysioData.SPO2.ToString() != "NaN" && nowPhysioData.SPO2.ToString() != "NULL")
{
double value = Double.Parse(nowPhysioData.SPO2.ToString());
spo2 = 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());
pr = value <= 0 ? "--" : value.ToString();
}
if (nowPhysioData.Etco2 != null && nowPhysioData.Etco2.ToString() != string.Empty && nowPhysioData.Etco2.ToString() != "NaN" && nowPhysioData.Etco2.ToString() != "NULL")
{
double value = Double.Parse(nowPhysioData.Etco2.ToString());
etco2 = 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());
dia = 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());
sys = 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());
dia = 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());
sys = value <= 0 ? "" : value.ToString();
}
}
if (hr.Length > 0)
{
uc.HR = hr;
}
else
{
uc.HR = "--";
}
if (spo2.Length > 0)
{
uc.SpO2 = spo2;
}
else
{
uc.SpO2 = "--";
}
if (br.Length > 0)
{
uc.BR = br;
}
else
{
uc.BR = "--";
}
if (etco2.Length > 0)
{
uc.T = etco2;
}
else
{
uc.T = "--";
}
if (dia.Length > 0 && sys.Length > 0)
{
uc.SYS = dia + "/" + sys;
}
else
{
uc.SYS = "---/--";
}
}
///
/// 更新生命体征
///
///
///
private void timer1_Tick(object sender, EventArgs e)
{
RefreshPatientPhysiology();
}
}
}