StableVersion4.3/HL_FristAidPlatform_Apoplexy/Form_Index.cs

401 lines
17 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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