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