using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using DevExpress.XtraReports.UI;
using System.Data;
using CYYFCheckupMgr.BLL;
using CYYFCheckupMgr.Model;
using CYYFCheckupMgr.Util;
using CYYFCheckupMgr.UC.UtilClass;
using System.Drawing.Drawing2D;
namespace CYYFCheckupMgr.OccupationalDisease.UC.Rpt.仪器检查报告.肺功能报告
{
/// <summary>
/// PulmonaryFunctionReport
/// author CYTD Young
/// 2016-12-03 10:32:14
/// music: Grouplove - Do You Love Someone
/// </summary>
public partial class PulmonaryFunctionReport : DevExpress.XtraReports.UI.XtraReport
{
public PulmonaryFunctionReport()
{
InitializeComponent();
}
public void InitData(string sglcheckid, string checkDoctor, string checkDate,
string[] fvcValues, string[] fev1Values, string[] fev1BFBValues, string[] mvvValues, string jielun)
{
if (string.IsNullOrWhiteSpace(sglcheckid))
{
return;
}
#region 个人信息
DataTable dtSglInfo = BLLUtil.GetTableData(TableFieldBase.T_SINGLE_CHECKINFO.T_NAME, TableFieldBase.T_SINGLE_CHECKINFO.SGLCHECKID, sglcheckid);
if (dtSglInfo == null || dtSglInfo.Rows.Count < 1)
{
return;
}
DataRow drSglInfo = dtSglInfo.Rows[0];
this.xrLabel_name.Text = drSglInfo[TableFieldBase.T_SINGLE_CHECKINFO.NAME].ToString();
this.xrBarCode_sgl.Text = drSglInfo[TableFieldBase.T_SINGLE_CHECKINFO.SGLCHECKID].ToString();
this.xrLabel_sex.Text = drSglInfo[TableFieldBase.T_SINGLE_CHECKINFO.SEX] == null ? "" : (drSglInfo[TableFieldBase.T_SINGLE_CHECKINFO.SEX].ToString().Equals("1") ? "男" : "女");
this.xrLabel_age.Text = drSglInfo[TableFieldBase.T_SINGLE_CHECKINFO.AGE].ToString();
this.xrLabel_telephone.Text = drSglInfo[TableFieldBase.T_SINGLE_CHECKINFO.MOBILEPHONE] == null ? "" : drSglInfo[TableFieldBase.T_SINGLE_CHECKINFO.MOBILEPHONE].ToString();
this.xrLabel_idcard.Text = drSglInfo[TableFieldBase.T_SINGLE_CHECKINFO.IDCARD].ToString();
this.xrLabel_enterprice.Text = drSglInfo[TableFieldBase.T_SINGLE_CHECKINFO.ENTERPRICE].ToString();
DataTable dtSglInfoExtend = BLLUtil.GetTableData(TableFieldBase.T_SINGLE_CHECKINFO_EXTEND.T_NAME, TableFieldBase.T_SINGLE_CHECKINFO_EXTEND.SGLCHECKID, sglcheckid);
if (dtSglInfoExtend == null || dtSglInfoExtend.Rows.Count < 1 || dtSglInfoExtend.Rows[0] != null)
{
DataRow drSglInfoExtend = dtSglInfoExtend.Rows[0];
this.xrLabel_worktype.Text = drSglInfoExtend[TableFieldBase.T_SINGLE_CHECKINFO_EXTEND.PROFESSIONAL].ToString();
this.xrLabel_ohsCheckType.Text = EnumUtil.GetEnumNameByValue(typeof(EnumJobStatus),
int.Parse(string.IsNullOrEmpty(drSglInfoExtend[TableField.T_SINGLE_CHECKINFO_EXTEND.JOBSTATUS].ToString()) ? "1" : drSglInfoExtend[TableField.T_SINGLE_CHECKINFO_EXTEND.JOBSTATUS].ToString()));
string strFactor = string.Empty;
string groupid = drSglInfo[TableFieldBase.T_SINGLE_CHECKINFO.GROUPID].ToString();
if (string.IsNullOrWhiteSpace(groupid))
{
strFactor = drSglInfoExtend[TableFieldBase.T_SINGLE_CHECKINFO_EXTEND.RISKFACTORS].ToString();
}
else
{
strFactor = BLLOccupationalDisease.GetGroupRisks(groupid);
}
this.xrLabel_ohsWHYS.Text = strFactor;
}
#endregion
#region 项目结果
//this.xrTableCellfvc单位.Text = "";
this.xrTableCellfvc实测值.Text = fvcValues[0];
this.xrTableCellfvc预测值.Text = fvcValues[1];
this.xrTableCellfvc百分比.Text = fvcValues[2];
//this.xrTableCellfvc1单位.Text = "";
this.xrTableCellfvc1实测值.Text = fev1Values[0];
this.xrTableCellfvc1预计值.Text = fev1Values[1];
this.xrTableCellfvc1百分比.Text = fev1Values[2];
//this.xrTableCellfvcBFB单位.Text = "";
this.xrTableCellfvcBFB实测值.Text = fev1Values[0];
this.xrTableCellfvcBFB预计值.Text = fev1Values[1];
this.xrTableCellfvcBFB百分比.Text = fev1Values[2];
//this.xrTableCellmvv单位.Text = "";
this.xrTableCellmvv实测值.Text = fev1BFBValues[0];
this.xrTableCellmvv预计值.Text = fev1BFBValues[1];
this.xrTableCellmvv百分比.Text = fev1BFBValues[2];
#endregion
#region 签名
Image imageSign = ReportSignPictureUtil.GetDoctorSignPictureByName(checkDoctor.Trim());
if (imageSign == null)
{
this.xrLabel检查者姓名.Visible = true;
this.xrPictureBox检查者签名.Visible = false;
this.xrLabel检查者姓名.Text = checkDoctor;
}
else
{
this.xrLabel检查者姓名.Visible = false;
this.xrPictureBox检查者签名.Visible = true;
this.xrPictureBox检查者签名.Image = imageSign;
}
this.xrLabel检查日期.Text = checkDate;
#endregion
#region 画图
int diagX = (int)double.Parse(fvcValues[2]);
int diagY = (int)double.Parse(fev1Values[2]);
this.xrPictureBox肺通气功能图.Image = DrawDIAG(diagX, diagY);
//int copdX = (int)double.Parse(fev1Values[2]);
//int copdY = (int)double.Parse(fev1BFBValues[2]);
//this.xrPictureBox慢阻肺图.Image = DrawCOPD(copdX, copdY);
#endregion
#region 项目结论
this.xrLabel检查结果诊断.Text = jielun;
#endregion
}
private Image DrawDIAG(int xValue, int yValue)
{
int iOPointX_up = 40;//圆点X
int iOPointY_up = 400;//圆点Y
int iXSpan = 12;//X轴跨度——小格宽度
int iYSpan = 4;//Y周跨度--小格高度
Font font_title_picture = new Font("宋体", 14);
Font font_title_xy = new Font("宋体", 12);
Font font_xy = new Font("宋体", 11);
int 数值点的圈大小 = 6;
string[] x = { "60", "80", "100" };
string[] y = { "40", "70", "100" };
#region 初始化字体和画笔
Pen pen_light = new Pen(Color.LightGray);
pen_light.DashStyle = DashStyle.Solid;
Pen pen_value_you = new Pen(Color.Red, 2);
pen_value_you.DashStyle = DashStyle.Solid;
StringFormat StrF = new StringFormat();
StrF.FormatFlags = StringFormatFlags.DirectionVertical;
#endregion
int iWidth = 650;//宽度
int iHieght = 450;//高度
Bitmap bmap = new Bitmap(iWidth, iHieght);
Graphics gph = Graphics.FromImage(bmap);
try
{
gph.Clear(Color.White);
PointF theOPoint = new PointF(iOPointX_up, iOPointY_up);
gph.DrawLine(Pens.Black, theOPoint.X, theOPoint.Y, iWidth, theOPoint.Y);
gph.DrawString("(%VC)", font_title_xy, Brushes.Black, new PointF(560, 410));
gph.DrawLine(Pens.Black, theOPoint.X, theOPoint.Y, theOPoint.X, 0);
gph.DrawString("(FEV1.0%)", font_title_xy, Brushes.Black, new PointF(0, 7), StrF);
gph.DrawString("正常", font_xy, Brushes.LightGray, new PointF(455, 165));
gph.DrawString("限制性", font_xy, Brushes.LightGray, new PointF(45, 165));
gph.DrawString("阻塞性", font_xy, Brushes.LightGray, new PointF(455, 375));
gph.DrawString("混合性", font_xy, Brushes.LightGray, new PointF(45, 375));
for (int i = 0; i < y.Length; i++)
{
int iY = 4;
if (i == 1) { iY = 7; }
else if (i == 2) { iY = 10; }
gph.DrawString(y[i], font_xy, Brushes.Black, new PointF(theOPoint.X - 30, theOPoint.Y - (iY - 4) * iYSpan * 10 - 6));
gph.DrawLine(Pens.Black, theOPoint.X, theOPoint.Y - (iY - 4) * iYSpan * 10, iWidth, theOPoint.Y - (iY - 4) * iYSpan * 10);
}
for (int i = 0; i < x.Length; i++)
{
gph.DrawString(x[i], font_xy, Brushes.Black, new PointF(theOPoint.X + i * iXSpan * 20 - 5, theOPoint.Y + 10));
if (i > 0)
{
gph.DrawLine(Pens.Black, theOPoint.X + i * iXSpan * 20, 0, theOPoint.X + i * iXSpan * 20, theOPoint.Y);
}
}
//10=200/20
gph.DrawEllipse(pen_value_you, theOPoint.X + (xValue - 60) * iXSpan - 3, theOPoint.Y - (yValue - 40) * iYSpan, 数值点的圈大小, 数值点的圈大小);
}
finally
{
gph.Dispose();
}
return bmap;
}
private Image DrawCOPD(int xValue, int yValue)
{
int iOPointX_up = 80;//圆点X
int iOPointY_up = 280;//圆点Y
int iXSpan = 5;//X轴跨度——小格宽度
int iYSpan = 2;//Y周跨度--小格高度
Font font_title_picture = new Font("宋体", 14);
Font font_title_xy = new Font("宋体", 12);
Font font_xy = new Font("宋体", 11);
int 数值点的圈大小 = 6;
string[] x = { "100", "80", "50", "30", "0" };
string[] y = { "0", "70", "100" };
#region 初始化字体和画笔
Pen pen_light = new Pen(Color.LightGray);
pen_light.DashStyle = DashStyle.Solid;
Pen pen_value_you = new Pen(Color.Red, 2);
pen_value_you.DashStyle = DashStyle.Solid;
StringFormat StrF = new StringFormat();
StrF.FormatFlags = StringFormatFlags.DirectionVertical;
#endregion
//画图初始化
int iWidth = 620;//宽度
int iHieght = 350;//高度
Bitmap bmap = new Bitmap(iWidth, iHieght);
Graphics gph = Graphics.FromImage(bmap);
try
{
gph.Clear(Color.White);
//设置中心点:在物理图的左下角,也就是Ymax和X0的位置附近
PointF theOPoint = new PointF(iOPointX_up, iOPointY_up);
gph.DrawLine(Pens.Black, theOPoint.X, theOPoint.Y, iWidth, theOPoint.Y);
gph.DrawString("(%FEV1.0)", font_title_xy, Brushes.Black, new PointF(490, 280));
//画y轴线和 Y轴名称
gph.DrawLine(Pens.Black, theOPoint.X, theOPoint.Y, theOPoint.X, 0);
gph.DrawString("(FEV1.0/FVC)", font_title_xy, Brushes.Black, new PointF(15, 7), StrF);
gph.DrawString("正常", font_xy, Brushes.LightGray, new PointF(545, 113));
gph.DrawString("Ⅰ", font_xy, Brushes.LightGray, new PointF(165, 245));
gph.DrawString("Ⅱ", font_xy, Brushes.LightGray, new PointF(310, 245));
gph.DrawString("Ⅲ", font_xy, Brushes.LightGray, new PointF(410, 245));
gph.DrawString("Ⅳ", font_xy, Brushes.LightGray, new PointF(560, 245));
//画y轴刻度和刻度线
for (int i = 0; i < y.Length; i++)
{
int iY = 0;
if (i == 1) { iY = 7; }
else if (i == 2) { iY = 10; }
gph.DrawString(y[i], font_xy, Brushes.Black, new PointF(theOPoint.X - iYSpan * 10, theOPoint.Y - iY * iYSpan * 10 - 6));
if (i > 0)
{
gph.DrawLine(Pens.Black, theOPoint.X, theOPoint.Y - iY * iYSpan * 10, iWidth, theOPoint.Y - iY * iYSpan * 10);
}
}
//画x轴刻度和X轴线
for (int i = 0; i < x.Length; i++)
{
int iX = 10;
if (i == 1) { iX = 8; }
else if (i == 2) { iX = 5; }
else if (i == 3) { iX = 3; }
else if (i == 4) { iX = 0; }
gph.DrawString(x[i], font_xy, Brushes.Black, new PointF(theOPoint.X + (10 - iX) * iXSpan * 10 - 5, theOPoint.Y + 10));
if (i > 0)
{
if (i != 4)
{
gph.DrawLine(Pens.Black, theOPoint.X + (10 - iX) * iXSpan * 10, theOPoint.Y - 7 * iYSpan * 10, theOPoint.X + (10 - iX) * iXSpan * 10, theOPoint.Y);
}
else
{
gph.DrawLine(Pens.Black, theOPoint.X + (10 - iX) * iXSpan * 10, 0, theOPoint.X + (10 - iX) * iXSpan * 10, theOPoint.Y);
}
}
}
gph.DrawEllipse(pen_value_you, theOPoint.X + (100 - xValue) * iXSpan, theOPoint.Y - yValue * iYSpan, 数值点的圈大小, 数值点的圈大小);
}
finally
{
gph.Dispose();
}
return bmap;
}
}
}
绘制肺功能检测报告图
最新推荐文章于 2022-10-27 16:41:47 发布