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 { /// /// 需随访患者是否弹窗提醒 /// public int flag = 0; /// /// 需随访患者 /// public string followUpRemindNeed = ""; public TablePanel GreenWaytab; public TablePanel Meetingtab; public Form_Index() { InitializeComponent(); } /// /// 加载 /// /// /// private void Form_Index_Load(object sender, EventArgs e) { try { LoadApoplexyRemind(); List lst = DBHelpClass.GetList(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 lst1 = DBHelpClass.GetList(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 lst2 = DBHelpClass.GetList(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); } } /// /// 绿道消息 /// 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 keyValuelist = DBHelpClass.GetList(Url); string UrlCommunity = string.Format("api/service/T_Service_Apoplexy_Community/GetCommunityFollowUp?&hospitalGuid={0}", Information.Hospital.GUID); List keyValuelist1 = DBHelpClass.GetList(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(); } } } /// /// 绿道消息提醒动态表格渲染 /// /// /// 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); } /// /// 会议提醒动态表格渲染 /// /// /// 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); } /// /// 下次随访日期,患者姓名 /// /// /// 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 { /// /// 时间 /// public string TimeDate { get; set; } /// /// 溶栓治疗数量 01 /// public int ThrombolysisCount { get; set; } /// /// 介入治疗数量 02 /// public int InterveneCount { get; set; } /// /// 脑出血数量 03 /// public int HeadCount { get; set; } /// /// 颅内动脉瘤数量 04 /// public int AneurysmCount { get; set; } /// /// cea/cas数量 05 /// public int CeaCesCount { get; set; } /// /// 保守治疗数量 98 /// public int ConservativeCount { get; set; } } public class ThrombolysisMedianModel { public string CRTime { get; set; } public int Value { get; set; } } } }