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