405 lines
19 KiB
C#
405 lines
19 KiB
C#
|
using DevExpress.XtraEditors;
|
|||
|
using HL_FristAidPlatform_Public;
|
|||
|
using System;
|
|||
|
using System.Data;
|
|||
|
using System.Linq;
|
|||
|
|
|||
|
namespace HL_FristAidPlatform_ChestPain_Statistics
|
|||
|
{
|
|||
|
public partial class Form_ChestPain_Statistics_QC : XtraForm
|
|||
|
{
|
|||
|
public Form_ChestPain_Statistics_QC()
|
|||
|
{
|
|||
|
InitializeComponent();
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 统计按钮事件
|
|||
|
/// </summary>
|
|||
|
/// <param name="sender"></param>
|
|||
|
/// <param name="e"></param>
|
|||
|
private void simpleButton_Report_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
Statistics();
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 统计
|
|||
|
/// </summary>
|
|||
|
private void Statistics()
|
|||
|
{
|
|||
|
string preliminaryDiagnosis = "";
|
|||
|
//开始时间
|
|||
|
string StartTime = dateEdit_Start.TimeValue;
|
|||
|
//结束时间
|
|||
|
string EndTime = dateEdit_End.TimeValue;
|
|||
|
|
|||
|
for (int i = 0; i < checkedListBoxControl_PreliminaryDiagnosis.ItemCount; i++)
|
|||
|
{
|
|||
|
if (checkedListBoxControl_PreliminaryDiagnosis.GetItemChecked(i))
|
|||
|
{
|
|||
|
//preliminaryDiagnosis = checkedListBoxControl_PreliminaryDiagnosis.GetItemText(i);
|
|||
|
preliminaryDiagnosis += checkedListBoxControl_PreliminaryDiagnosis.GetItemValue(i).ToString() + ",";
|
|||
|
}
|
|||
|
}
|
|||
|
if (!string.IsNullOrEmpty(preliminaryDiagnosis))
|
|||
|
{
|
|||
|
preliminaryDiagnosis = preliminaryDiagnosis.Remove(preliminaryDiagnosis.Count() - 1);
|
|||
|
}
|
|||
|
switch (comboBoxEdit_SelectType.SelectedIndex)
|
|||
|
{
|
|||
|
case 0:
|
|||
|
//STEMI患者首份ECG(远程传输或院内)至心电图确诊时间;≤10分钟比例
|
|||
|
Form_ChestPain_Statistics_Report01 report01 = new Form_ChestPain_Statistics_Report01(StartTime, EndTime, PublicClassForDataBase.Config1003, PublicClassForDataBase.Config1004, preliminaryDiagnosis);
|
|||
|
report01.MdiParent = this;
|
|||
|
report01.Show();
|
|||
|
break;
|
|||
|
case 1:
|
|||
|
//120急救或者转运患者ECG远程传输比例
|
|||
|
Form_ChestPain_Statistics_Report02 report02 = new Form_ChestPain_Statistics_Report02(StartTime, EndTime, preliminaryDiagnosis);
|
|||
|
report02.MdiParent = this;
|
|||
|
report02.Show();
|
|||
|
break;
|
|||
|
case 2:
|
|||
|
//STEMI患者首份ECG(远程传输或院内)至心电图确诊时间;≤10分钟比例
|
|||
|
Form_ChestPain_Statistics_Report03 report03 = new Form_ChestPain_Statistics_Report03(StartTime, EndTime);
|
|||
|
report03.MdiParent = this;
|
|||
|
report03.Show();
|
|||
|
break;
|
|||
|
//case 3:
|
|||
|
// //STEMI患者首次医疗接触至双重抗血小板治疗比例、时间;≤10分钟比例
|
|||
|
// Form_ChestPain_Statistics_Report04 report04 = new Form_ChestPain_Statistics_Report04(StartTime, EndTime);
|
|||
|
// report04.MdiParent = this;
|
|||
|
// report04.Show();
|
|||
|
// break;
|
|||
|
case 3:
|
|||
|
//肌钙蛋白从抽血完成到获取报告时间
|
|||
|
Form_ChestPain_Statistics_Report05 report05 = new Form_ChestPain_Statistics_Report05(StartTime, EndTime);
|
|||
|
report05.MdiParent = this;
|
|||
|
report05.Show();
|
|||
|
break;
|
|||
|
case 4:
|
|||
|
//在再灌注时间窗(12小时)以内到达的STEMI患者早期再灌注治疗比列
|
|||
|
Form_ChestPain_Statistics_Report06 report06 = new Form_ChestPain_Statistics_Report06(StartTime, EndTime);
|
|||
|
report06.MdiParent = this;
|
|||
|
report06.Show();
|
|||
|
break;
|
|||
|
case 5:
|
|||
|
//适合溶栓的患者接受溶栓治疗的比例
|
|||
|
Form_ChestPain_Statistics_Report07 report07 = new Form_ChestPain_Statistics_Report07(StartTime, EndTime, preliminaryDiagnosis);
|
|||
|
report07.MdiParent = this;
|
|||
|
report07.Show();
|
|||
|
break;
|
|||
|
case 6:
|
|||
|
//溶栓治疗的全部STEMI患者进门-溶栓时间
|
|||
|
Form_ChestPain_Statistics_Report08 report08 = new Form_ChestPain_Statistics_Report08(StartTime, EndTime);
|
|||
|
report08.MdiParent = this;
|
|||
|
report08.Show();
|
|||
|
break;
|
|||
|
case 7:
|
|||
|
//月平均门 - 球时间90分钟
|
|||
|
Form_ChestPain_Statistics_Report09 report09 = new Form_ChestPain_Statistics_Report09(StartTime, EndTime);
|
|||
|
report09.MdiParent = this;
|
|||
|
report09.Show();
|
|||
|
break;
|
|||
|
case 8:
|
|||
|
//导管室激活时间小于30分钟(所有急诊PCI的STEMI患者)
|
|||
|
Form_ChestPain_Statistics_Report10 report10 = new Form_ChestPain_Statistics_Report10(StartTime, EndTime);
|
|||
|
report10.MdiParent = this;
|
|||
|
report10.Show();
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
#region 注释
|
|||
|
/// <summary>
|
|||
|
/// 120急救或者转运患者ECG远程传输比例
|
|||
|
/// </summary>
|
|||
|
/// <param name="name"></param>
|
|||
|
/// <param name="TimeAxisID"></param>
|
|||
|
//public void Report1(string name)
|
|||
|
//{
|
|||
|
// try
|
|||
|
// {
|
|||
|
// chartControl2.Visible = false;
|
|||
|
// chartControl1.Series.Clear();
|
|||
|
// DataTable dataTable = new DataTable();
|
|||
|
// dataTable = DBHelpClass.Get("api/service/T_Service_ChestPain_FirstMedicalReception/GetModelByReport?where=CreationDate BETWEEN '" + dateEdit_start.Text + "' and '" + dateEdit_end.Text + "'");
|
|||
|
// DataTable data = new DataTable("table1");
|
|||
|
// data.Columns.Add("Name", typeof(string));
|
|||
|
// data.Columns.Add("Value", typeof(int));
|
|||
|
// DataTable data1 = new DataTable("table2");
|
|||
|
// data1.Columns.Add("Name", typeof(string));
|
|||
|
// data1.Columns.Add("Value", typeof(int));
|
|||
|
// float averageTimeCount = 0;
|
|||
|
// float noAverageTimeCount = 0;
|
|||
|
// if (dataTable != null)
|
|||
|
// {
|
|||
|
// List<ReportModel> reportModels = new List<ReportModel>();
|
|||
|
// foreach (DataRow item in dataTable.Rows)
|
|||
|
// {
|
|||
|
// ReportModel model = new ReportModel();
|
|||
|
// model.name = Convert.ToDateTime(item["CreationDate"].ToString()).Year + "-" + Convert.ToDateTime(item["CreationDate"].ToString()).Month;
|
|||
|
// model.value = item["Is_Remote_Ecgtran"].ToString();
|
|||
|
// reportModels.Add(model);
|
|||
|
// }
|
|||
|
// var date = from t in reportModels
|
|||
|
// group t by new { t.name, t.value } into m
|
|||
|
// select new
|
|||
|
// {
|
|||
|
// key = m.Key,
|
|||
|
// count = m.Count()
|
|||
|
// };
|
|||
|
|
|||
|
// var orderBy = from t in date
|
|||
|
// group t by new { t.key.name } into m
|
|||
|
// select new
|
|||
|
// {
|
|||
|
// key = m.Key,
|
|||
|
// count = m.Count()
|
|||
|
// };
|
|||
|
|
|||
|
// for (int i = 0; i < orderBy.Count(); i++)
|
|||
|
// {
|
|||
|
// for (int j = 0; j < date.Count(); j++)
|
|||
|
// {
|
|||
|
// if (orderBy.ToList()[i].key.name == date.ToList()[j].key.name)
|
|||
|
// {
|
|||
|
// if (date.ToList()[i].key.value.ToString() == "1")//远程心电传输 1是2否
|
|||
|
// {
|
|||
|
// averageTimeCount = date.ToList()[j].count;
|
|||
|
// }
|
|||
|
// else
|
|||
|
// {
|
|||
|
// noAverageTimeCount = date.ToList()[j].count;
|
|||
|
// }
|
|||
|
// }
|
|||
|
// }
|
|||
|
// data.Rows.Add(orderBy.ToList()[i].key.name, (averageTimeCount / (averageTimeCount + noAverageTimeCount)) * 100);
|
|||
|
// data1.Rows.Add(orderBy.ToList()[i].key.name, 30);
|
|||
|
// }
|
|||
|
// XYDiagram xyDiagram1 = new XYDiagram();
|
|||
|
// xyDiagram1.AxisY.MinorCount = 1;
|
|||
|
// Series series = new Series(name, ViewType.Line);
|
|||
|
// series.ArgumentScaleType = ScaleType.Qualitative;
|
|||
|
// series.ValueScaleType = ScaleType.Numerical;
|
|||
|
// ((LineSeriesView)series.View).MarkerVisibility = DefaultBoolean.True;
|
|||
|
// series.ValueDataMembers[0] = "Value";
|
|||
|
// series.ArgumentDataMember = "Name";
|
|||
|
// series.DataSource = data;
|
|||
|
// chartControl1.Series.Add(series);
|
|||
|
// series.LegendTextPattern = "{A}:{V}";
|
|||
|
// series.LabelsVisibility = DefaultBoolean.True;//显示标注标签
|
|||
|
// ((XYDiagram)chartControl1.Diagram).Rotated = false;
|
|||
|
|
|||
|
// Series series1 = new Series("参考标准30%", ViewType.Line);
|
|||
|
// series1.ValueDataMembers[0] = "Value";
|
|||
|
// series1.ArgumentDataMember = "Name";
|
|||
|
// series1.DataSource = data1;
|
|||
|
// chartControl1.Series.Add(series1);
|
|||
|
// series1.LegendTextPattern = "{A}:{V}";
|
|||
|
// series1.LabelsVisibility = DefaultBoolean.True;//显示标注标签
|
|||
|
// ((XYDiagram)chartControl1.Diagram).Rotated = false;
|
|||
|
// }
|
|||
|
// }
|
|||
|
// catch (Exception ex)
|
|||
|
// {
|
|||
|
// PublicClass.WriteErrorLog(Text, "120急救或者转运患者ECG远程传输比例" + ex);
|
|||
|
// }
|
|||
|
//}
|
|||
|
/// <summary>
|
|||
|
/// STEMI患者首份ECG(远程传输或院内)至心电图确诊时间;≤10分钟比例
|
|||
|
/// </summary>
|
|||
|
/// <param name="name"></param>
|
|||
|
//public void Report2(string name,string TimeAxisID)
|
|||
|
//{
|
|||
|
// try
|
|||
|
// {
|
|||
|
// chartControl1.Series.Clear();
|
|||
|
// DataTable dataTable = new DataTable();
|
|||
|
// dataTable = DBHelpClass.Get("api/service/T_Service_ChestPain_Prehospital/GetKeyValueByReport?startTime='" + dateEdit_start.Text + "' &endTime='" + dateEdit_end.Text + "'&where="+ TimeAxisID);
|
|||
|
// DataTable data = new DataTable("table1");
|
|||
|
// data.Columns.Add("Name", typeof(string));
|
|||
|
// data.Columns.Add("Value", typeof(int));
|
|||
|
|
|||
|
// float averageTimeCount = 0;
|
|||
|
// float noAverageTimeCount = 0;
|
|||
|
// if (dataTable != null)
|
|||
|
// {
|
|||
|
// var orderBy = from t in dataTable.AsEnumerable()
|
|||
|
// group t by new { key =t.Field<string>("key") } into m
|
|||
|
// select new
|
|||
|
// {
|
|||
|
// key = m.Key,
|
|||
|
// count = m.Count()
|
|||
|
// };
|
|||
|
|
|||
|
// for (int i = 0; i < orderBy.Count(); i++)
|
|||
|
// {
|
|||
|
// for (int j = 0; j < date.Count(); j++)
|
|||
|
// {
|
|||
|
// if (orderBy.ToList()[i].key.name == date.ToList()[j].key.name)
|
|||
|
// {
|
|||
|
// if (date.ToList()[i].key.value.ToString() == "1")//远程心电传输 1是2否
|
|||
|
// {
|
|||
|
// averageTimeCount = date.ToList()[j].count;
|
|||
|
// }
|
|||
|
// else
|
|||
|
// {
|
|||
|
// noAverageTimeCount = date.ToList()[j].count;
|
|||
|
// }
|
|||
|
// }
|
|||
|
// }
|
|||
|
// data.Rows.Add(orderBy.ToList()[i].key.name, (averageTimeCount / (averageTimeCount + noAverageTimeCount)) * 100);
|
|||
|
// data1.Rows.Add(orderBy.ToList()[i].key.name, 30);
|
|||
|
// }
|
|||
|
// XYDiagram xyDiagram1 = new XYDiagram();
|
|||
|
// xyDiagram1.AxisY.MinorCount = 1;
|
|||
|
// Series series = new Series(name, ViewType.Line);
|
|||
|
// series.ArgumentScaleType = ScaleType.Qualitative;
|
|||
|
// series.ValueScaleType = ScaleType.Numerical;
|
|||
|
// ((LineSeriesView)series.View).MarkerVisibility = DefaultBoolean.True;
|
|||
|
// series.ValueDataMembers[0] = "Value";
|
|||
|
// series.ArgumentDataMember = "Name";
|
|||
|
// series.DataSource = data;
|
|||
|
// chartControl1.Series.Add(series);
|
|||
|
// series.LegendTextPattern = "{A}:{V}";
|
|||
|
// series.LabelsVisibility = DefaultBoolean.True;//显示标注标签
|
|||
|
// ((XYDiagram)chartControl1.Diagram).Rotated = false;
|
|||
|
|
|||
|
// Series series1 = new Series("参考标准30%", ViewType.Line);
|
|||
|
// series1.ValueDataMembers[0] = "Value";
|
|||
|
// series1.ArgumentDataMember = "Name";
|
|||
|
// series1.DataSource = data1;
|
|||
|
// chartControl1.Series.Add(series1);
|
|||
|
// series1.LegendTextPattern = "{A}:{V}";
|
|||
|
// series1.LabelsVisibility = DefaultBoolean.True;//显示标注标签
|
|||
|
// ((XYDiagram)chartControl1.Diagram).Rotated = false;
|
|||
|
// }
|
|||
|
// }
|
|||
|
// catch (Exception ex)
|
|||
|
// {
|
|||
|
// PublicClass.WriteErrorLog(Text, "120急救或者转运患者ECG远程传输比例" + ex);
|
|||
|
// }
|
|||
|
//}
|
|||
|
#endregion
|
|||
|
|
|||
|
#region 时间统计按钮
|
|||
|
/// <summary>
|
|||
|
/// 本年度
|
|||
|
/// </summary>
|
|||
|
/// <param name="sender"></param>
|
|||
|
/// <param name="e"></param>
|
|||
|
private void simpleButton_ThisYear_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
dateEdit_Start.TimeValue = new DateTime(DateTime.Now.Year, 1, 1).ToString("yyyy-MM-dd") + " 00:00:00";
|
|||
|
dateEdit_End.TimeValue = new DateTime(DateTime.Now.Year, 12, 31).ToString("yyyy-MM-dd") + " 23:59:59";
|
|||
|
Statistics();
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 上半年
|
|||
|
/// </summary>
|
|||
|
/// <param name="sender"></param>
|
|||
|
/// <param name="e"></param>
|
|||
|
private void simpleButton_UpHalfYear_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
dateEdit_Start.TimeValue = new DateTime(DateTime.Now.Year, 1, 1).ToShortDateString() + " 00:00:00";
|
|||
|
dateEdit_End.TimeValue = new DateTime(DateTime.Now.Year, 6, 30).ToShortDateString() + " 23:59:59";
|
|||
|
Statistics();
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 下半年
|
|||
|
/// </summary>
|
|||
|
/// <param name="sender"></param>
|
|||
|
/// <param name="e"></param>
|
|||
|
private void simpleButton_DownHalfYear_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
dateEdit_Start.TimeValue = new DateTime(DateTime.Now.Year, 7, 1).ToShortDateString() + " 00:00:00";
|
|||
|
dateEdit_End.TimeValue = new DateTime(DateTime.Now.Year, 12, 31).ToShortDateString() + " 23:59:59";
|
|||
|
Statistics();
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 本季度
|
|||
|
/// </summary>
|
|||
|
/// <param name="sender"></param>
|
|||
|
/// <param name="e"></param>
|
|||
|
private void simpleButton_ThisQuarter_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
dateEdit_Start.TimeValue = DateTime.Now.AddMonths(0 - (DateTime.Now.Month - 1) % 3).AddDays(1 - DateTime.Now.Day).ToShortDateString() + " 00:00:00";
|
|||
|
dateEdit_End.TimeValue = DateTime.Now.AddMonths(0 - (DateTime.Now.Month - 1) % 3).AddDays(1 - DateTime.Now.Day).AddMonths(3).AddDays(-1).ToShortDateString() + " 23:59:59";
|
|||
|
Statistics();
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 本月度
|
|||
|
/// </summary>
|
|||
|
/// <param name="sender"></param>
|
|||
|
/// <param name="e"></param>
|
|||
|
private void simpleButton_ThisMonth_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
dateEdit_Start.TimeValue = DateTime.Now.AddDays(1 - DateTime.Now.Day).Date.ToShortDateString() + " 00:00:00";
|
|||
|
dateEdit_End.TimeValue = DateTime.Now.AddDays(1 - DateTime.Now.Day).Date.AddMonths(1).AddDays(-1).ToShortDateString() + " 23:59:59";
|
|||
|
Statistics();
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 本周
|
|||
|
/// </summary>
|
|||
|
/// <param name="sender"></param>
|
|||
|
/// <param name="e"></param>
|
|||
|
private void simpleButton_ThisWeek_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
dateEdit_Start.TimeValue = DateTime.Now.AddDays(Convert.ToDouble((0 - Convert.ToInt16(DateTime.Now.DayOfWeek)))).ToShortDateString() + " 00:00:00";
|
|||
|
dateEdit_End.TimeValue = DateTime.Now.AddDays(Convert.ToDouble((6 - Convert.ToInt16(DateTime.Now.DayOfWeek)))).ToShortDateString() + " 23:59:59";
|
|||
|
Statistics();
|
|||
|
}
|
|||
|
#endregion
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 窗体加载
|
|||
|
/// </summary>
|
|||
|
/// <param name="sender"></param>
|
|||
|
/// <param name="e"></param>
|
|||
|
private void Form_ChestPain_Statistics_QC_Load(object sender, EventArgs e)
|
|||
|
{
|
|||
|
//绑定初步诊断
|
|||
|
BindPreliminaryDiagnosis();
|
|||
|
|
|||
|
//默认本月时间
|
|||
|
dateEdit_Start.TimeValue = DateTime.Now.AddDays(Convert.ToDouble((0 - Convert.ToInt16(DateTime.Now.DayOfWeek)))).ToShortDateString() + " 00:00:00";
|
|||
|
dateEdit_End.TimeValue = DateTime.Now.AddDays(Convert.ToDouble((6 - Convert.ToInt16(DateTime.Now.DayOfWeek)))).ToShortDateString() + " 23:59:59";
|
|||
|
//默认第一个统计
|
|||
|
comboBoxEdit_SelectType.SelectedIndex = 0;
|
|||
|
//统计
|
|||
|
Statistics();
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 绑定初步诊断
|
|||
|
/// </summary>
|
|||
|
private void BindPreliminaryDiagnosis()
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
string Url = string.Format("/api/base/T_Base_PreliminaryDiagnosis/GetListBySystemModuleID?systemModuleID={0}", PublicClassForDataBase.Config10001);
|
|||
|
DataTable BindDT = DBHelpClass.Get(Url);
|
|||
|
DataRow dataRow = BindDT.NewRow();
|
|||
|
dataRow["Content"] = "所有胸痛患者";
|
|||
|
dataRow["ID"] = "1,2,3,4,5,6,7,8";
|
|||
|
BindDT.Rows.Add(dataRow);
|
|||
|
checkedListBoxControl_PreliminaryDiagnosis.DisplayMember = "Content";
|
|||
|
checkedListBoxControl_PreliminaryDiagnosis.ValueMember = "ID";
|
|||
|
checkedListBoxControl_PreliminaryDiagnosis.DataSource = BindDT;
|
|||
|
checkedListBoxControl_PreliminaryDiagnosis.SetItemChecked(BindDT.Rows.Count-1,true);
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
PublicClass.WriteErrorLog(this.Text, "绑定初步诊断:\r\n" + ex);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|