2023-08-16 22:32:16 +08:00

642 lines
28 KiB
C#

using AIMSBLL;
using AIMSExtension;
using DCSoftDotfuscate;
using DevComponents.DotNetBar;
using DrawGraph;
using System;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Runtime.Remoting.Metadata.W3cXsd2001;
using System.Windows.Forms;
namespace AIMS.OperationAanesthesia
{
public partial class frmPhysioDataEdit : Form
{
#region
/// <summary>
/// 手术记录
/// </summary>
public OperationRecord _record;
#endregion
public System.Windows.Forms.Label selectTime;
public System.Windows.Forms.Label selectConfig;
public System.Windows.Forms.Panel paneltop;
public System.Windows.Forms.Panel paneltop2;
#region
public frmPhysioDataEdit(OperationRecord operationRecord)
{
InitializeComponent();
_record = operationRecord;
}
#endregion
#region
private void FormPrintBGYYNew_Load(object sender, EventArgs e)
{
dtpInsertBegin.Value = _record.InRoomTime.Value;
dtpInsertEnd.Value = _record.InRoomTime.Value.AddMinutes(240);
int rows1 = 2;
//循环加载CheckBox控件
foreach (PhysioDataConfig ade in _record.PhysioConfigList)
{
if (ade.IsDefalultShow == false) continue;
System.Windows.Forms.Label cb = new System.Windows.Forms.Label();
cb.Tag = ade;
cb.Text = ade.Name;
cb.Font = new System.Drawing.Font("微软雅黑", 8f);
cb.Width = 75;
cb.Tag = ade;
cb.Location = new Point(5, rows1 * (cb.Height + 5));
groupBox3.Controls.Add(cb);
System.Windows.Forms.TextBox text = new System.Windows.Forms.TextBox();
text.Tag = ade;
text.Font = new System.Drawing.Font("微软雅黑", 8f);
text.Width = 40;
text.Tag = ade;
text.Location = new Point(80, rows1 * (cb.Height + 5));
groupBox3.Controls.Add(text);
System.Windows.Forms.Label unit = new System.Windows.Forms.Label();
unit.Tag = ade;
unit.Text = ade.Unit;
unit.Font = new System.Drawing.Font("微软雅黑", 7f);
unit.Width = 50;
unit.Tag = ade;
unit.Location = new Point(120, rows1 * (unit.Height + 5));
groupBox3.Controls.Add(unit);
rows1++;
}
foreach (PhysioDataConfig ade in _record.PhysioAnesConfigList)
{
if (ade.IsDefalultShow == false) continue;
System.Windows.Forms.Label cb = new System.Windows.Forms.Label();
cb.Tag = ade;
cb.Text = ade.Name;
cb.Font = new System.Drawing.Font("微软雅黑", 8f);
cb.Width = 75;
cb.Tag = ade;
cb.Location = new Point(5, rows1 * (cb.Height + 5));
groupBox3.Controls.Add(cb);
System.Windows.Forms.TextBox text = new System.Windows.Forms.TextBox();
text.Tag = ade;
text.Font = new System.Drawing.Font("微软雅黑", 8f);
text.Width = 40;
text.Tag = ade;
text.Location = new Point(80, rows1 * (cb.Height + 5));
groupBox3.Controls.Add(text);
System.Windows.Forms.Label unit = new System.Windows.Forms.Label();
unit.Tag = ade;
unit.Text = ade.Unit;
unit.Font = new System.Drawing.Font("微软雅黑", 7f);
unit.Width = 50;
unit.Tag = ade;
unit.Location = new Point(120, rows1 * (unit.Height + 5));
groupBox3.Controls.Add(unit);
rows1++;
}
LoadPhysioData();
btnAdd.Focus();
}
private void LoadPhysioData()
{
System.Data.DataTable dtPhysioData = BOperationRecord.getByOpeIDIsPhysioData(_record.Id.Value);
panel2.Controls.Clear();
int rows = 2;
int Width = panel2.Width - (panel2.Width / (240 / 5) * 3);
//循环加载麻醉体征控件
for (int x = _record.PhysioAnesConfigList.Count - 1; x >= 0; x--)
{
PhysioDataConfig ade = _record.PhysioAnesConfigList[x];
if (ade.IsDefalultShow == false) continue;
List<PhysioData> list = new List<PhysioData>();
for (int i = 0; i < dtPhysioData.Rows.Count; i++)
{
if (dtPhysioData.Rows[i]["Name"].ToString().Equals(ade.Name.ToString()))
{
PhysioData pdTemp = PhysioDataConfig.newPhysioData(ade, _record.Id.Value, DateTime.Parse(dtPhysioData.Rows[i]["RecordTime"].ToString()), dtPhysioData.Rows[i]["Value"].ToString());
list.Add(pdTemp);
}
}
System.Windows.Forms.Panel panel = new System.Windows.Forms.Panel();
panel.Tag = ade;
panel.Dock = System.Windows.Forms.DockStyle.Top;
panel.Size = new System.Drawing.Size(Width, 30);
for (int i = (240 / ade.YAisx) - 1; i >= 0; i--)
{
DateTime SpanTime = _record.InRoomTime.Value.AddMinutes(i * ade.YAisx);
PhysioData pdNew = null;
foreach (var item in list)
{
if (item.RecordTime == SpanTime)
{
pdNew = item;
pdNew.config = ade;
break;
}
}
if (pdNew == null)
{
pdNew = PhysioDataConfig.newPhysioData(ade, _record.Id.Value, SpanTime, -1);
}
if (ade.ImgPath != null && ade.ImgPath != "")
{
System.Windows.Forms.ComboBox textNum = new System.Windows.Forms.ComboBox();
textNum.Items.AddRange(ade.ImgPath.Split('|'));
textNum.Name = pdNew.config.Id + "" + SpanTime.ToString("HHmm");
textNum.Tag = pdNew;
if (pdNew.ValueString != "-1")
textNum.Text = pdNew.ValueString.ToString();
textNum.Width = Width / (240 / ade.YAisx);
textNum.Dock = System.Windows.Forms.DockStyle.Left;
textNum.DropDownStyle = ComboBoxStyle.DropDownList;
textNum.Font = new System.Drawing.Font("微软雅黑", 7f);
textNum.Click += TextNum_Click;
textNum.Leave += ComeBoxNum_Leave;
panel.Controls.Add(textNum);
}
else
{
System.Windows.Forms.TextBox textNum = new System.Windows.Forms.TextBox();
textNum.Name = pdNew.config.Id + "" + SpanTime.ToString("HHmm");
textNum.Tag = pdNew;
if (pdNew.ValueString != "-1")
textNum.Text = pdNew.ValueString.ToString();
textNum.Width = Width / (240 / ade.YAisx);
textNum.Dock = System.Windows.Forms.DockStyle.Left;
textNum.Font = new System.Drawing.Font("微软雅黑", 7f);
textNum.Click += TextNum_Click;
textNum.Leave += TextNum_Leave;
textNum.DoubleClick += TextNum_DoubleClick;
panel.Controls.Add(textNum);
}
}
System.Windows.Forms.Label textName = new System.Windows.Forms.Label();
textName.Name = "txt" + ade.Name;
textName.Text = ade.Name;
textName.Font = new System.Drawing.Font("微软雅黑", 8f);
textName.Width = panel2.Width / (240 / 5) * 3;
textName.Dock = System.Windows.Forms.DockStyle.Left;
panel.Controls.Add(textName);
panel2.Controls.Add(panel);
rows++;
}
//循环加载数值生命体征
for (int x = _record.PhysioConfigList.Count - 1; x >= 0; x--)
{
PhysioDataConfig ade = _record.PhysioConfigList[x];
if (ade.IsDefalultShow == false) continue;
List<PhysioData> list = new List<PhysioData>();
for (int i = 0; i < dtPhysioData.Rows.Count; i++)
{
if (dtPhysioData.Rows[i]["Name"].ToString().Equals(ade.Name.ToString()))
{
PhysioData pdTemp = PhysioDataConfig.newPhysioData(ade, _record.Id.Value, DateTime.Parse(dtPhysioData.Rows[i]["RecordTime"].ToString()), dtPhysioData.Rows[i]["Value"].ToString());
list.Add(pdTemp);
}
}
System.Windows.Forms.Panel panel = new System.Windows.Forms.Panel();
panel.Tag = ade;
panel.Dock = System.Windows.Forms.DockStyle.Top;
panel.Size = new System.Drawing.Size(Width, 30);
for (int i = (240 / 5) - 1; i >= 0; i--)
{
DateTime SpanTime = _record.InRoomTime.Value.AddMinutes(i * 5);
System.Windows.Forms.TextBox textNum = new System.Windows.Forms.TextBox();
PhysioData pdNew = null;
foreach (var item in list)
{
if (item.RecordTime == SpanTime)
{
pdNew = item;
pdNew.config = ade;
textNum.Text = pdNew.ValueString.ToString();
break;
}
}
if (pdNew == null)
{
pdNew = PhysioDataConfig.newPhysioData(ade, _record.Id.Value, SpanTime, -1);
}
textNum.Name = pdNew.config.Id + "" + SpanTime.ToString("HHmm");
textNum.Tag = pdNew;
textNum.Width = Width / (240 / 5);
textNum.Font = new System.Drawing.Font("微软雅黑", 7f);
textNum.Dock = System.Windows.Forms.DockStyle.Left;
textNum.Click += TextNum_Click;
textNum.Leave += TextNum_Leave;
textNum.DoubleClick += TextNum_DoubleClick;
panel.Controls.Add(textNum);
}
System.Windows.Forms.Label textName = new System.Windows.Forms.Label();
textName.Name = "txt" + ade.Name;
textName.Text = ade.Name;
textName.Font = new System.Drawing.Font("微软雅黑", 8f);
textName.Width = panel2.Width / (240 / 5) * 3;
textName.Dock = System.Windows.Forms.DockStyle.Left;
panel.Controls.Add(textName);
panel2.Controls.Add(panel);
rows++;
}
paneltop = new System.Windows.Forms.Panel();
paneltop.Dock = System.Windows.Forms.DockStyle.Top;
paneltop.Location = new System.Drawing.Point(20, 0);
paneltop.Size = new System.Drawing.Size(792, 35);
for (int i = (240 / 5) - 1; i >= 0; i--)
{
System.Windows.Forms.Label textNum = new System.Windows.Forms.Label();
textNum.Name = "txt" + _record.InRoomTime.Value.AddMinutes(i * 5).ToString("yyyyMMddHHmm");
textNum.Text = _record.InRoomTime.Value.AddMinutes(i * 5).ToString("HH mm");
textNum.Font = new System.Drawing.Font("微软雅黑", 7f);
textNum.Width = Width / (240 / 5);
textNum.Dock = System.Windows.Forms.DockStyle.Left;
textNum.TextAlign = ContentAlignment.MiddleCenter;
paneltop.Controls.Add(textNum);
}
System.Windows.Forms.Label textTipName2 = new System.Windows.Forms.Label();
textTipName2.Text = "时间 ";
textTipName2.Font = new System.Drawing.Font("微软雅黑", 9f, FontStyle.Bold);
textTipName2.Width = panel2.Width / (240 / 5) * 3 / 2;
textTipName2.Dock = System.Windows.Forms.DockStyle.Left;
textTipName2.TextAlign = ContentAlignment.MiddleRight;
paneltop.Controls.Add(textTipName2);
System.Windows.Forms.Label textTipName = new System.Windows.Forms.Label();
textTipName.Text = " 名称";
textTipName.Font = new System.Drawing.Font("微软雅黑", 9f, FontStyle.Bold);
textTipName.Width = panel2.Width / (240 / 5) * 3 / 2;
textTipName.Dock = System.Windows.Forms.DockStyle.Left;
textTipName.TextAlign = ContentAlignment.MiddleLeft;
paneltop.Controls.Add(textTipName);
panel2.Controls.Add(paneltop);
}
private void LoadPhysioData(List<PhysioDataConfig> Lists)
{
System.Data.DataTable dtPhysioData = BOperationRecord.getByOpeIDIsPhysioData(_record.Id.Value);
int Width = panel2.Width - (panel2.Width / (240 / 5) * 3);
foreach (Control pan in panel2.Controls)
{
if (pan is Panel)
{
System.Windows.Forms.Panel panel = pan as Panel;
PhysioDataConfig ade = panel.Tag as PhysioDataConfig;
if (ade != null && IsInPhysioConfigList(ade, Lists))
{
if (ade.ConfigType == "麻醉体征")
{
List<PhysioData> list = new List<PhysioData>();
for (int i = 0; i < dtPhysioData.Rows.Count; i++)
{
if (dtPhysioData.Rows[i]["Name"].ToString().Equals(ade.Name.ToString()))
{
PhysioData pdTemp = PhysioDataConfig.newPhysioData(ade, _record.Id.Value, DateTime.Parse(dtPhysioData.Rows[i]["RecordTime"].ToString()), dtPhysioData.Rows[i]["Value"].ToString());
list.Add(pdTemp);
}
}
foreach (Control txt in panel.Controls)
{
if (ade.ImgPath != null && ade.ImgPath != "")
{
System.Windows.Forms.ComboBox textNum = txt as ComboBox;
PhysioData pdNew = textNum.Tag as PhysioData;
DateTime SpanTime = pdNew.RecordTime;
foreach (var item in list)
{
if (item.RecordTime == SpanTime)
{
pdNew = item;
pdNew.config = ade;
if (pdNew.ValueString != "-1")
textNum.Text = pdNew.ValueString.ToString();
break;
}
}
}
else
{
System.Windows.Forms.TextBox textNum = txt as TextBox;
PhysioData pdNew = textNum.Tag as PhysioData;
DateTime SpanTime = pdNew.RecordTime;
foreach (var item in list)
{
if (item.RecordTime == SpanTime)
{
pdNew = item;
pdNew.config = ade;
if (pdNew.ValueString != "-1")
textNum.Text = pdNew.ValueString.ToString();
break;
}
}
}
}
}
else
{
List<PhysioData> list = new List<PhysioData>();
for (int i = 0; i < dtPhysioData.Rows.Count; i++)
{
if (dtPhysioData.Rows[i]["Name"].ToString().Equals(ade.Name.ToString()))
{
PhysioData pdTemp = PhysioDataConfig.newPhysioData(ade, _record.Id.Value, DateTime.Parse(dtPhysioData.Rows[i]["RecordTime"].ToString()), dtPhysioData.Rows[i]["Value"].ToString());
list.Add(pdTemp);
}
}
foreach (Control txt in panel.Controls)
{
if (txt is TextBox)
{
System.Windows.Forms.TextBox textNum = txt as TextBox;
PhysioData pdNew = textNum.Tag as PhysioData;
DateTime SpanTime = pdNew.RecordTime;
foreach (var item in list)
{
if (item.RecordTime == SpanTime)
{
pdNew = item;
pdNew.config = ade;
textNum.Text = pdNew.ValueString.ToString();
break;
}
}
}
}
}
}
}
}
}
public bool IsInPhysioConfigList(PhysioDataConfig ade, List<PhysioDataConfig> Lists)
{
bool isInPhysioConfigList = false;
foreach (var item in Lists)
{
if (item.Id == ade.Id)
{
isInPhysioConfigList = true;
}
}
return isInPhysioConfigList;
}
private void TextNum_Leave(object sender, EventArgs e)
{
TextBox txtNum = sender as TextBox;
PhysioData pdNew = txtNum.Tag as PhysioData;
if (txtNum.Text.Trim() == "" && pdNew.Value > -1)
{
if (pdNew.config.ConfigType == "麻醉体征")
pdNew.config.EditDelItem(pdNew);
else
pdNew.config.DelItem(pdNew);
pdNew.Value = -1;
txtNum.Tag = pdNew;
TempValue = "";
}
else if (txtNum.Text.Trim() != "" && pdNew.Value > -1)
{
if (pdNew.Value.ToString() != txtNum.Text)
{
string value = checkValue(txtNum, pdNew.config);
if (value != "")
{
pdNew.ValueString = value;
if (pdNew.config.ConfigType == "麻醉体征")
pdNew.config.EditModifyItem(pdNew, pdNew);
else
pdNew.config.ModifyItem(pdNew, pdNew);
txtNum.Tag = pdNew;
TempValue = txtNum.Text.Trim();
}
}
}
else if (txtNum.Text.Trim() != "")
{
string value = checkValue(txtNum, pdNew.config);
if (value != "")
{
pdNew.ValueString = value;
if (pdNew.config.ConfigType == "麻醉体征")
pdNew.config.EditAddItem(pdNew);
else
pdNew.config.AddPointItem(pdNew);
txtNum.Tag = pdNew;
TempValue = txtNum.Text.Trim();
}
}
}
private void ComeBoxNum_Leave(object sender, EventArgs e)
{
ComboBox txtNum = sender as ComboBox;
PhysioData pdNew = txtNum.Tag as PhysioData;
if (txtNum.Text.Trim() == "" && pdNew.Value > -1)
{
pdNew.config.EditDelItem(pdNew);
pdNew.Value = -1;
txtNum.Tag = pdNew;
TempValue = "";
}
else if (txtNum.Text.Trim() != "" && pdNew.Value > -1)
{
if (pdNew.Value.ToString() != txtNum.Text)
{
pdNew.ValueString = txtNum.Text.Trim();
pdNew.config.EditModifyItem(pdNew, pdNew);
txtNum.Tag = pdNew;
TempValue = txtNum.Text.Trim();
}
}
else if (txtNum.Text.Trim() != "")
{
pdNew.ValueString = txtNum.Text.Trim();
pdNew.config.EditAddItem(pdNew);
txtNum.Tag = pdNew;
TempValue = txtNum.Text.Trim();
}
}
public string checkValue(TextBox txtNum, PhysioDataConfig config)
{
string Result = "";
double value = -1;
if (config.ConfigType == "生命体征" || config.ShowText == true)
{
if (!double.TryParse(txtNum.Text.ToString(), out value))
{
MessageBox.Show("请填写正确数值!", "系统提示");
txtNum.Focus();
}
else
{
if (value < config.WarningLowLimit || value > config.WarningHighLimit)
{
//DialogResult dr = MessageBox.Show("数值:" + value + " 超出 " + config.Name + "[" + config.WarningLowLimit + "-" + config.WarningHighLimit + "] 报警范围! ", "系统提示");//, MessageBoxButtons.YesNo); //if (dr != DialogResult.Yes) { txtNum.Focus(); }
if (value < config.WarningLowLimit)
{
value = config.WarningLowLimit;
}
if (value > config.WarningHighLimit)
{
value = config.WarningHighLimit;
}
}
}
if (value > 0) Result = value.ToString();
}
else
{
Result = txtNum.Text.ToString();
}
return Result;
}
public bool checkValue2(TextBox txtNum, PhysioDataConfig config)
{
bool Result = true;
double value = -1;
if (config.ConfigType == "生命体征" || config.ShowText == true)
{
if (!double.TryParse(txtNum.Text.ToString(), out value))
{
MessageBox.Show("请填写正确数值!", "系统提示");
txtNum.Focus();
Result = false;
}
}
return Result;
}
private void TextNum_DoubleClick(object sender, EventArgs e)
{
Control txtNum = sender as Control;
if (TempValue != "")
{
txtNum.Text = TempValue;
}
}
public string TempValue;
private void TextNum_Click(object sender, EventArgs e)
{
Control txtNum = sender as Control;
PhysioData pdNew = txtNum.Tag as PhysioData;
if (selectConfig != null)
{
selectConfig.ForeColor = System.Drawing.Color.Black;
}
selectConfig = txtNum.Parent.Controls.Find("txt" + pdNew.config.Name, true)[0] as System.Windows.Forms.Label;
selectConfig.ForeColor = System.Drawing.Color.Blue;
if (selectTime != null)
{
selectTime.ForeColor = System.Drawing.Color.Black;
}
selectTime = paneltop.Controls.Find("txt" + pdNew.RecordTime.ToString("yyyyMMddHHmm"), true)[0] as System.Windows.Forms.Label;
selectTime.ForeColor = System.Drawing.Color.Blue;
}
#endregion
private void frmPhysioDataEdit_FormClosed(object sender, FormClosedEventArgs e)
{
if (selectConfig != null)
selectConfig.Focus();
}
private void btnAdd_Click(object sender, EventArgs e)
{
try
{
if (dtpInsertEnd.Value < dtpInsertBegin.Value) return;
if (dtpInsertBegin.Value < _record.PageBegin) return;
bool RESULT = true;
foreach (var item in groupBox3.Controls)
{
if (item is TextBox)
{
TextBox txtNum = (item as TextBox);
PhysioDataConfig ade = txtNum.Tag as PhysioDataConfig;
if (txtNum.Text.Trim() != "")
{
bool value = checkValue2(txtNum, ade);
if (value == false) RESULT = false;
}
}
}
if (RESULT == false) return;
List<PhysioDataConfig> ades = new List<PhysioDataConfig>();
List<PhysioData> list = new List<PhysioData>();
foreach (var item in groupBox3.Controls)
{
if (item is TextBox)
{
TextBox txtNum = (item as TextBox);
PhysioDataConfig ade = txtNum.Tag as PhysioDataConfig;
if (txtNum.Text.Trim() != "")
{
string value = checkValue(txtNum, ade);
int spanNun = ade.ConfigType == "麻醉体征" ? ade.YAisx : 5;
for (int i = 0; i < (240 / spanNun); i++)
{
DateTime SpanTime = _record.InRoomTime.Value.AddMinutes(i * spanNun);
if (SpanTime >= dtpInsertBegin.Value && SpanTime <= dtpInsertEnd.Value)
{
PhysioData pdNew = PhysioDataConfig.newPhysioData(ade, _record.Id.Value, SpanTime, value);
if (value != "")
{
pdNew.ValueString = value;
list.Add(pdNew);
}
}
}
ades.Add(ade);
}
}
}
if (list.Count > 0)
{
PhysioDataService.AddPhysioDatas(list);
LoadPhysioData(ades);
btnClear_Click(null, null);
MessageBox.Show("添加成功!", "系统提示");
}
}
catch (Exception ex)
{
PublicMethod.WriteLog(ex);
}
}
private void btnClear_Click(object sender, EventArgs e)
{
foreach (var item in groupBox3.Controls)
{
if (item is TextBox)
{
(item as TextBox).Text = "";
}
}
}
}
}