AIMS/AIMSControls/OperationFront/frmPrintingArrangemen.cs
2023-08-16 22:32:16 +08:00

368 lines
17 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 AIMS.OremrUserControl;
using AIMS.PublicUI;
using AIMSBLL;
using AIMSModel;
using DataDictionary;
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;
namespace AIMS.OperationFront.UI
{
public partial class frmPrintingArrangemen : Form
{
/// <summary>
/// 病历号
/// </summary>
public string patCaseNO = "";
/// <summary>
/// 患者姓名
/// </summary>
public string patname = "";
public DateTime beginTime;
public DateTime endTime;
public DataTable dt;
public List<string> ArrangePrinting;
private bool IsSelectAll = false;
public ToolTip toolTip1 = new System.Windows.Forms.ToolTip();
public frmPrintingArrangemen()
{
InitializeComponent();
this.toolTip1.AutomaticDelay = 0;
this.toolTip1.OwnerDraw = true;
this.toolTip1.ShowAlways = true;
this.toolTip1.Draw += new System.Windows.Forms.DrawToolTipEventHandler(this.toolTip1_Draw);
}
private void frmPrintingArrangemen_Load(object sender, EventArgs e)
{
Initial();
dtpTime.Value = beginTime;
cboOperationRoom.SelectedIndexChanged += new EventHandler(cboOperationRoom_SelectedIndexChanged);
flowLayoutPanel1.Focus();
}
private void cboOperationRoom_SelectedIndexChanged(object sender, EventArgs e)
{
if (cboOperationRoom.SelectedIndex > 0)
{
dt = BOperationApply.SelectPlanedOpeByRoom("OrderOperationTime>='" + dtpTime.Value.ToString("yyyy-MM-dd 00:00:00") + "' and OrderOperationTime<='" + dtpTime.Value.ToString("yyyy-MM-dd 23:59:59") + "' and OperationRoom = '" + cboOperationRoom.Text + "' Order By OperationRoomID ,PlanOrder");
}
else if (cboOperationRoom.SelectedIndex <= 0)
{
dt = BOperationApply.SelectPlanedOpeByRoom("OrderOperationTime>='" + dtpTime.Value.ToString("yyyy-MM-dd 00:00:00") + "' and OrderOperationTime<='" + dtpTime.Value.ToString("yyyy-MM-dd 23:59:59") + "' Order By OperationRoomID ,PlanOrder");
}
if (CboOperationSite.Visible == true && CboOperationSite.SelectedIndex > 0)
{
dt = AIMSExtension.PublicMethod.GetNewDataTable(dt, " OperationSite ='" + CboOperationSite.SelectedValue + "' ", "");
}
if (dt == null) return;
FullDgv(dt);
dgvApplyOrDoctor.ClearSelection();
}
private void ReportData()
{
for (int i = 0; i < dt.Rows.Count; i++)
{
//UCArrangePrinting UCap = new UCArrangePrinting();
UCSurgicalNotice UCap = new UCSurgicalNotice();
UCap.panel1.Height = 430;
UCap.panel10.Height = 430;//475
UCap.panel4.Location = new System.Drawing.Point(4, 515);
try
{
UCap.labHospitalName.Text = "手术通知单";
UCap.labName.Text = dt.Rows[i]["PatientName"].ToString();
UCap.labAge.Text = dt.Rows[i]["Age"].ToString();
UCap.labSex.Text = dt.Rows[i]["Sex"].ToString();
UCap.labOperationRoom.Text = dt.Rows[i]["OperationRoom"].ToString();
UCap.labDepartments.Text = dt.Rows[i]["ApplyDepName"].ToString();
UCap.labBed.Text = dt.Rows[i]["SickBed"].ToString();
UCap.labDate.Text = dt.Rows[i]["OrderOperationTime"].ToString() ;
UCap.labDiagnosis.Text = dt.Rows[i]["ApplyDiagnoseInfoName"].ToString();
UCap.labOperation.Text = dt.Rows[i]["ApplyOperationInfoName"].ToString();
UCap.labHospitalNo.Text = dt.Rows[i]["MdrecNo"].ToString();
UCap.labDoctor.Text = dt.Rows[i]["OperationDoctor"].ToString();
UCap.labAnaesthesiaMethod.Text = dt.Rows[i]["AnaesthesiaMethodName"].ToString();
UCap.labAssistant1.Text = dt.Rows[i]["Assistant1"].ToString();
UCap.labAssistant2.Text = dt.Rows[i]["Assistant2"].ToString();
UCap.labAnesthesiaDoctor.Text = dt.Rows[i]["AnesthesiaDoctor"].ToString();
if (dt.Rows[i]["InstrumentNurse"].ToString() != "")
{
UCap.labInstrument.Text = dt.Rows[i]["InstrumentNurse"].ToString();
}
else
{
UCap.labInstrument.Text = "";
}
if (dt.Rows[i]["TourNurse"].ToString() != "")
{
UCap.labTourNurse.Text = dt.Rows[i]["TourNurse"].ToString();
}
else
{
UCap.labTourNurse.Text = "";
}
UCap.labRemark.Text = dt.Rows[i]["Remark"].ToString();
if (dt.Rows[i]["OperationType"].ToString() == "急诊")
{
UCap.BindWaterMark2("急", 600, 20, Color.Red);
}
if (dt.Rows[i]["Contagion"].ToString() != "" && dt.Rows[i]["Contagion"].ToString() != "无" && dt.Rows[i]["Contagion"].ToString() != "未报")
{
UCap.BindWaterMark2(dt.Rows[i]["Contagion"].ToString() , 650, 20, Color.Purple);
}
UCap.lblOpeLevel.Text = dt.Rows[i]["OperationLevelName"].ToString();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
Application.DoEvents();
flowLayoutPanel1.Controls.Add(UCap);
}
//int pcheight = new UCSurgicalNotice().Height;
//flowLayoutPanel1.Height = dt.Rows.Count * pcheight + 30;
//this.Height = flowLayoutPanel1.Height + panel1.Height;
}
private void tsbNewOperationApply_Click(object sender, EventArgs e)
{
flowLayoutPanel1.AutoScroll = false;
int pcheight = new UCSurgicalNotice().Height;
flowLayoutPanel1.Height = dt.Rows.Count * pcheight + 30;
this.Height = flowLayoutPanel1.Height + panel1.Height;
currentY = 0;
printDocument1.Print();
flowLayoutPanel1.AutoScroll = true;
}
int currentY = 0; //打印panel2内容时的当前Y坐标X坐标都是从0开始
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
//待打印区域的宽高
int awidth = flowLayoutPanel1.Width;
int aheight = flowLayoutPanel1.Height;
System.Drawing.Printing.PrintDocument pd = sender as System.Drawing.Printing.PrintDocument;
//页宽高Bounds自动会考虑到打印页是横向还是纵向打印
int pheight = 1140;
if (currentY < aheight)
{
//整个待打印区域
Bitmap bmp = new Bitmap(awidth, aheight);
flowLayoutPanel1.DrawToBitmap(bmp, new Rectangle(0, 0, bmp.Width, bmp.Height));
//打印指定位图的指定区域可根据实际情况调用Graphics的不同重载方法DrawImage
e.Graphics.DrawImage(bmp,
0, //水平居中
0,
new RectangleF(0, currentY, bmp.Width, bmp.Height), //打印指定区域
GraphicsUnit.Pixel);
//将当前打印内容的Y坐标设置为打印页高如有多页每次都会从当前(0,currentY)开始打印
currentY += pheight;
//当整个待打印区域超出了打印页,将表示有多页
if (aheight - currentY > 0)
{
e.HasMorePages = true;
}
}
else
{
e.HasMorePages = false;
}
}
private void dgvApplyOrDoctor_MouseUp(object sender, MouseEventArgs e)
{
if (dgvApplyOrDoctor.SelectedRows == null)
return;
foreach (DataGridViewRow item in dgvApplyOrDoctor.SelectedRows)
{
DataGridViewCell senderdgvr = item.Cells[0];
senderdgvr.Value = (senderdgvr.EditedFormattedValue.ToString() == "True") ? false : true;
}
List<int> SelectIds = GetSelectIds();
if (SelectIds.Count > 0)
{
string Ids = string.Join(",", SelectIds);
dt = null;
flowLayoutPanel1.Controls.Clear();
dt = BOperationApply.SelectPlanedOpeByRoom(" [ApplyId] in (" + Ids + ") ");
ReportData();
}
else
{
cboOperationRoom_SelectedIndexChanged(null, null);
}
}
private void dgvApplyOrDoctor_CellMouseEnter(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex < 0 || e.ColumnIndex < 0)
{
return;
}
else
{
Point mousePos = PointToClient(MousePosition);
int ei = e.RowIndex;
string remark = "";
if (dgvApplyOrDoctor["Operation", e.RowIndex].Value.ToString() != "")
remark = " 备注:" + dgvApplyOrDoctor["Remark", e.RowIndex].Value;
this.toolTip1.Hide(this.dgvApplyOrDoctor);
this.toolTip1.Show(("科室:" + dgvApplyOrDoctor["DepartmentId", e.RowIndex].Value + " 医师:" + dgvApplyOrDoctor["OperationDoctor", e.RowIndex].Value + " 预约时间:" + dgvApplyOrDoctor["OrderOperationTime", e.RowIndex].Value + " 姓名:" + dgvApplyOrDoctor["PatientName", e.RowIndex].Value + " 住院号:" + dgvApplyOrDoctor["InHospitalNo", e.RowIndex].Value + " 拟施麻醉:" + dgvApplyOrDoctor["AnaesthesiaMethodId", e.RowIndex].Value + " 手术:" + dgvApplyOrDoctor["Operation", e.RowIndex].Value + remark + " \n \n "), this.dgvApplyOrDoctor, new Point((mousePos.X < 120 ? 120 : mousePos.X), mousePos.Y - 90));
}
}
private void toolTip1_Draw(object sender, DrawToolTipEventArgs e)
{
e.Graphics.FillRectangle(Brushes.AliceBlue, e.Bounds);
e.Graphics.DrawRectangle(Pens.Chocolate, new Rectangle(0, 0, e.Bounds.Width - 1, e.Bounds.Height - 1));
e.Graphics.DrawString(e.ToolTipText, new System.Drawing.Font("微软雅黑", 12.5F), Brushes.Red, e.Bounds);
}
private void dgvApplyOrDoctor_CellMouseLeave(object sender, DataGridViewCellEventArgs e)
{
/*鼠标移出单元格后隐藏提示工具*/
this.toolTip1.Hide(this.dgvApplyOrDoctor);
}
private List<int> GetSelectIds()
{
List<int> opas = new List<int>();
foreach (DataGridViewRow item in dgvApplyOrDoctor.Rows)
{
bool isChoose = bool.Parse(item.Cells[0].EditedFormattedValue.ToString());
if (isChoose)
{
string SelectId = item.Cells[1].Value.ToString();// as string;
if (SelectId != "")
opas.Add(Convert.ToInt32(SelectId));
}
}
return opas;
}
/// <summary>
/// 初始化ComboBox
/// </summary>
private void Initial()
{
List<OperationRoom> rooms = BOperationRoom.GetOperationRooms("IsValid=1 and Site='手术室'");
rooms.Insert(0, new OperationRoom() { Id = -1, Name = "" });
cboOperationRoom.DataSource = rooms;
cboOperationRoom.DisplayMember = "Name";
cboOperationRoom.ValueMember = "Id";
ControlExtension.GetOperationSite(labelSite,CboOperationSite);
this.CboOperationSite.SelectedIndexChanged += new System.EventHandler(this.CboOperationSite_SelectedIndexChanged);
}
private void FullDgv(DataTable operationApplys)
{
if (operationApplys != null)
{
dgvApplyOrDoctor.AutoGenerateColumns = false;
dgvApplyOrDoctor.DataSource = null;
dgvApplyOrDoctor.Rows.Clear();
int num = 1;
foreach (DataRow dr in operationApplys.Rows)
{
int index = this.dgvApplyOrDoctor.Rows.Add();
this.dgvApplyOrDoctor.Rows[index].Cells["Id"].Value = dr["ApplyId"].ToString();
this.dgvApplyOrDoctor.Rows[index].Cells["Index"].Value = num;
num++;
this.dgvApplyOrDoctor.Rows[index].Cells["InHospitalNo"].Value = dr["MdrecNo"].ToString();
this.dgvApplyOrDoctor.Rows[index].Cells["PlanOperationRoomName"].Value = dr["OperationRoom"].ToString();
this.dgvApplyOrDoctor.Rows[index].Cells["PatientName"].Value = dr["PatientName"].ToString() + "(" + dr["Sex"].ToString() + "," + dr["BirthDay"].ToString() + ")";
this.dgvApplyOrDoctor.Rows[index].Cells["DepartmentId"].Value = dr["ApplyDepName"].ToString();
this.dgvApplyOrDoctor.Rows[index].Cells["Operation"].Value = dr["ApplyOperationInfoName"].ToString();
//this.dgvApplyOrDoctor.Rows[index].Cells["OperationDoctor"].Value = dr["OperationDoctor"].ToString();
this.dgvApplyOrDoctor.Rows[index].Cells["AnaesthesiaMethodId"].Value = dr["AnaesthesiaMethodName"].ToString();
string OrderOperationTime = dr["OrderOperationTime"].ToString();
this.dgvApplyOrDoctor.Rows[index].Cells["OrderOperationTime"].Value = DateTime.Parse(OrderOperationTime).ToString("HH:mm");
if (dr["OperationType"].ToString().Equals("急诊"))
{
this.dgvApplyOrDoctor.Rows[index].DefaultCellStyle.BackColor = Color.Red;
}
this.dgvApplyOrDoctor.Rows[index].Cells["Remark"].Value = dr["Remark"].ToString();
//this.dgvApplyOrDoctor.Rows[index].Cells["OperationSite"].Value = dr["OperationSite"].ToString();
}
}
}
private void btnBeforeDay_Click(object sender, EventArgs e)
{
dtpTime.Value = dtpTime.Value.AddDays(-1);
}
private void btnAfterDay_Click(object sender, EventArgs e)
{
dtpTime.Value = dtpTime.Value.AddDays(1);
}
private void dtpTime_ValueChanged(object sender, EventArgs e)
{
beginTime = dtpTime.Value.Date;
endTime = dtpTime.Value.Date.AddHours(23).AddMinutes(59);
cboOperationRoom_SelectedIndexChanged(null, null);
}
private void btnPreview_Click(object sender, EventArgs e)
{
if (dgvApplyOrDoctor.SelectedRows == null)
return;
List<int> SelectIds = GetSelectIds();
if (SelectIds.Count > 0)
{
for (int i = 0; i < SelectIds.Count; i++)
{
string Ids = string.Join(",", SelectIds);
dt = null;
flowLayoutPanel1.Controls.Clear();
dt = BOperationApply.SelectPlanedOpeByRoom(" [OperationApplyId] in (" + Ids + ") Order By OperationRoom.OrderBy,TableIndex");
ReportData();
}
}
else
{
cboOperationRoom_SelectedIndexChanged(null, null);
}
}
private void dgvApplyOrDoctor_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
IsSelectAll = IsSelectAll == false ? true : false;
if (e.ColumnIndex == 0)
{
foreach (DataGridViewRow item in dgvApplyOrDoctor.Rows)
{
DataGridViewCell senderdgvr = item.Cells[0];
senderdgvr.Value = IsSelectAll;
}
}
}
private void rboall_CheckedChanged(object sender, EventArgs e)
{
cboOperationRoom_SelectedIndexChanged(null, null);
}
private void CboOperationSite_SelectedIndexChanged(object sender, EventArgs e)
{
//ControlExtension.SetOperationSite(CboOperationSite);
cboOperationRoom_SelectedIndexChanged(null, null);
}
}
}