using DevExpress.XtraEditors; using HL_FristAidPlatform_DTO; using HL_FristAidPlatform_Public; using System; using System.Collections.Generic; using System.Data; using System.Drawing; using System.IO; using System.Net; using System.Security.Cryptography; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; namespace HL_FristAidPlatform_FollowUp { /// /// /// public partial class Form_ChestPainFollowUpList : XtraForm { /// /// 当前页 /// private int curPage = 1; /// /// 每页大小 /// private int pageSize = 50; /// /// 所有记录条数 /// private int totalNumber = 0; /// /// 出院诊断 1 STEMI 2 NSTEMI 3 UA /// public string cp_Diagnosis_Code = ""; /// /// 随访状态 /// public string isFollowUp; /// /// 随访间隔月份 /// public string month; /// /// 病例状态 /// public string reporting; /// /// 需随访患者是否弹窗提醒 /// public int flag = 0; /// /// 需随访患者 /// public string followUpRemindNeed = "近期需随访患者:"; /// /// /// public Form_ChestPainFollowUpList() { InitializeComponent(); } private void Form_ChestPainFollowUpList_Load(object sender, EventArgs e) { GetFollowUpDate(txt_name.Text, time_startDate.TimeValue, time_endDate.TimeValue, cp_Diagnosis_Code, isFollowUp, month, reporting, pageSize, curPage); Loadremind(); } /// /// 弹窗提醒需要随访患者 /// public void Loadremind() { string Url = string.Format("api/service/T_Service_ChestPain_FollowUpInfo/GetChestPainFollowUpList1?hospitalGuid={0}", Information.Hospital.GUID); List keyValuelist = DBHelpClass.GetList(Url); if (flag == 0) { if (keyValuelist != null && keyValuelist.Count > 0) { for (int i = 0; i < keyValuelist.Count; i++) { followUpRemindNeed += keyValuelist[i].Key + ";"; } flag = 1; //弹窗提醒需随访患者 if (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(); } } } } /// /// 全部 /// /// /// private void lbl_all_Click(object sender, EventArgs e) { lbl_all.ForeColor = Color.White; lbl_all.Appearance.BackColor = Color.FromArgb(45, 140, 240); lbl_January.ForeColor = Color.FromArgb(103, 103, 103); lbl_January.Appearance.BackColor = Color.FromArgb(221, 221, 221); lbl_March.ForeColor = Color.FromArgb(103, 103, 103); lbl_March.Appearance.BackColor = Color.FromArgb(221, 221, 221); lbl_June.ForeColor = Color.FromArgb(103, 103, 103); lbl_June.Appearance.BackColor = Color.FromArgb(221, 221, 221); lbl_December.ForeColor = Color.FromArgb(103, 103, 103); lbl_December.Appearance.BackColor = Color.FromArgb(221, 221, 221); month = ""; GetFollowUpDate(txt_name.Text, time_startDate.TimeValue, time_endDate.TimeValue, cp_Diagnosis_Code, isFollowUp, month, reporting, pageSize, curPage); } /// /// 间隔一月随访 /// /// /// private void lbl_January_Click(object sender, EventArgs e) { lbl_all.ForeColor = Color.FromArgb(103, 103, 103); lbl_all.Appearance.BackColor = Color.FromArgb(221, 221, 221); lbl_January.ForeColor = Color.White; lbl_January.Appearance.BackColor = Color.FromArgb(45, 140, 240); lbl_March.ForeColor = Color.FromArgb(103, 103, 103); lbl_March.Appearance.BackColor = Color.FromArgb(221, 221, 221); lbl_June.ForeColor = Color.FromArgb(103, 103, 103); lbl_June.Appearance.BackColor = Color.FromArgb(221, 221, 221); lbl_December.ForeColor = Color.FromArgb(103, 103, 103); lbl_December.Appearance.BackColor = Color.FromArgb(221, 221, 221); month = "1"; GetFollowUpDate(txt_name.Text, time_startDate.TimeValue, time_endDate.TimeValue, cp_Diagnosis_Code, isFollowUp, month, reporting, pageSize, curPage); } /// /// 间隔三月随访 /// /// /// private void lbl_March_Click(object sender, EventArgs e) { lbl_all.ForeColor = Color.FromArgb(103, 103, 103); lbl_all.Appearance.BackColor = Color.FromArgb(221, 221, 221); lbl_January.ForeColor = Color.FromArgb(103, 103, 103); lbl_January.Appearance.BackColor = Color.FromArgb(221, 221, 221); lbl_March.ForeColor = Color.White; lbl_March.Appearance.BackColor = Color.FromArgb(45, 140, 240); lbl_June.ForeColor = Color.FromArgb(103, 103, 103); lbl_June.Appearance.BackColor = Color.FromArgb(221, 221, 221); lbl_December.ForeColor = Color.FromArgb(103, 103, 103); lbl_December.Appearance.BackColor = Color.FromArgb(221, 221, 221); month = "3"; GetFollowUpDate(txt_name.Text, time_startDate.TimeValue, time_endDate.TimeValue, cp_Diagnosis_Code, isFollowUp, month, reporting, pageSize, curPage); } /// /// 间隔六月随访 /// /// /// private void lbl_June_Click(object sender, EventArgs e) { lbl_all.ForeColor = Color.FromArgb(103, 103, 103); lbl_all.Appearance.BackColor = Color.FromArgb(221, 221, 221); lbl_January.ForeColor = Color.FromArgb(103, 103, 103); lbl_January.Appearance.BackColor = Color.FromArgb(221, 221, 221); lbl_March.ForeColor = Color.FromArgb(103, 103, 103); lbl_March.Appearance.BackColor = Color.FromArgb(221, 221, 221); lbl_June.ForeColor = Color.White; lbl_June.Appearance.BackColor = Color.FromArgb(45, 140, 240); lbl_December.ForeColor = Color.FromArgb(103, 103, 103); lbl_December.Appearance.BackColor = Color.FromArgb(221, 221, 221); month = "6"; GetFollowUpDate(txt_name.Text, time_startDate.TimeValue, time_endDate.TimeValue, cp_Diagnosis_Code, isFollowUp, month, reporting, pageSize, curPage); } /// /// 间隔十二月随访 /// /// /// private void lbl_December_Click(object sender, EventArgs e) { lbl_all.ForeColor = Color.FromArgb(103, 103, 103); lbl_all.Appearance.BackColor = Color.FromArgb(221, 221, 221); lbl_January.ForeColor = Color.FromArgb(103, 103, 103); lbl_January.Appearance.BackColor = Color.FromArgb(221, 221, 221); lbl_March.ForeColor = Color.FromArgb(103, 103, 103); lbl_March.Appearance.BackColor = Color.FromArgb(221, 221, 221); lbl_June.ForeColor = Color.FromArgb(103, 103, 103); lbl_June.Appearance.BackColor = Color.FromArgb(221, 221, 221); lbl_December.ForeColor = Color.White; lbl_December.Appearance.BackColor = Color.FromArgb(45, 140, 240); month = "12"; GetFollowUpDate(txt_name.Text, time_startDate.TimeValue, time_endDate.TimeValue, cp_Diagnosis_Code, isFollowUp, month, reporting, pageSize, curPage); } /// /// 绑定胸痛随访患者列表 /// /// /// /// /// /// /// /// /// /// public void GetFollowUpDate(string name, string startDate, string endDate, string cp_Diagnosis_Code, string status, string month, string reporting, int pageSize, int pageIndex) { string Url = string.Format("api/service/T_Service_ChestPain_FollowUpInfo/GetChestPainFollowUpList?hospitalGuid={0}&name={1}&startDate={2}&endDate={3}&cp_Diagnosis_Code={4}&status={5}&month={6}&reporting={7}&pageSize={8}&pageIndex={9}", Information.Hospital.GUID, name, startDate, endDate, cp_Diagnosis_Code, status, month, reporting, pageSize, pageIndex); DataTable dt = DBHelpClass.Get(Url); gridControl1.DataSource = dt; gridView1.BestFitColumns();//列宽自适应 gridView1.Appearance.EvenRow.BackColor = Color.FromArgb(245, 245, 245); gridView1.Appearance.OddRow.BackColor = Color.FromArgb(255, 255, 255); gridView1.OptionsView.EnableAppearanceEvenRow = true; gridView1.OptionsView.EnableAppearanceOddRow = true; totalNumber = DBHelpClass.TotalNumber; userControlForPage1.RefreshPager(pageSize, totalNumber, curPage);//更新分页控件显示。 } /// /// 转换显示文字 /// /// /// private void gridView1_CustomColumnDisplayText(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventArgs e) { if (e.Column.FieldName == "Gender") { string value = e.Value.ToString(); if (value == "0") { e.DisplayText = "未知"; } if (value == "1") { e.DisplayText = "男"; } if (value == "2") { e.DisplayText = "女"; } } if (e.Column.FieldName == "status") { string value = e.Value.ToString(); if (value == "1") { e.DisplayText = "保存草稿"; } if (value == "2") { e.DisplayText = "提交"; } } if (e.Column.FieldName == "isFollowUp") { string value = e.Value.ToString(); if (value == "1") { e.DisplayText = "已随访"; } if (value == "2") { e.DisplayText = "未随访"; } } if (e.Column.FieldName == "CountDown") { if (!string.IsNullOrEmpty(e.Value.ToString())) { int value = int.Parse(e.Value.ToString()); if (value <= 0) e.DisplayText = "已到随访时间"; } } if (e.Column.FieldName == "CP_Diagnosis_Code") { string value = e.Value.ToString(); if (value == "1") { e.DisplayText = "STEMI"; } if (value == "2") { e.DisplayText = "NSTEMI"; } if (value == "3") { e.DisplayText = "UA"; } } if (e.Column.FieldName == "OverdueDays") { string value = e.Value.ToString(); if (value == "0") { e.DisplayText = ""; } } if (e.Column.FieldName == "FollowUpStartDate") { string value = e.Value.ToString(); if (!string.IsNullOrEmpty(value)) { e.DisplayText = Convert.ToDateTime(value).ToString("yyyy-MM-dd"); } } if (e.Column.FieldName == "FollowUpEndDate") { string value = e.Value.ToString(); if (!string.IsNullOrEmpty(value)) { e.DisplayText = Convert.ToDateTime(value).ToString("yyyy-MM-dd"); } } } private void simpleButton1_Click(object sender, EventArgs e) { GetFollowUpDate(txt_name.Text, time_startDate.TimeValue, time_endDate.TimeValue, cp_Diagnosis_Code, isFollowUp, month, reporting, pageSize, curPage); } private void radio_followupAll_CheckedChanged(object sender, EventArgs e) { if (radio_followupAll.Checked == true) isFollowUp = ""; } private void radio_nufollowup_CheckedChanged(object sender, EventArgs e) { if (radio_nufollowup.Checked == true) isFollowUp = "0"; } private void radio_followup_CheckedChanged(object sender, EventArgs e) { if (radio_followup.Checked == true) isFollowUp = "1"; } private void com_cp_Diagnosis_Code_SelectedValueChanged(object sender, EventArgs e) { if (com_cp_Diagnosis_Code.Text == "请选择") { com_cp_Diagnosis_Code.ForeColor = System.Drawing.Color.FromArgb(128, 134, 149); } else { com_cp_Diagnosis_Code.ForeColor = System.Drawing.Color.FromArgb(64, 64, 64); switch (com_cp_Diagnosis_Code.Text) { case "STEMI": cp_Diagnosis_Code = "1"; break; case "NSTEMI": cp_Diagnosis_Code = "2"; break; case "UA": cp_Diagnosis_Code = "3"; break; } } } private void repositoryItemButtonEdit1_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e) { int selectRow = gridView1.GetSelectedRows()[0]; string _guid = PublicClass.ToString(gridView1.GetRowCellValue(selectRow, "registerId"), ""); string _month = PublicClass.ToString(gridView1.GetRowCellValue(selectRow, "month"), ""); switch (e.Button.Caption) { case "随访详情": Form_ChestPainFollowUpDetail detail = new Form_ChestPainFollowUpDetail(_guid, _month); detail.Owner = this; detail.ShowDialog(); break; case "上传": FollowUpDataUploadDTO dto = new FollowUpDataUploadDTO(); switch (_month) { case "1月随访": _month = "1"; break; case "3月随访": _month = "3"; break; case "6月随访": _month = "6"; break; case "12月随访": _month = "12"; break; } string url = string.Format("api/service/T_Service_ChestPain_FollowUpInfo/GetFollowUpDataUpload?registerId={0}&month={1}", _guid, "3"); dto = DBHelpClass.GetDateModel(url); if (dto != null) { if (string.IsNullOrEmpty(dto.registerId)) { XtraMessageBox.Show("患者id为空,数据错误无法上传"); return; } if (string.IsNullOrEmpty(dto.CP_DIAGNOSIS_CODE)) { XtraMessageBox.Show("出院诊断值不能为空,数据错误无法上传"); return; } if (string.IsNullOrEmpty(dto.LEAVE_TIME.ToString())) { XtraMessageBox.Show("出院时间值不能为空,数据错误无法上传"); return; } if (string.IsNullOrEmpty(dto.OUTCOME_CODE)) { XtraMessageBox.Show("出院类型值不能为空,数据错误无法上传"); return; } System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer(); string str = serializer.Serialize(dto); //string str = ""; ; PostData(str); } break; } } /// /// 防止子窗体再度打开 /// /// /// /// public static bool ShowChildForm(string p_ChildrenFormText, Form MdiParentForm) { int i; //依次检测当前窗体的子窗体 for (i = 0; i < MdiParentForm.MdiChildren.Length; i++) { //判断当前子窗体的Text属性值是否与传入的字符串值相同 if (MdiParentForm.MdiChildren[i].Name == p_ChildrenFormText) { //如果值相同则表示此子窗体为想要调用的子窗体,激活此子窗体并返回true值 MdiParentForm.MdiChildren[i].Activate(); return true; } } //如果没有相同的值则表示要调用的子窗体还没有被打开,返回false值 return false; } /// /// 随访数据-上传 /// public void PostData(string data) { //string data = "{}"; string url = "https://data.chinacpc.org/FollowUPUpload/PushData"; string appId = "10009"; string secretKey = "0f4f7c82efb91a37fe7c2b79b7fe8e01"; string requestId = Guid.NewGuid().ToString(); string time = DateTime.Now.ToString("yyyyMMddHHmmss"); var signPlain = new StringBuilder(); signPlain.Append(time); signPlain.Append(requestId); var sign = HmacSHA256(signPlain.ToString().ToUpper(), secretKey); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "POST"; request.ContentType = "application/json"; request.Headers.Add("time", time); request.Headers.Add("appId", appId); request.Headers.Add("requestId", requestId); request.Headers.Add("sign", sign); var dataToPost = Encoding.UTF8.GetBytes(data); request.ContentLength = dataToPost.Length; using (var requestStream = request.GetRequestStream()) { requestStream.Write(dataToPost, 0, dataToPost.Length); } try { using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { var responseStream = response.GetResponseStream(); if (responseStream != null) { using (StreamReader reader = new StreamReader(responseStream)) { var content = reader.ReadToEnd(); //"{\"ResultCode\":\"403\",\"Message\":\"签名无效\",\"Error\":\"AppId不存在\",\"Data\":null} MessageBox.Show(content); } } } } catch (WebException ex) { using (HttpWebResponse response = (HttpWebResponse)ex.Response) { var responseStream = response.GetResponseStream(); if (responseStream != null) { using (StreamReader reader = new StreamReader(responseStream)) { var content = reader.ReadToEnd(); Console.WriteLine(content); } } } } } private string HmacSHA256(string message, string signKey) { string signRet = string.Empty; using (HMACSHA256 mac = new HMACSHA256(Encoding.UTF8.GetBytes(signKey))) { byte[] hash = mac.ComputeHash(Encoding.UTF8.GetBytes(message)); //signRet = Convert.ToBase64String(hash); signRet = ToHexString(hash); } //bf7e5af635ac685b82b399ea02db6e05a9b307af232ec7154789241416517ed1 return signRet; } //byte[]转16进制格式string public static string ToHexString(byte[] bytes) { string hexString = string.Empty; if (bytes != null) { StringBuilder strB = new StringBuilder(); foreach (byte b in bytes) { strB.AppendFormat("{0:x2}", b); } hexString = strB.ToString(); } return hexString; } private void simpleButton3_Click(object sender, EventArgs e) { txt_name.Text = ""; time_startDate.TimeValue = ""; time_endDate.TimeValue = ""; radio_followupAll.Checked = true; com_cp_Diagnosis_Code.Text = ""; month = ""; cp_Diagnosis_Code = ""; cmb_reporting.Text = ""; reporting = ""; GetFollowUpDate(txt_name.Text, time_startDate.TimeValue, time_endDate.TimeValue, cp_Diagnosis_Code, isFollowUp, month, reporting, pageSize, curPage); } private void gridControl1_MouseDoubleClick(object sender, MouseEventArgs e) { int selectRow = gridView1.GetSelectedRows()[0]; if (selectRow >= 0) { MdiChildrenClose(); if (!ShowChildrenForm("Form_PatientTransferOthers")) { string _guid = PublicClass.ToString(gridView1.GetRowCellValue(selectRow, "registerId"), ""); string _month = PublicClass.ToString(gridView1.GetRowCellValue(selectRow, "month"), ""); Form_ChestPainFollowUpDetail detail = new Form_ChestPainFollowUpDetail(_guid, _month); detail.Owner = this; detail.ShowDialog(); } } } private bool ShowChildrenForm(string p_ChildrenFormText) { int i; //依次检测当前窗体的子窗体 for (i = 0; i < MdiChildren.Length; i++) { //判断当前子窗体的Text属性值是否与传入的字符串值相同 if (MdiChildren[i].Name == p_ChildrenFormText) { //如果值相同则表示此子窗体为想要调用的子窗体,激活此子窗体并返回true值 MdiChildren[i].Activate(); return true; } } //如果没有相同的值则表示要调用的子窗体还没有被打开,返回false值 return false; } public void MdiChildrenClose() { //关闭所有已经打开的子窗体 if (MdiChildren.Length > 0) { foreach (Form myForm in this.MdiChildren) { myForm.Close(); } } } public void ExportEvents(bool singlePage)//单页,所有 { } private void MyPagerEvents(int curPage, int pageSize) { this.curPage = curPage; this.pageSize = pageSize; GetFollowUpDate(txt_name.Text, time_startDate.TimeValue, time_endDate.TimeValue, cp_Diagnosis_Code, isFollowUp, month, reporting, pageSize, curPage); } private void userControlForPage1_myPagerEvents(int curPage, int pageSize) { userControlForPage1.myPagerEvents += MyPagerEvents; } private void userControlForPage1_exportEvents(bool singlePage) { userControlForPage1.exportEvents += ExportEvents; } private void gridView1_CustomDrawCell(object sender, DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e) { if (e.Column.FieldName == "isFollowUp") { string auditstatus = gridView1.GetRowCellValue(e.RowHandle, "isFollowUp").ToString(); if (auditstatus == "已随访") //条件判断 { e.Appearance.ForeColor = Color.FromArgb(33, 166, 117); } else { e.Appearance.ForeColor = Color.FromArgb(250, 53, 52); } } } private void cmb_reporting_SelectedValueChanged(object sender, EventArgs e) { if (cmb_reporting.Text == "请选择") { cmb_reporting.ForeColor = System.Drawing.Color.FromArgb(128, 134, 149); } else { cmb_reporting.ForeColor = System.Drawing.Color.FromArgb(64, 64, 64); switch (cmb_reporting.Text) { case "保存草稿": reporting = "1"; break; case "提交": reporting = "2"; break; } } } private void gridView1_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e) { if (e.Info.IsRowIndicator && e.RowHandle >= 0) e.Info.DisplayText = (e.RowHandle + 1).ToString(); } } }