AIMS/AIMS/OremrUserControl/ucPlanOperationRoomCard.cs
2022-11-03 23:13:29 +08:00

447 lines
18 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using AIMSModel;
using DevComponents.DotNetBar.SuperGrid;
using AIMSExtension;
using AIMSBLL;
using System.Drawing.Drawing2D;
namespace AIMS.OremrUserControl
{
public partial class ucPlanOperationRoomCard : UserControl
{
public DateTime PlanOperationTime;
public int OperationRoomId;
public string OperationRoomName;
public OperationRoom operationRoom;
public List<OperationRoom> operationRooms;
public SuperGridControl dgvDetail;
//手术间对应患者列表
public DataTable pDataTable;
public ucPlanOperationRoomCard()
{
InitializeComponent();
}
//private void SetWindowRegion()
//{
// GraphicsPath FormPath = new GraphicsPath();
// Rectangle rect = new Rectangle(0, 4, this.Width, this.Height - 4);
// FormPath = GetRoundedRectPath(rect, 10);
// this.Region = new Region(FormPath);
//}
//private GraphicsPath GetRoundedRectPath(Rectangle rect, int radius)
//{
// int diameter = radius;
// Rectangle arcRect = new Rectangle(rect.Location, new Size(diameter, diameter));
// GraphicsPath path = new GraphicsPath();
// //左上角
// path.AddArc(arcRect, 180, 90);
// //右上角
// arcRect.X = rect.Right - diameter;
// path.AddArc(arcRect, 270, 90);
// //右下角
// arcRect.Y = rect.Bottom - diameter;
// path.AddArc(arcRect, 0, 90);
// //左下角
// arcRect.X = rect.Left;
// path.AddArc(arcRect, 90, 90);
// path.CloseFigure();
// return path;
//}
//protected override void OnResize(System.EventArgs e)
//{
// this.Region = null;
// SetWindowRegion();
//}
public ucPlanOperationRoomCard(OperationRoom _operationRoom, List<OperationRoom> _operationRooms)
{
InitializeComponent();
operationRooms = _operationRooms;
operationRoom = _operationRoom;
this.labelName.Text = _operationRoom.Name;
this.OperationRoomId = _operationRoom.Id.Value;
}
public void RaiseDataSavedEvent()
{
RoomCardManage.OnDataSaved.Invoke(this, operationRoom, false, 0);
}
public void RaiseDataSavedEvent2(OperationRoom opeRoom)
{
RoomCardManage.OnDataSaved.Invoke(this, opeRoom, false, 0);
}
public void UcPlanOperationRoomCard_Click(object sender, EventArgs e)
{
ucPlanOperationRoomCard operationRoomClicked = GetParentRoomCards(sender as Control);
ShowDetial(operationRoomClicked);
}
public void ShowDetial(ucPlanOperationRoomCard operationRoomClicked)
{
if (operationRoomClicked != null)
{
if (operationRoomClicked != RoomCardManage.lastSelectOpeRoom)
{
if (RoomCardManage.lastSelectOpeRoom != null)
RoomCardManage.lastSelectOpeRoom.panelExMain.Style.BackColor1.Color = System.Drawing.SystemColors.Control;
operationRoomClicked.panelExMain.Style.BackColor1.Color = Color.Khaki;
RoomCardManage.lastSelectOpeRoom = operationRoomClicked;
RoomCardManage.IsFillAll = true;
}
if (RoomCardManage.SelectIds != null && RoomCardManage.SelectDgv.Name == "dgvApplyOrDoctor")
{
if (RoomCardManage.SelectIds.Count > 0)
{
RoomCardManage.CallObjectEvent(RoomCardManage.SelectDgv, "OnCellDoubleClick", new DataGridViewCellEventArgs(1, RoomCardManage.SelectDgv.CurrentRow.Index));
}
else
FillRoomDetail();
}
else
FillRoomDetail();
}
else
{
if (RoomCardManage.lastSelectOpeRoom != null)
{
FillRoomDetail();
}
}
}
public ucPlanOperationRoomCard GetParentRoomCards(Control control)
{
if (control.Parent is ucPlanOperationRoomCard)
{
return control.Parent as ucPlanOperationRoomCard;
}
else
{
return GetParentRoomCards(control.Parent);
}
}
//撤销排程
private void tsDel_Click(object sender, EventArgs e)
{
if (pDataTable.Rows.Count <= 0) return;
//AnesthesiaDoctor = null, TourNurse = null, InstrumentNurse = null,
string DoctorNuresName = " PlanOperationTime = null,OperationRoomId = null, PlanOrder=null , State = 2 ";
if (BOperationApply.SaveDoctorByRommTime(DoctorNuresName, PlanOperationTime, operationRoom.Id.Value) > 0)
{
foreach (DataRow item in pDataTable.Rows)
{
string OperationApplyId = item["ApplyId"].ToString();
BApplyPersonDuty.Delete(" PersonDutyId in(5,6,7,8,9,10) and OperationApplyId=" + OperationApplyId, null);
}
dgvDetail.PrimaryGrid.Rows.Clear();
lblNurse2.Text = "巡回护士";
lblNurse2.ForeColor = Color.Gray;
lblNurse.Text = "洗手护士";
lblNurse.ForeColor = Color.Gray;
lblAnesDoctors.Text = "麻醉医生";
lblAnesDoctors.ForeColor = Color.Gray;
lblOpeDoctors.Text = "手术医生";
lblOpeDoctors.ForeColor = Color.Gray;
RaiseDataSavedEvent();
MessageBox.Show(operationRoom.Name + "全部撤销成功!");
}
}
private void tsDelAnes_Click(object sender, EventArgs e)
{
if (pDataTable.Rows.Count <= 0) return;
foreach (DataRow item in pDataTable.Rows)
{
string OperationApplyId = item["ApplyId"].ToString();
BApplyPersonDuty.Delete(" PersonDutyId in(5) and OperationApplyId=" + OperationApplyId, null);
}
lblAnesDoctors.Text = "麻醉医生";
lblAnesDoctors.ForeColor = Color.Gray;
RoomCardManage.IsFillAll = true;
RaiseDataSavedEvent();
MessageBox.Show("全部撤销麻醉成功!");
}
private void tsDelNs1_Click(object sender, EventArgs e)
{
if (pDataTable.Rows.Count <= 0) return;
foreach (DataRow item in pDataTable.Rows)
{
string OperationApplyId = item["ApplyId"].ToString();
BApplyPersonDuty.Delete(" PersonDutyId in(6) and OperationApplyId=" + OperationApplyId, null);
}
lblNurse.Text = "洗手护士";
lblNurse.ForeColor = Color.Gray;
RoomCardManage.IsFillAll = true;
RaiseDataSavedEvent();
MessageBox.Show("全部撤销洗手护士成功!");
}
private void tsDelNs2_Click(object sender, EventArgs e)
{
if (pDataTable.Rows.Count <= 0) return;
foreach (DataRow item in pDataTable.Rows)
{
string OperationApplyId = item["ApplyId"].ToString();
BApplyPersonDuty.Delete(" PersonDutyId in(7) and OperationApplyId=" + OperationApplyId, null);
}
lblNurse2.Text = "巡回护士";
lblNurse2.ForeColor = Color.Gray;
RoomCardManage.IsFillAll = true;
RaiseDataSavedEvent();
MessageBox.Show("全部撤销巡回护士成功!");
}
public void LoadInfo(DataTable _dt)
{
pDataTable = _dt;
labTabindex.Text = pDataTable.Rows.Count.ToString();
DrawRoomText();
if (_dt.Rows.Count == 0)
{
lblAnesDoctors.ForeColor = Color.Black;
lblNurse.ForeColor = Color.Black;
lblOpeDoctors.ForeColor = Color.Black;
labelName.ForeColor = Color.Black;
lblNurse2.ForeColor = Color.Black;
labTabindex.ForeColor = Color.Black;
}
}
public void FillRoomDetail()
{
dgvDetail.PrimaryGrid.Rows.Clear();
foreach (DataRow item in pDataTable.Rows)
{
dgvDetail.PrimaryGrid.Rows.Add(createGridRow(item));
}
}
private GridRow createGridRow(DataRow item)
{
string sOperationDoctor = item["OperationDoctor"].ToString();
string sAnesthesiaDoctor = item["AnesthesiaDoctor"].ToString();
string sInstrumentNurse = item["InstrumentNurse"].ToString();
string sTourNurse = item["TourNurse"].ToString();
GridRow grNew = new GridRow(item["ApplyId"].ToString(), item["PlanOrder"].ToString(), string.Format("{0}{1}", item["PatientName"].ToString(), ""), item["MdrecNo"].ToString(), item["ApplyDepName"].ToString() + "-" + item["SickBed"].ToString(), sOperationDoctor, item["ApplyOperationInfoName"].ToString(), DateTime.Parse(item["OrderOperationTime"].ToString()).ToString("HH:mm"), sAnesthesiaDoctor, sInstrumentNurse, sTourNurse, item["OperationRemark"].ToString(), "Χ");
if (item["Contagion"].ToString() != "" && item["Contagion"].ToString() != "无" && item["Contagion"].ToString() != "未报")
{
grNew.CellStyles.Default.Background.Color1 = Color.Purple;
}
else if (item["OperationType"].ToString() == "日间")
{
grNew.CellStyles.Default.Background.Color1 = Color.DeepSkyBlue;
}
else if (item["OperationType"].ToString() == "急诊")
{
grNew.CellStyles.Default.Background.Color1 = Color.Red;
}
else
{
grNew.CellStyles.Default.Background.Color1 = Color.White;
}
return grNew;
}
/// <summary>
/// 绘制手术间医生信息
/// </summary>
public void DrawRoomText()
{
List<string> lstOpeDoctors = new List<string>();
List<string> lstAnseDoctors = new List<string>();
List<string> lstNurse = new List<string>();
List<string> lstNurse2 = new List<string>();
List<string> lstInfos = new List<string>();
bool isPassed = false;
lblNurse2.Text = "巡回护士";
lblNurse2.ForeColor = Color.Gray;
lblNurse.Text = "洗手护士";
lblNurse.ForeColor = Color.Gray;
lblAnesDoctors.Text = "麻醉医生";
lblAnesDoctors.ForeColor = Color.Gray;
lblOpeDoctors.Text = "手术医生";
lblOpeDoctors.ForeColor = Color.Gray;
foreach (DataRow item in pDataTable.Rows)
{
string sOperationDoctor = item["OperationDoctor"].ToString();
if (!string.IsNullOrWhiteSpace(sOperationDoctor))
{
sOperationDoctor.Split(',').ToList().ForEach(d =>
{
if (!lstOpeDoctors.Contains(d))
lstOpeDoctors.Add(d);
});
}
string sAnesthesiaDoctor = item["AnesthesiaDoctor"].ToString();
if (!string.IsNullOrWhiteSpace(sAnesthesiaDoctor))
{
sAnesthesiaDoctor.Split(',').ToList().ForEach(d =>
{
if (!lstAnseDoctors.Contains(d))
lstAnseDoctors.Add(d);
});
}
string sInstrumentNurse = item["InstrumentNurse"].ToString();
if (!string.IsNullOrWhiteSpace(sInstrumentNurse))
{
sInstrumentNurse.Split(',').ToList().ForEach(d =>
{
if (!lstNurse.Contains(d))
lstNurse.Add(d);
});
}
string sTourNurse = item["TourNurse"].ToString();
if (!string.IsNullOrWhiteSpace(sTourNurse))
{
sTourNurse.Split(',').ToList().ForEach(d =>
{
if (!lstNurse2.Contains(d))
lstNurse2.Add(d);
});
}
if (lstOpeDoctors.Count > 0)
{
lblOpeDoctors.Text = "";
lstOpeDoctors.ForEach(s =>
{
lblOpeDoctors.Text += s + ",";
});
lblOpeDoctors.Text = lblOpeDoctors.Text.TrimEnd(',');
if (isPassed == true)
lblOpeDoctors.ForeColor = Color.Red;
else
lblOpeDoctors.ForeColor = Color.Blue;
}
else
{
lblOpeDoctors.Text = "手术医生";
lblOpeDoctors.ForeColor = Color.Gray;
}
if (lstAnseDoctors.Count > 0)
{
lblAnesDoctors.Text = "";
lstAnseDoctors.ForEach(s =>
{
lblAnesDoctors.Text += s + ",";
});
lblAnesDoctors.Text = lblAnesDoctors.Text.TrimEnd(',');
if (isPassed == true)
lblAnesDoctors.ForeColor = Color.Red;
else
lblAnesDoctors.ForeColor = Color.Blue;
}
else
{
lblAnesDoctors.Text = "麻醉医生";
lblAnesDoctors.ForeColor = Color.Gray;
}
if (lstNurse.Count > 0)
{
lblNurse.Text = "";
lstNurse.ForEach(s =>
{
lblNurse.Text += s + ",";
});
lblNurse.Text = lblNurse.Text.TrimEnd(',');
if (isPassed == true)
lblNurse.ForeColor = Color.Red;
else
lblNurse.ForeColor = Color.Blue;
}
else
{
lblNurse.Text = "洗手护士";
lblNurse.ForeColor = Color.Gray;
}
if (lstNurse2.Count > 0)
{
lblNurse2.Text = "";
lstNurse2.ForEach(s =>
{
lblNurse2.Text += s + ",";
});
lblNurse2.Text = lblNurse2.Text.TrimEnd(',');
if (isPassed == true)
lblNurse2.ForeColor = Color.Red;
else
lblNurse2.ForeColor = Color.Blue;
}
else
{
lblNurse2.Text = "巡回护士";
lblNurse2.ForeColor = Color.Gray;
}
if (int.Parse(item["StateId"].ToString()) >= 4)
{
lblAnesDoctors.ForeColor = Color.Red;
lblNurse.ForeColor = Color.Red;
lblOpeDoctors.ForeColor = Color.Red;
labelName.ForeColor = Color.Red;
lblNurse2.ForeColor = Color.Red;
labTabindex.ForeColor = Color.Red;
}
else
{
lblAnesDoctors.ForeColor = Color.Black;
lblNurse.ForeColor = Color.Black;
lblOpeDoctors.ForeColor = Color.Black;
labelName.ForeColor = Color.Black;
lblNurse2.ForeColor = Color.Black;
labTabindex.ForeColor = Color.Black;
}
}
}
private void ucPlanOperationRoomCard_Load(object sender, EventArgs e)
{
foreach (OperationRoom opeRoom in operationRooms)
{
if (opeRoom.Id == operationRoom.Id) continue;
#region
ToolStripItem toolStripItem1 = new ToolStripMenuItem(opeRoom.Name);
toolStripItem1.Tag = opeRoom;
toolStripItem1.Click += ToolStripItem1_Click;
tsUpdateRoom.DropDownItems.Add(toolStripItem1);
#endregion
}
}
private void ToolStripItem1_Click(object sender, EventArgs e)
{
if (pDataTable.Rows.Count <= 0) return;
OperationRoom opeRoom = (sender as ToolStripItem).Tag as OperationRoom;
string PlanOperationRoom = "OperationRoomId = " + opeRoom.Id;
if (BOperationApply.SaveDoctorByRommTime(PlanOperationRoom, PlanOperationTime, operationRoom.Id.Value) > 0)
{
dgvDetail.PrimaryGrid.Rows.Clear();
lblNurse2.Text = "巡回护士";
lblNurse2.ForeColor = Color.Gray;
lblNurse.Text = "洗手护士";
lblNurse.ForeColor = Color.Gray;
lblAnesDoctors.Text = "麻醉医生";
lblAnesDoctors.ForeColor = Color.Gray;
lblOpeDoctors.Text = "手术医生";
lblOpeDoctors.ForeColor = Color.Gray;
RaiseDataSavedEvent();
RaiseDataSavedEvent2(opeRoom);
MessageBox.Show(operationRoom.Name + "-->" + opeRoom.Name + "换手术间成功!");
}
}
}
}