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; }
|
||
}
|
||
|
||
}
|
||
} |