StableVersion4.3/HL_FristAidPlatform_Apoplexy/Form_Index.cs

401 lines
17 KiB
C#
Raw Permalink Normal View History

2024-03-11 09:47:34 +08:00
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; }
}
}
}