StableVersion4.3/HL_FristAidPlatform_FollowUp/Form_ChestPainFollowUpDetai...

723 lines
26 KiB
C#
Raw 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 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
{
/// <summary>
/// 随访详情
/// </summary>
public partial class Form_ChestPainFollowUpDetail : XtraForm
{
/// <summary>
/// 月份
/// </summary>
public string month;
/// <summary>
///
/// </summary>
public int content = 1;
/// <summary>
///
/// </summary>
public string followUp;
/// <summary>
/// 基本信息
/// </summary>
public UC_FollowUpInfo Info;
/// <summary>
/// 危险因素
/// </summary>
public UC_FollowUpRiskReason RiskReason;
/// <summary>
/// 躯体症状
/// </summary>
public UC_FollowUpSomaticSymptoms SomaticSymptoms;
/// <summary>
/// 检查项目
/// </summary>
public UC_FollowUpInspectionItem InspectionItem;
/// <summary>
/// 用药信息
/// </summary>
public UC_FollowUpMedication Medication;
public string registerId;
public string status;
FollowUpDataUploadDTO FollowDto;
/// <summary>
/// 随访详情
/// </summary>
public Form_ChestPainFollowUpDetail(string _registerId, string _month)
{
InitializeComponent();
registerId = _registerId;
month = _month;
}
private void Form1_Load(object sender, EventArgs e)
{
GetRegisterInfo();
}
/// <summary>
///
/// </summary>
public void GetRegisterInfo()
{
RegisterInfoDTO dto = new RegisterInfoDTO();
string url = string.Format("api/service/T_Service_ChestPain_FollowUpInfo/GetRegisterInfo?registerId={0}", registerId);
dto = DBHelpClass.GetDateModel<RegisterInfoDTO>(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);
}
/// <summary>
/// 界面刷新切换方法
/// </summary>
/// <param name="content"></param>
/// <param name="month"></param>
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
{
/// <summary>
/// 是否随访
/// 1是 0
/// </summary>
public string isFollowUp { get; set; }
/// <summary>
/// 姓名
/// </summary>
public string Name { get; set; }
/// <summary>
/// 性别
/// </summary>
public int Gender { get; set; }
/// <summary>
/// 年龄
/// </summary>
public int Age { get; set; }
/// <summary>
/// 出院时间
/// </summary>
public DateTime? Leave_Time { get; set; }
/// <summary>
/// 出院诊断
/// </summary>
public string CP_Diagnosis_Code { get; set; }
/// <summary>
/// 发病时间
/// </summary>
public DateTime? Attack_Time { get; set; }
/// <summary>
/// 措施
/// 1:直接PCI
/// 2:溶栓
/// 3:择期介入
/// 4:CABG
/// 5:转运 PCI
/// </summary>
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;
// }
//}
/// <summary>
/// 保存草稿
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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<FollowUpDataUploadDTO>(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;
}
}
/// <summary>
/// 随访数据-上传
/// </summary>
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<UpdateStatusDTO> list = new List<UpdateStatusDTO>();
list.Add(dto);
//初始化两个工厂
ClientFactory<UpdateStatusDTO> httpClient = new HttpClientFactory<UpdateStatusDTO>();
Client<UpdateStatusDTO> client = httpClient.VisitFactory();
//访问
ListEntity<UpdateStatusDTO> 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);
}
}
/// <summary>
///
/// </summary>
public class UpdateStatusDTO
{
/// <summary>
/// 患者 ID
/// </summary>
public string registerId { get; set; }
/// <summary>
/// 随访的月份
/// 11 月随访 33 月随访 66 月随访 1212 月随访
/// </summary>
public string month { get; set; }
}
}