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
{
///
/// 病历号
///
public string patCaseNO = "";
///
/// 患者姓名
///
public string patname = "";
public DateTime beginTime;
public DateTime endTime;
public DataTable dt;
public List 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 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 GetSelectIds()
{
List opas = new List();
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;
}
///
/// 初始化ComboBox
///
private void Initial()
{
List 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 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);
}
}
}