using DevExpress.XtraEditors;
using HL_FristAidPlatform_DTO;
using HL_FristAidPlatform_Public;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Net;
using System.Security.Cryptography;
using System.Text;
using System.Windows.Forms;
namespace HL_FristAidPlatform_FollowUp
{
///
/// 随访详情
///
public partial class Form_ChestPainFollowUpDetail : XtraForm
{
///
/// 月份
///
public string month;
///
///
///
public int content = 1;
///
///
///
public string followUp;
///
/// 基本信息
///
public UC_FollowUpInfo Info;
///
/// 危险因素
///
public UC_FollowUpRiskReason RiskReason;
///
/// 躯体症状
///
public UC_FollowUpSomaticSymptoms SomaticSymptoms;
///
/// 检查项目
///
public UC_FollowUpInspectionItem InspectionItem;
///
/// 用药信息
///
public UC_FollowUpMedication Medication;
public string registerId;
public string status;
FollowUpDataUploadDTO FollowDto;
///
/// 随访详情
///
public Form_ChestPainFollowUpDetail(string _registerId, string _month)
{
InitializeComponent();
registerId = _registerId;
month = _month;
}
private void Form1_Load(object sender, EventArgs e)
{
GetRegisterInfo();
}
///
///
///
public void GetRegisterInfo()
{
RegisterInfoDTO dto = new RegisterInfoDTO();
string url = string.Format("api/service/T_Service_ChestPain_FollowUpInfo/GetRegisterInfo?registerId={0}", registerId);
dto = DBHelpClass.GetDateModel(url);
if (dto != null)
{
followUp = dto.isFollowUp;
if (followUp == "1")
{
panel_WXYS.Visible = true;
panel_QTZZ.Visible = true;
panel_JCXM.Visible = true;
panel_YYXX.Visible = true;
}
else
{
panel_WXYS.Visible = false;
panel_QTZZ.Visible = false;
panel_JCXM.Visible = false;
panel_YYXX.Visible = false;
}
lbl_name.Text = dto.Name;
lbl_Age.Text = dto.Age.ToString();
if (dto.Gender == 0) lbl_Gender.Text = "未知";
if (dto.Gender == 1) lbl_Gender.Text = "男";
if (dto.Gender == 2) lbl_Gender.Text = "女";
if (dto.CP_Diagnosis_Code == "1") lbl_CP_Diagnosis_Code.Text = "STEMI";
if (dto.CP_Diagnosis_Code == "2") lbl_CP_Diagnosis_Code.Text = "NSTEMI";
if (dto.CP_Diagnosis_Code == "3") lbl_CP_Diagnosis_Code.Text = "UA";
if (dto.CP_Diagnosis_Code == "4") lbl_CP_Diagnosis_Code.Text = "主动脉夹层";
if (dto.CP_Diagnosis_Code == "5") lbl_CP_Diagnosis_Code.Text = "肺动脉栓塞";
if (dto.CP_Diagnosis_Code == "6") lbl_CP_Diagnosis_Code.Text = "非ACS心源性胸痛";
if (dto.CP_Diagnosis_Code == "7") lbl_CP_Diagnosis_Code.Text = "其它非心源性胸痛";
if (dto.CP_Diagnosis_Code == "8") lbl_CP_Diagnosis_Code.Text = "待查";
if (!string.IsNullOrEmpty(dto.Attack_Time.ToString())) lbl_Attack_Time.Text = Convert.ToDateTime(dto.Attack_Time).ToString("yyyy-MM-dd");
if (!string.IsNullOrEmpty(dto.Leave_Time.ToString())) lbl_Leave_Time.Text = Convert.ToDateTime(dto.Leave_Time).ToString("yyyy-MM-dd");
if (dto.STEMI_Measures == "1") lbl_STEMI_Measures.Text = "直接PCI";
if (dto.STEMI_Measures == "2") lbl_STEMI_Measures.Text = "溶栓";
if (dto.STEMI_Measures == "3") lbl_STEMI_Measures.Text = "择期介入";
if (dto.STEMI_Measures == "4") lbl_STEMI_Measures.Text = "CABG";
if (dto.STEMI_Measures == "5") lbl_STEMI_Measures.Text = "转运PCI";
}
if (month == "1月随访")
{
month = "1";
lbl_January.ForeColor = Color.FromArgb(45, 140, 240);
lbl_January.BackColor = Color.White;
lbl_March.ForeColor = Color.White;
lbl_March.BackColor = Color.FromArgb(45, 140, 240);
lbl_June.ForeColor = Color.White;
lbl_June.BackColor = Color.FromArgb(45, 140, 240);
lbl_December.ForeColor = Color.White;
lbl_December.BackColor = Color.FromArgb(45, 140, 240);
panelMain.Controls.Clear();
Info = new UC_FollowUpInfo(registerId, "1");
panelMain.Controls.Add(Info);
}
if (month == "3月随访")
{
month = "3";
lbl_March.ForeColor = Color.FromArgb(45, 140, 240);
lbl_March.BackColor = Color.White;
lbl_June.ForeColor = Color.White;
lbl_June.BackColor = Color.FromArgb(45, 140, 240);
lbl_December.ForeColor = Color.White;
lbl_December.BackColor = Color.FromArgb(45, 140, 240);
lbl_January.ForeColor = Color.White;
lbl_January.BackColor = Color.FromArgb(45, 140, 240);
panelMain.Controls.Clear();
Info = new UC_FollowUpInfo(registerId, "3");
panelMain.Controls.Add(Info);
}
if (month == "6月随访")
{
month = "6";
lbl_June.ForeColor = Color.FromArgb(45, 140, 240);
lbl_June.BackColor = Color.White;
lbl_March.ForeColor = Color.White;
lbl_March.BackColor = Color.FromArgb(45, 140, 240);
lbl_December.ForeColor = Color.White;
lbl_December.BackColor = Color.FromArgb(45, 140, 240);
lbl_January.ForeColor = Color.White;
lbl_January.BackColor = Color.FromArgb(45, 140, 240);
}
if (month == "12月随访")
{
month = "12";
lbl_December.ForeColor = Color.FromArgb(45, 140, 240);
lbl_December.BackColor = Color.White;
lbl_March.ForeColor = Color.White;
lbl_March.BackColor = Color.FromArgb(45, 140, 240);
lbl_June.ForeColor = Color.White;
lbl_June.BackColor = Color.FromArgb(45, 140, 240);
lbl_January.ForeColor = Color.White;
lbl_January.BackColor = Color.FromArgb(45, 140, 240);
}
panelMain.Controls.Clear();
Info = new UC_FollowUpInfo(registerId, month);
panelMain.Controls.Add(Info);
}
private void lbl_March_Click(object sender, EventArgs e)
{
month = "3";
lbl_March.ForeColor = Color.FromArgb(45, 140, 240);
lbl_March.BackColor = Color.White;
lbl_June.ForeColor = Color.White;
lbl_June.BackColor = Color.FromArgb(45, 140, 240);
lbl_December.ForeColor = Color.White;
lbl_December.BackColor = Color.FromArgb(45, 140, 240);
lbl_January.ForeColor = Color.White;
lbl_January.BackColor = Color.FromArgb(45, 140, 240);
RefreshMethod(content, month);
}
private void lbl_June_Click(object sender, EventArgs e)
{
month = "6";
lbl_June.ForeColor = Color.FromArgb(45, 140, 240);
lbl_June.BackColor = Color.White;
lbl_March.ForeColor = Color.White;
lbl_March.BackColor = Color.FromArgb(45, 140, 240);
lbl_December.ForeColor = Color.White;
lbl_December.BackColor = Color.FromArgb(45, 140, 240);
lbl_January.ForeColor = Color.White;
lbl_January.BackColor = Color.FromArgb(45, 140, 240);
RefreshMethod(content, month);
}
private void lbl_January_Click(object sender, EventArgs e)
{
month = "1";
lbl_January.ForeColor = Color.FromArgb(45, 140, 240);
lbl_January.BackColor = Color.White;
lbl_March.ForeColor = Color.White;
lbl_March.BackColor = Color.FromArgb(45, 140, 240);
lbl_June.ForeColor = Color.White;
lbl_June.BackColor = Color.FromArgb(45, 140, 240);
lbl_December.ForeColor = Color.White;
lbl_December.BackColor = Color.FromArgb(45, 140, 240);
RefreshMethod(content, month);
}
private void lbl_December_Click(object sender, EventArgs e)
{
month = "12";
lbl_December.ForeColor = Color.FromArgb(45, 140, 240);
lbl_December.BackColor = Color.White;
lbl_March.ForeColor = Color.White;
lbl_March.BackColor = Color.FromArgb(45, 140, 240);
lbl_June.ForeColor = Color.White;
lbl_June.BackColor = Color.FromArgb(45, 140, 240);
lbl_January.ForeColor = Color.White;
lbl_January.BackColor = Color.FromArgb(45, 140, 240);
RefreshMethod(content, month);
}
private void lbl_WXYS_Click(object sender, EventArgs e)
{
lbl_WXYS.BackColor = Color.FromArgb(236, 245, 255);
lbl_WXYS.ForeColor = Color.FromArgb(45, 140, 240);
lbl_JBXX.BackColor = Color.White;
lbl_JBXX.ForeColor = Color.FromArgb(92, 173, 255);
lbl_QTZZ.BackColor = Color.White;
lbl_QTZZ.ForeColor = Color.FromArgb(92, 173, 255);
lbl_JCXM.BackColor = Color.White;
lbl_JCXM.ForeColor = Color.FromArgb(92, 173, 255);
lbl_YYXX.BackColor = Color.White;
lbl_YYXX.ForeColor = Color.FromArgb(92, 173, 255);
content = 2;
panelMain.Controls.Clear();
RiskReason = new UC_FollowUpRiskReason(registerId, month);
panelMain.Controls.Add(RiskReason);
}
private void lbl_QTZZ_Click(object sender, EventArgs e)
{
lbl_QTZZ.BackColor = Color.FromArgb(236, 245, 255);
lbl_QTZZ.ForeColor = Color.FromArgb(45, 140, 240);
lbl_JBXX.BackColor = Color.White;
lbl_JBXX.ForeColor = Color.FromArgb(92, 173, 255);
lbl_WXYS.BackColor = Color.White;
lbl_WXYS.ForeColor = Color.FromArgb(92, 173, 255);
lbl_JCXM.BackColor = Color.White;
lbl_JCXM.ForeColor = Color.FromArgb(92, 173, 255);
lbl_YYXX.BackColor = Color.White;
lbl_YYXX.ForeColor = Color.FromArgb(92, 173, 255);
content = 3;
panelMain.Controls.Clear();
SomaticSymptoms = new UC_FollowUpSomaticSymptoms(registerId, month);
panelMain.Controls.Add(SomaticSymptoms);
}
private void lbl_JCXM_Click(object sender, EventArgs e)
{
lbl_JCXM.BackColor = Color.FromArgb(236, 245, 255);
lbl_JCXM.ForeColor = Color.FromArgb(45, 140, 240);
lbl_JBXX.BackColor = Color.White;
lbl_JBXX.ForeColor = Color.FromArgb(92, 173, 255);
lbl_WXYS.BackColor = Color.White;
lbl_WXYS.ForeColor = Color.FromArgb(92, 173, 255);
lbl_QTZZ.BackColor = Color.White;
lbl_QTZZ.ForeColor = Color.FromArgb(92, 173, 255);
lbl_YYXX.BackColor = Color.White;
lbl_YYXX.ForeColor = Color.FromArgb(92, 173, 255);
content = 4;
panelMain.Controls.Clear();
InspectionItem = new UC_FollowUpInspectionItem(registerId, month);
panelMain.Controls.Add(InspectionItem);
}
private void lbl_YYXX_Click(object sender, EventArgs e)
{
lbl_YYXX.BackColor = Color.FromArgb(236, 245, 255);
lbl_YYXX.ForeColor = Color.FromArgb(45, 140, 240);
lbl_JBXX.BackColor = Color.White;
lbl_JBXX.ForeColor = Color.FromArgb(92, 173, 255);
lbl_WXYS.BackColor = Color.White;
lbl_WXYS.ForeColor = Color.FromArgb(92, 173, 255);
lbl_QTZZ.BackColor = Color.White;
lbl_QTZZ.ForeColor = Color.FromArgb(92, 173, 255);
lbl_JCXM.BackColor = Color.White;
lbl_JCXM.ForeColor = Color.FromArgb(92, 173, 255);
content = 5;
panelMain.Controls.Clear();
Medication = new UC_FollowUpMedication(registerId, month);
panelMain.Controls.Add(Medication);
}
///
/// 界面刷新切换方法
///
///
///
public void RefreshMethod(int content, string month)
{
if (content == 1)
{
panelMain.Controls.Clear();
Info = new UC_FollowUpInfo(registerId, month);
panelMain.Controls.Add(Info);
}
if (content == 2)
{
panelMain.Controls.Clear();
RiskReason = new UC_FollowUpRiskReason(registerId, month);
panelMain.Controls.Add(RiskReason);
RiskReason.Dock = DockStyle.Fill;
}
if (content == 3)
{
panelMain.Controls.Clear();
SomaticSymptoms = new UC_FollowUpSomaticSymptoms(registerId, month);
panelMain.Controls.Add(SomaticSymptoms);
SomaticSymptoms.Dock = DockStyle.Fill;
}
if (content == 4)
{
panelMain.Controls.Clear();
InspectionItem = new UC_FollowUpInspectionItem(registerId, month);
panelMain.Controls.Add(InspectionItem);
InspectionItem.Dock = DockStyle.Fill;
}
if (content == 5)
{
panelMain.Controls.Clear();
Medication = new UC_FollowUpMedication(registerId, month);
panelMain.Controls.Add(Medication);
}
}
private class RegisterInfoDTO
{
///
/// 是否随访
/// 1:是 0:否
///
public string isFollowUp { get; set; }
///
/// 姓名
///
public string Name { get; set; }
///
/// 性别
///
public int Gender { get; set; }
///
/// 年龄
///
public int Age { get; set; }
///
/// 出院时间
///
public DateTime? Leave_Time { get; set; }
///
/// 出院诊断
///
public string CP_Diagnosis_Code { get; set; }
///
/// 发病时间
///
public DateTime? Attack_Time { get; set; }
///
/// 措施
/// 1:直接PCI
/// 2:溶栓
/// 3:择期介入
/// 4:CABG
/// 5:转运 PCI
///
public string STEMI_Measures { get; set; }
}
private void lbl_JBXX_Click(object sender, EventArgs e)
{
lbl_JBXX.BackColor = Color.FromArgb(236, 245, 255);
lbl_JBXX.ForeColor = Color.FromArgb(45, 140, 240);
lbl_WXYS.BackColor = Color.White;
lbl_WXYS.ForeColor = Color.FromArgb(92, 173, 255);
lbl_QTZZ.BackColor = Color.White;
lbl_QTZZ.ForeColor = Color.FromArgb(92, 173, 255);
lbl_JCXM.BackColor = Color.White;
lbl_JCXM.ForeColor = Color.FromArgb(92, 173, 255);
lbl_YYXX.BackColor = Color.White;
lbl_YYXX.ForeColor = Color.FromArgb(92, 173, 255);
content = 1;
panelMain.Controls.Clear();
Info = new UC_FollowUpInfo(registerId, month);
panelMain.Controls.Add(Info);
Info.Dock = DockStyle.Fill;
// Info.EventMethos += IsFollowMethos;
}
//private void IsFollowMethos(string _isfollow)
//{
// isfollowUp = _isfollow;
// //放弃治疗无需继续填写转归信息
// if (isfollowUp == "1")
// {
// panel_WXYS.Visible = true;
// panel_QTZZ.Visible = true;
// panel_JCXM.Visible = true;
// panel_YYXX.Visible = true;
// }
// else
// {
// panel_WXYS.Visible = false;
// panel_QTZZ.Visible = false;
// panel_JCXM.Visible = false;
// panel_YYXX.Visible = false;
// }
//}
///
/// 保存草稿
///
///
///
private void simpleButton2_Click(object sender, EventArgs e)
{
if (content == 1)
{
Info.SaveFollowUpInfo(status);
GetRegisterInfo();
}
if (content == 2)
RiskReason.SaveFollowUpRiskReason(status);
if (content == 3)
SomaticSymptoms.SaveFollowUpSomaticSymptoms(status);
if (content == 4)
InspectionItem.submit(status);
if (content == 5)
Medication.SaveFollowUpMedication(status);
}
private void simpleButton1_Click(object sender, EventArgs e)
{
try
{
string url = string.Format("api/service/T_Service_ChestPain_FollowUpInfo/GetFollowUpDataUpload?registerId={0}&month={1}", registerId, month);
FollowDto = DBHelpClass.GetDateModel(url);
if (FollowDto != null)
{
if (string.IsNullOrEmpty(FollowDto.registerId))
{
XtraMessageBox.Show("患者id为空,数据错误无法上传");
return;
}
if (string.IsNullOrEmpty(FollowDto.CP_DIAGNOSIS_CODE))
{
XtraMessageBox.Show("出院诊断值不能为空,数据错误无法上传");
return;
}
if (string.IsNullOrEmpty(FollowDto.LEAVE_TIME.ToString()))
{
XtraMessageBox.Show("出院时间值不能为空,数据错误无法上传");
return;
}
if (string.IsNullOrEmpty(FollowDto.OUTCOME_CODE))
{
XtraMessageBox.Show("出院类型值不能为空,数据错误无法上传");
return;
}
System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
string str = serializer.Serialize(FollowDto);
//string str = ""; ;
PostData(str);
}
else
{
XtraMessageBox.Show("请先完善患者随访信息");
}
}
catch (Exception ex)
{
throw ex;
}
}
///
/// 随访数据-上传
///
public void PostData(string data)
{
//string data = "{}";
string url = "https://data.chinacpc.org/FollowUPUpload/PushData";
string appId = FollowDto.AppId;//"10009";
string secretKey = FollowDto.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();
JObject jo = (JObject)JsonConvert.DeserializeObject(content);
string msg = jo["ResultCode"].ToString();
string error = jo["Error"].ToString();
if (msg == "200")
{
//更新状态
string Url = string.Empty;
Url = "api/service/T_Service_ChestPain_FollowUpInfo/UpdateStatus";
UpdateStatusDTO dto = new UpdateStatusDTO();
dto.registerId = registerId;
dto.month = month;
List list = new List();
list.Add(dto);
//初始化两个工厂
ClientFactory httpClient = new HttpClientFactory();
Client client = httpClient.VisitFactory();
//访问
ListEntity t = client.Post(Url, list);
if (string.IsNullOrEmpty(error))
{
XtraMessageBox.Show("提交成功");
}
else
{
MessageBox.Show(error);
}
}
else
{
MessageBox.Show(content);
}
GetRegisterInfo();
}
}
}
}
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;
}
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 Form_ChestPainFollowUpDetail_FormClosed(object sender, FormClosedEventArgs e)
{
Form_ChestPainFollowUpList chestPainFollowUpList = new Form_ChestPainFollowUpList();
chestPainFollowUpList = (Form_ChestPainFollowUpList)this.Owner;
chestPainFollowUpList.
GetFollowUpDate("", "", "", "", "", "", "", 50, 1);
}
}
///
///
///
public class UpdateStatusDTO
{
///
/// 患者 ID
///
public string registerId { get; set; }
///
/// 随访的月份
/// 1:1 月随访 3:3 月随访 6:6 月随访 12:12 月随访
///
public string month { get; set; }
}
}