401 lines
17 KiB
C#
401 lines
17 KiB
C#
|
using DevExpress.Utils;
|
|||
|
using DevExpress.Utils.Layout;
|
|||
|
using DevExpress.XtraCharts;
|
|||
|
using DevExpress.XtraEditors;
|
|||
|
using HL_FristAidPlatform_Apoplexy.Properties;
|
|||
|
using HL_FristAidPlatform_DTO;
|
|||
|
using HL_FristAidPlatform_Public;
|
|||
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Data;
|
|||
|
using System.Drawing;
|
|||
|
using System.Reflection;
|
|||
|
using System.Windows.Forms;
|
|||
|
|
|||
|
namespace HL_FristAidPlatform_Apoplexy
|
|||
|
{
|
|||
|
public partial class Form_Index : XtraForm
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// 需随访患者是否弹窗提醒
|
|||
|
/// </summary>
|
|||
|
public int flag = 0;
|
|||
|
/// <summary>
|
|||
|
/// 需随访患者
|
|||
|
/// </summary>
|
|||
|
public string followUpRemindNeed = "";
|
|||
|
|
|||
|
public TablePanel GreenWaytab;
|
|||
|
public TablePanel Meetingtab;
|
|||
|
|
|||
|
public Form_Index()
|
|||
|
{
|
|||
|
InitializeComponent();
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 加载
|
|||
|
/// </summary>
|
|||
|
/// <param name="sender"></param>
|
|||
|
/// <param name="e"></param>
|
|||
|
|
|||
|
private void Form_Index_Load(object sender, EventArgs e)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
LoadApoplexyRemind();
|
|||
|
List<ApoplexyCaseStatisticsModel> lst = DBHelpClass.GetList<ApoplexyCaseStatisticsModel>(string.Format("api/service/T_Service_Apoplexy_Statistics/GetIndexStatistics?hosptialGuid={0}", Information.Hospital.GUID));
|
|||
|
if (lst != null && lst.Count > 0)
|
|||
|
{
|
|||
|
for (int i = 0; i < lst.Count; i++)
|
|||
|
{
|
|||
|
lbl_ToDayCaseCount.Text = lst[0].Count.ToString();
|
|||
|
lbl_ThisMonthCount.Text = lst[1].Count.ToString();
|
|||
|
lbl_ThisYear.Text = lst[2].Count.ToString();
|
|||
|
lbl_Total.Text = lst[3].Count.ToString();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
List<ApoplexyStatisticsModel> lst1 = DBHelpClass.GetList<ApoplexyStatisticsModel>(string.Format("api/service/T_Service_Apoplexy_Statistics/GetZLTypeStatistics?hosptialGuid={0}&dateStart={1}&dateEnd={2}&type={3}", Information.Hospital.GUID, DateTime.Now.AddDays(-14).ToString("yyyy-MM-dd"), DateTime.Now.AddDays(1).ToString("yyyy-MM-dd"), 2));
|
|||
|
chartControl1.Series.Clear();
|
|||
|
Series series1 = new Series("", ViewType.Pie);
|
|||
|
series1.Points.Clear();
|
|||
|
|
|||
|
if (lst1 != null && lst1.Count > 0)
|
|||
|
{
|
|||
|
for (int i = 0; i < lst1.Count; i++)
|
|||
|
{
|
|||
|
series1.Points.Add(new SeriesPoint("静脉溶栓", lst1[i].ThrombolysisCount));
|
|||
|
series1.Points.Add(new SeriesPoint("介入治疗", lst1[i].InterveneCount));
|
|||
|
series1.Points.Add(new SeriesPoint("脑出血", lst1[i].HeadCount));
|
|||
|
series1.Points.Add(new SeriesPoint("颅内动脉瘤", lst1[i].AneurysmCount));
|
|||
|
series1.Points.Add(new SeriesPoint("CEA/CAS", lst1[i].CeaCesCount));
|
|||
|
series1.Points.Add(new SeriesPoint("保守治疗", lst1[i].ConservativeCount));
|
|||
|
chartControl1.Series.AddRange(series1);
|
|||
|
}
|
|||
|
}
|
|||
|
ChartTitle titles = new ChartTitle();
|
|||
|
titles.Text = "治疗类型统计";
|
|||
|
titles.TextColor = System.Drawing.Color.Black;
|
|||
|
titles.Indent = 1;
|
|||
|
titles.Dock = ChartTitleDockStyle.Top;
|
|||
|
titles.Indent = 0; ;
|
|||
|
series1.LegendPointOptions.PointView = PointView.ArgumentAndValues;
|
|||
|
series1.LegendPointOptions.Pattern = "{A}: {VP:P2}";
|
|||
|
series1.PointOptions.PointView = PointView.ArgumentAndValues;
|
|||
|
series1.Visible = true;
|
|||
|
chartControl1.Series.AddRange(series1);
|
|||
|
chartControl1.Titles.Add(titles);
|
|||
|
List<ThrombolysisMedianModel> lst2 = DBHelpClass.GetList<ThrombolysisMedianModel>(string.Format("api/service/T_Service_Apoplexy_Statistics/GetIndexThrombolysis?hosptialGuid={0}&dateStart={1}&dateEnd={2}&type={3}", Information.Hospital.GUID, DateTime.Now.AddDays(1 - DateTime.Now.Day).AddMonths(-11).ToString("yyyy-MM-dd"), Convert.ToDateTime(DateTime.Now.AddDays(1 - DateTime.Now.Day).AddMonths(1).ToString("yyyy-MM-dd")).AddSeconds(-1).ToString("yyyy-MM-dd HH:mm:ss"), 1));
|
|||
|
chartControl2.Series.Clear();
|
|||
|
Series series2 = new Series("DNT中位数", ViewType.Spline);
|
|||
|
series2.Points.Clear();
|
|||
|
|
|||
|
if (lst2 != null && lst2.Count > 0)
|
|||
|
{
|
|||
|
for (int i = 0; i < lst2.Count; i++)
|
|||
|
{
|
|||
|
series2.Points.Add(new SeriesPoint(lst2[i].CRTime, lst2[i].Value));
|
|||
|
}
|
|||
|
chartControl2.Series.AddRange(series2);
|
|||
|
}
|
|||
|
((LineSeriesView)series2.View).MarkerVisibility = DefaultBoolean.True;
|
|||
|
((LineSeriesView)series2.View).LineMarkerOptions.Kind = MarkerKind.Circle;
|
|||
|
GetGreenWayMessageList();
|
|||
|
BindMeeting();
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
PublicClass.WriteErrorLog(this.Text, "加载:\r\n" + ex);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 绿道消息
|
|||
|
/// </summary>
|
|||
|
public void GetGreenWayMessageList()
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
string Url = string.Format("api/service/T_Service_NoticeReceiving/getNoticeAndReadState?pageIndex={0}&pageSize={1}&UserID={2}", 1, 20, Information.User.ID);
|
|||
|
DataTable dt = DBHelpClass.Get(Url);
|
|||
|
if (dt != null && dt.Rows.Count > 0)
|
|||
|
GreenwayTabPanel(dt.Rows.Count, dt);
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
PublicClass.WriteErrorLog(this.Text, "绑定绿道消息:\r\n" + ex);
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
private void BindMeeting()
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
string Url = $"api/service/T_Service_Meeting/GetList?hospitalGuid={Information.Hospital.GUID}&systemModuleID=3&type=-1&topNumber=10";
|
|||
|
DataTable dt = DBHelpClass.GetJsonText(Url);
|
|||
|
if (dt != null && dt.Rows.Count > 0)
|
|||
|
MeetingTabPanel(dt.Rows.Count, dt);
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
PublicClass.WriteErrorLog(this.Text, "绑定会议提醒:\r\n" + ex);
|
|||
|
}
|
|||
|
}
|
|||
|
private void LoadApoplexyRemind()
|
|||
|
{
|
|||
|
string Url = string.Format("api/service/T_Service_Apoplexy_FAHBase/GetPageList1?&hospitalGuid={0}", Information.Hospital.GUID);
|
|||
|
List<KeyValue> keyValuelist = DBHelpClass.GetList<KeyValue>(Url);
|
|||
|
string UrlCommunity = string.Format("api/service/T_Service_Apoplexy_Community/GetCommunityFollowUp?&hospitalGuid={0}", Information.Hospital.GUID);
|
|||
|
List<KeyValue> keyValuelist1 = DBHelpClass.GetList<KeyValue>(UrlCommunity);
|
|||
|
if (flag == 0)
|
|||
|
{
|
|||
|
if (keyValuelist != null && keyValuelist.Count > 0)
|
|||
|
{
|
|||
|
for (int i = 0; i < keyValuelist.Count; i++)
|
|||
|
{
|
|||
|
if (i == 0)
|
|||
|
{
|
|||
|
followUpRemindNeed += "卒中患者需随访:" + keyValuelist[i].Key + ";";
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
followUpRemindNeed += keyValuelist[i].Key + ";";
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
if (keyValuelist1 != null && keyValuelist1.Count > 0)
|
|||
|
{
|
|||
|
for (int i = 0; i < keyValuelist1.Count; i++)
|
|||
|
{
|
|||
|
if (i == 0)
|
|||
|
{
|
|||
|
followUpRemindNeed += "社区乡镇需随访" + keyValuelist1[i].Key + ";";
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
followUpRemindNeed += keyValuelist1[i].Key + ";";
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
flag = 1;
|
|||
|
//弹窗提醒需随访患者
|
|||
|
if (!string.IsNullOrEmpty(followUpRemindNeed))
|
|||
|
{
|
|||
|
//followUpRemindNeed != "近期需随访患者:"
|
|||
|
Form_Followupremind followupremind = new Form_Followupremind(followUpRemindNeed);
|
|||
|
followupremind.TopMost = true;
|
|||
|
followupremind.Location = new Point(SystemInformation.PrimaryMonitorSize.Width / 2 - 200, SystemInformation.PrimaryMonitorSize.Height / 2 - 150);
|
|||
|
followupremind.Show();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 绿道消息提醒动态表格渲染
|
|||
|
/// </summary>
|
|||
|
/// <param name="total"></param>
|
|||
|
/// <param name="list"></param>
|
|||
|
public void GreenwayTabPanel(int total, DataTable dt)
|
|||
|
{
|
|||
|
panel_Greenway.Controls.Clear();
|
|||
|
int columnCount = 1; //列数
|
|||
|
int rowCount = total;//行数
|
|||
|
//if ((total % columnCount) > 0) rowCount++;
|
|||
|
|
|||
|
GreenWaytab = new TablePanel();
|
|||
|
GreenWaytab.Columns.Clear();
|
|||
|
for (int i = 0; i < columnCount; i++)
|
|||
|
{
|
|||
|
GreenWaytab.Columns.Add(new TablePanelColumn(TablePanelEntityStyle.Relative, 5));
|
|||
|
GreenWaytab.Columns.Add(new TablePanelColumn(TablePanelEntityStyle.Relative, 5));
|
|||
|
GreenWaytab.Columns.Add(new TablePanelColumn(TablePanelEntityStyle.Relative, 85));
|
|||
|
GreenWaytab.Columns.Add(new TablePanelColumn(TablePanelEntityStyle.Relative, 5));
|
|||
|
}
|
|||
|
GreenWaytab.Rows.Clear();
|
|||
|
for (int i = 0; i < rowCount; i++)
|
|||
|
{
|
|||
|
GreenWaytab.Rows.Add(new TablePanelRow(TablePanelEntityStyle.Absolute, 45));
|
|||
|
}
|
|||
|
GreenWaytab.AutoScroll = true;
|
|||
|
GreenWaytab.Dock = DockStyle.Top;
|
|||
|
GreenWaytab.AutoSize = true;
|
|||
|
GreenWaytab.BackColor = Color.White;
|
|||
|
GreenWaytab.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
|
|||
|
|
|||
|
for (int i = 0; i < rowCount; i++)//循环行
|
|||
|
{
|
|||
|
PictureBox picture = new PictureBox();
|
|||
|
picture.SizeMode = PictureBoxSizeMode.Zoom;
|
|||
|
if (dt.Rows[i]["ReadState"].ToString() == "0")
|
|||
|
{ picture.Image = Resources.read; }
|
|||
|
else { picture.Image = Resources.unread; }
|
|||
|
GreenWaytab.SetCell(picture, i, 1);
|
|||
|
|
|||
|
LabelControl lbl = new LabelControl();
|
|||
|
lbl.Dock = DockStyle.Fill;
|
|||
|
lbl.AutoSizeMode = LabelAutoSizeMode.None;
|
|||
|
lbl.Appearance.TextOptions.HAlignment = HorzAlignment.Near;
|
|||
|
lbl.Appearance.Font = new Font("Tahoma", 12);
|
|||
|
string conten = dt.Rows[i]["Content"].ToString();
|
|||
|
if (conten.Contains("|"))
|
|||
|
{
|
|||
|
int index = conten.IndexOf("|");
|
|||
|
conten = conten.Replace(conten.Substring(conten.IndexOf('|') - 1), "");
|
|||
|
}
|
|||
|
lbl.Text = conten;
|
|||
|
GreenWaytab.SetCell(lbl, i, 2);
|
|||
|
GreenWaytab.Controls.AddRange(new Control[] { picture, lbl });
|
|||
|
}
|
|||
|
panel_Greenway.Controls.Add(GreenWaytab);
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 会议提醒动态表格渲染
|
|||
|
/// </summary>
|
|||
|
/// <param name="total"></param>
|
|||
|
/// <param name="list"></param>
|
|||
|
public void MeetingTabPanel(int total, DataTable dt)
|
|||
|
{
|
|||
|
panel_Meeting.Controls.Clear();
|
|||
|
int columnCount = 1; //列数
|
|||
|
int rowCount = total;//行数
|
|||
|
//if ((total % columnCount) > 0) rowCount++;
|
|||
|
|
|||
|
Meetingtab = new TablePanel();
|
|||
|
Meetingtab.Columns.Clear();
|
|||
|
for (int i = 0; i < columnCount; i++)
|
|||
|
{
|
|||
|
Meetingtab.Columns.Add(new TablePanelColumn(TablePanelEntityStyle.Relative, 5));
|
|||
|
Meetingtab.Columns.Add(new TablePanelColumn(TablePanelEntityStyle.Relative, 35));
|
|||
|
Meetingtab.Columns.Add(new TablePanelColumn(TablePanelEntityStyle.Relative, 25));
|
|||
|
Meetingtab.Columns.Add(new TablePanelColumn(TablePanelEntityStyle.Relative, 10));
|
|||
|
Meetingtab.Columns.Add(new TablePanelColumn(TablePanelEntityStyle.Relative, 5));
|
|||
|
}
|
|||
|
Meetingtab.Rows.Clear();
|
|||
|
for (int i = 0; i < rowCount; i++)
|
|||
|
{
|
|||
|
Meetingtab.Rows.Add(new TablePanelRow(TablePanelEntityStyle.Absolute, 45));
|
|||
|
}
|
|||
|
Meetingtab.AutoScroll = true;
|
|||
|
Meetingtab.Dock = DockStyle.Top;
|
|||
|
Meetingtab.AutoSize = true;
|
|||
|
Meetingtab.BackColor = Color.White;
|
|||
|
Meetingtab.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
|
|||
|
|
|||
|
for (int i = 0; i < rowCount; i++)//循环行
|
|||
|
{
|
|||
|
LabelControl title = new LabelControl();
|
|||
|
title.Dock = DockStyle.Fill;
|
|||
|
title.AutoSizeMode = LabelAutoSizeMode.None;
|
|||
|
title.Appearance.TextOptions.HAlignment = HorzAlignment.Near;
|
|||
|
title.Appearance.Font = new Font("Tahoma", 12);
|
|||
|
title.Text = dt.Rows[i]["Name"].ToString();
|
|||
|
Meetingtab.SetCell(title, i, 1);
|
|||
|
|
|||
|
LabelControl time = new LabelControl();
|
|||
|
time.Dock = DockStyle.Fill;
|
|||
|
time.AutoSizeMode = LabelAutoSizeMode.None;
|
|||
|
time.Appearance.TextOptions.HAlignment = HorzAlignment.Center;
|
|||
|
time.Appearance.Font = new Font("Tahoma", 12);
|
|||
|
string datetime = dt.Rows[i]["ActualDate"].ToString();
|
|||
|
if (!string.IsNullOrEmpty(datetime))
|
|||
|
datetime = Convert.ToDateTime(datetime).ToString("yyyy-MM-dd");
|
|||
|
time.Text = datetime;
|
|||
|
Meetingtab.SetCell(time, i, 2);
|
|||
|
|
|||
|
LabelControl days = new LabelControl();
|
|||
|
days.Dock = DockStyle.Fill;
|
|||
|
days.AutoSizeMode = LabelAutoSizeMode.None;
|
|||
|
days.Appearance.TextOptions.HAlignment = HorzAlignment.Center;
|
|||
|
days.Appearance.Font = new Font("Tahoma", 12, FontStyle.Bold);
|
|||
|
string day = dt.Rows[i]["SpecifiedDay"].ToString();
|
|||
|
if (!string.IsNullOrEmpty(day) && Convert.ToInt64(day) <= 0)
|
|||
|
{
|
|||
|
days.ForeColor = Color.FromArgb(255, 87, 69);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
days.ForeColor = Color.FromArgb(234, 145, 67);
|
|||
|
}
|
|||
|
days.Text = day + "天";
|
|||
|
Meetingtab.SetCell(days, i, 3);
|
|||
|
Meetingtab.Controls.AddRange(new Control[] { title, time, days });
|
|||
|
}
|
|||
|
panel_Meeting.Controls.Add(Meetingtab);
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 下次随访日期,患者姓名
|
|||
|
/// </summary>
|
|||
|
/// <param name="fNextDay"></param>
|
|||
|
/// <param name="name"></param>
|
|||
|
private void FollowUpRemind(string fNextDay, string name)
|
|||
|
{
|
|||
|
if (!string.IsNullOrEmpty(fNextDay + ""))
|
|||
|
{
|
|||
|
var dValue = Convert.ToDateTime(fNextDay).Subtract(Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd")));
|
|||
|
if (!string.IsNullOrEmpty(dValue.TotalDays + "") && int.Parse(dValue.TotalDays + "") >= 0 && int.Parse(dValue.TotalDays + "") < 7)
|
|||
|
{
|
|||
|
followUpRemindNeed += name + ";";
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public class ApoplexyCaseStatisticsModel
|
|||
|
{
|
|||
|
public string Name { get; set; }
|
|||
|
|
|||
|
public int Count { get; set; }
|
|||
|
}
|
|||
|
|
|||
|
public class ApoplexyStatisticsModel
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// 时间
|
|||
|
/// </summary>
|
|||
|
public string TimeDate { get; set; }
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 溶栓治疗数量 01
|
|||
|
/// </summary>
|
|||
|
public int ThrombolysisCount { get; set; }
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 介入治疗数量 02
|
|||
|
/// </summary>
|
|||
|
public int InterveneCount { get; set; }
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 脑出血数量 03
|
|||
|
/// </summary>
|
|||
|
public int HeadCount { get; set; }
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 颅内动脉瘤数量 04
|
|||
|
/// </summary>
|
|||
|
public int AneurysmCount { get; set; }
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// cea/cas数量 05
|
|||
|
/// </summary>
|
|||
|
public int CeaCesCount { get; set; }
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 保守治疗数量 98
|
|||
|
/// </summary>
|
|||
|
public int ConservativeCount { get; set; }
|
|||
|
}
|
|||
|
|
|||
|
public class ThrombolysisMedianModel
|
|||
|
{
|
|||
|
public string CRTime { get; set; }
|
|||
|
|
|||
|
public int Value { get; set; }
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
}
|