StableVersion4.3/HL_FristAidPlatform_FollowUp/Form_ChestPainFollowUpList.cs

720 lines
27 KiB
C#
Raw Permalink 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.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
{
/// <summary>
///
/// </summary>
public partial class Form_ChestPainFollowUpList : XtraForm
{
/// <summary>
/// 当前页
/// </summary>
private int curPage = 1;
/// <summary>
/// 每页大小
/// </summary>
private int pageSize = 50;
/// <summary>
/// 所有记录条数
/// </summary>
private int totalNumber = 0;
/// <summary>
/// 出院诊断 1 STEMI 2 NSTEMI 3 UA
/// </summary>
public string cp_Diagnosis_Code = "";
/// <summary>
/// 随访状态
/// </summary>
public string isFollowUp;
/// <summary>
/// 随访间隔月份
/// </summary>
public string month;
/// <summary>
/// 病例状态
/// </summary>
public string reporting;
/// <summary>
/// 需随访患者是否弹窗提醒
/// </summary>
public int flag = 0;
/// <summary>
/// 需随访患者
/// </summary>
public string followUpRemindNeed = "近期需随访患者:";
/// <summary>
///
/// </summary>
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();
}
/// <summary>
/// 弹窗提醒需要随访患者
/// </summary>
public void Loadremind()
{
string Url = string.Format("api/service/T_Service_ChestPain_FollowUpInfo/GetChestPainFollowUpList1?hospitalGuid={0}", Information.Hospital.GUID);
List<KeyValue> keyValuelist = DBHelpClass.GetList<KeyValue>(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();
}
}
}
}
/// <summary>
/// 全部
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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);
}
/// <summary>
/// 间隔一月随访
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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);
}
/// <summary>
/// 间隔三月随访
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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);
}
/// <summary>
/// 间隔六月随访
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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);
}
/// <summary>
/// 间隔十二月随访
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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);
}
/// <summary>
/// 绑定胸痛随访患者列表
/// </summary>
/// <param name="hospitalGuid"></param>
/// <param name="name"></param>
/// <param name="startDate"></param>
/// <param name="endDate"></param>
/// <param name="cp_Diagnosis_Code"></param>
/// <param name="status"></param>
/// <param name="month"></param>
/// <param name="pageSize"></param>
/// <param name="pageIndex"></param>
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);//更新分页控件显示。
}
/// <summary>
/// 转换显示文字
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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<FollowUpDataUploadDTO>(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;
}
}
/// <summary>
/// 防止子窗体再度打开
/// </summary>
/// <param name="p_ChildrenFormText"></param>
/// <param name="MdiParentForm"></param>
/// <returns></returns>
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;
}
/// <summary>
/// 随访数据-上传
/// </summary>
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();
}
}
}