518 lines
19 KiB
C#
518 lines
19 KiB
C#
using DevExpress.XtraEditors;
|
|
using HL_FristAidPlatform_DTO;
|
|
using HL_FristAidPlatform_Public;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.IO;
|
|
using System.Net;
|
|
using System.Security.Cryptography;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
using System.Xml;
|
|
using System.Xml.Serialization;
|
|
|
|
namespace HL_FristAidPlatform_Apoplexy
|
|
{
|
|
public partial class Form_DataReporting : XtraForm
|
|
{
|
|
/// <summary>
|
|
/// 当前页
|
|
/// </summary>
|
|
private int curPage = 1;
|
|
|
|
/// <summary>
|
|
/// 每页大小
|
|
/// </summary>
|
|
private int pageSize = 50;
|
|
|
|
/// <summary>
|
|
/// 所有记录条数
|
|
/// </summary>
|
|
private int totalNumber = 0;
|
|
|
|
private byte[] aesKey;
|
|
private byte[] aesIv;
|
|
|
|
/// <summary>
|
|
/// 单位编码,请从授权文档中获取
|
|
/// </summary>
|
|
private string uuCode = "27144";
|
|
|
|
private string acZLType = "";
|
|
|
|
/// <summary>
|
|
/// 授权码,请从授权文档中获取
|
|
/// </summary>
|
|
private string uuAuth = "wKZIUUPCnxtbmAiRQN8dYGsir0uBBUaLHFeyf3KgRT3K3fjIkMhiIEFqb0adkNAS";
|
|
|
|
/// <summary>
|
|
/// 过期时间
|
|
/// </summary>
|
|
private int timeout = 40000;
|
|
|
|
private Encoding enc = Encoding.UTF8;
|
|
private DateTime exp = DateTime.Now;
|
|
private string token;
|
|
|
|
public Form_DataReporting()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
private void Form_DataReporting_Load(object sender, EventArgs e)
|
|
{
|
|
GetDate(Information.Hospital.GUID, "", "", "", "", "", pageSize, curPage);
|
|
}
|
|
|
|
private void simpleButton_Search_Click(object sender, EventArgs e)
|
|
{
|
|
switch (radioGroup1.SelectedIndex)
|
|
{
|
|
case 1:
|
|
acZLType = "01";
|
|
break;
|
|
|
|
case 2:
|
|
acZLType = "02";
|
|
break;
|
|
|
|
case 3:
|
|
acZLType = "03";
|
|
break;
|
|
|
|
case 4:
|
|
acZLType = "04";
|
|
break;
|
|
|
|
case 5:
|
|
acZLType = "05";
|
|
break;
|
|
}
|
|
|
|
GetDate(Information.Hospital.GUID, acZLType, txt_name.Text, txt_acHzCode.Text, time_cytimeOne.TimeValue, time_cytimeTwo.TimeValue, pageSize, curPage);
|
|
}
|
|
|
|
public void GetDate(string hospitalGuid, string acZLType, string name, string acHzCode, string cytimeOne, string cytimeTwo, int pageSize, int pageIndex)
|
|
{
|
|
string Url = string.Format("api/service/ApoplexyPatientReport/GetApoplexyReportPatientList?hospitalGuid={0}&acZLType={1}&name={2}&acHzCode={3}&cytimeOne={4}&cytimeTwo={5}&pageSize={6}&pageIndex={7}", hospitalGuid, acZLType, name, acHzCode, cytimeOne, cytimeTwo, pageSize, curPage);
|
|
DataTable dt = DBHelpClass.Get(Url);
|
|
gridControl1.DataSource = dt;
|
|
totalNumber = DBHelpClass.TotalNumber;
|
|
userControlForPage.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 == "1")
|
|
{
|
|
e.DisplayText = "男";
|
|
}
|
|
if (value == "2")
|
|
{
|
|
e.DisplayText = "女";
|
|
}
|
|
}
|
|
|
|
if (e.Column.FieldName == "HospitalizationTime")
|
|
{
|
|
string value = e.Value.ToString();
|
|
if (!string.IsNullOrEmpty(value))
|
|
{
|
|
e.DisplayText = Convert.ToDateTime(value).ToString("yyyy-MM-dd HH:mm");
|
|
}
|
|
}
|
|
|
|
if (e.Column.FieldName == "acZLType")
|
|
{
|
|
string value = e.Value.ToString();
|
|
string str = "";
|
|
if (!string.IsNullOrEmpty(value))
|
|
{
|
|
if (value.Contains("01"))
|
|
{
|
|
if (!string.IsNullOrEmpty(str))
|
|
{
|
|
str += ";静脉溶栓";
|
|
}
|
|
else
|
|
{
|
|
str += "静脉溶栓";
|
|
}
|
|
}
|
|
if (value.Contains("02"))
|
|
{
|
|
if (!string.IsNullOrEmpty(str))
|
|
{
|
|
str += ";血管内介入治疗";
|
|
}
|
|
else
|
|
{
|
|
str += "血管内介入治疗";
|
|
}
|
|
}
|
|
if (value.Contains("03"))
|
|
{
|
|
if (!string.IsNullOrEmpty(str))
|
|
{
|
|
str += ";脑出血";
|
|
}
|
|
else
|
|
{
|
|
str += "脑出血";
|
|
}
|
|
}
|
|
if (value.Contains("04"))
|
|
{
|
|
if (!string.IsNullOrEmpty(str))
|
|
{
|
|
str += ";颅内动脉瘤";
|
|
}
|
|
else
|
|
{
|
|
str += "颅内动脉瘤";
|
|
}
|
|
}
|
|
if (value.Contains("05"))
|
|
{
|
|
if (!string.IsNullOrEmpty(str))
|
|
{
|
|
str += ";CEA/CAS";
|
|
}
|
|
else
|
|
{
|
|
str += "CEA/CAS";
|
|
}
|
|
}
|
|
}
|
|
|
|
e.DisplayText = str;
|
|
}
|
|
}
|
|
|
|
private void repositoryItemButtonEdit1_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
|
|
{
|
|
int selectRow = gridView1.GetSelectedRows()[0];
|
|
string patientGuid = PublicClass.ToString(gridView1.GetRowCellValue(selectRow, "GUID"), "");
|
|
string Url = string.Format("api/service/ApoplexyPatientReport/ReportSinglePatientXML?patientGuid={0}", patientGuid);
|
|
ApoplexyReportDTO dto = new ApoplexyReportDTO();
|
|
dto.Archives = new Archives();
|
|
|
|
dto.ArchivesCases = new ArchivesCases();
|
|
|
|
dto.RYQK = new RYQK();
|
|
dto.HealthExam = new HealthExam();
|
|
dto.TOAST = new T_Service_Apoplexy_TOAST();
|
|
dto.RSZL = new T_Service_Apoplexy_RSZL();
|
|
dto.XGZL = new T_Service_Apoplexy_XGZL();
|
|
dto.NCXZYJC = new T_Service_Apoplexy_NCXZYJC();
|
|
dto.NCXSS = new T_Service_Apoplexy_NCXSS();
|
|
dto.ZYYW = new T_Service_Apoplexy_ZYYW();
|
|
dto.DMLSS = new T_Service_Apoplexy_DMLSS();
|
|
dto.CEACZ = new T_Service_Apoplexy_CEACZ();
|
|
dto.SHYW = new T_Service_Apoplexy_SHYW();
|
|
dto.CYPG = new CYPG();
|
|
dto.KFZL = new T_Service_Apoplexy_KFZL();
|
|
dto.JKJY = new T_Service_Apoplexy_JKJY();
|
|
dto.CYQK = new CYQK();
|
|
dto.NCXYWB = new T_Service_Apoplexy_NCXYWB();
|
|
dto.NCXAVM = new T_Service_Apoplexy_NCXAVM();
|
|
dto = DBHelpClass.GetDateModel<ApoplexyReportDTO>(Url);
|
|
if (dto != null)
|
|
{
|
|
dto.ArchivesCases.acTime = "2021-12-07 21:02";
|
|
ApoplexyReportDTOList apoplexyReportDTOList = new ApoplexyReportDTOList();
|
|
List<ApoplexyReportDTO> addList = new List<ApoplexyReportDTO>();
|
|
addList.Add(dto);
|
|
apoplexyReportDTOList.ApoplexyReportList = dto;
|
|
string xmldata = XmlSerialize<ApoplexyReportDTOList>(apoplexyReportDTOList);
|
|
sendXml(xmldata);
|
|
}
|
|
}
|
|
|
|
public static string XmlSerialize<T>(T obj)
|
|
{
|
|
using (StringWriter sw = new StringWriterWithEncoding(Encoding.UTF8))
|
|
{
|
|
//去掉要结点的 xmlns:xsi
|
|
XmlSerializerNamespaces _namespaces = new XmlSerializerNamespaces(
|
|
new XmlQualifiedName[] {
|
|
new XmlQualifiedName(string.Empty, "")
|
|
});
|
|
XmlSerializer serializer = new XmlSerializer(obj.GetType());
|
|
serializer.Serialize(sw, obj, _namespaces);
|
|
|
|
sw.Close();
|
|
return sw.ToString();
|
|
}
|
|
}
|
|
|
|
public void sendXml(string data)
|
|
{
|
|
//2018院内筛查上报测试接口;
|
|
string url = "https://api.chinasdc.cn/StrokeInterface/Interface2018BB/AddArchivesCases2018ZB03Test";
|
|
//string url = "https://api.chinasdc.cn/StrokeInterface/Interface2018BB/AddArchivesCases2018ZB03";
|
|
|
|
string response = UpData(url, data);
|
|
if (string.IsNullOrEmpty(response))
|
|
{
|
|
//调用接口失败
|
|
}
|
|
else
|
|
{
|
|
XmlDocument xmlDoc = new XmlDocument();
|
|
xmlDoc.LoadXml(response);
|
|
XmlElement root = xmlDoc.DocumentElement;
|
|
string Err = root.SelectSingleNode("Err").InnerText;
|
|
string Msg = root.SelectSingleNode("Msg").InnerText;
|
|
XtraMessageBox.Show(Msg);
|
|
if (Err.Equals("0"))
|
|
{
|
|
//上传成功
|
|
}
|
|
else
|
|
{
|
|
XtraMessageBox.Show(response);
|
|
//上传失败,记录错误。
|
|
WriteErrorLog("卒中病例上传错误日志西", response);
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 调用接口上传数据
|
|
/// </summary>
|
|
/// <param name="url">接口url</param>
|
|
/// <param name="data">数据xml</param>
|
|
/// <returns></returns>
|
|
public string UpData(string url, string data)
|
|
{
|
|
string token_ = GetToken();
|
|
if (string.IsNullOrEmpty(token_))
|
|
{
|
|
//没有获取到token
|
|
return null;
|
|
}
|
|
Dictionary<String, String> parameters = new Dictionary<String, String>();
|
|
parameters.Add("uuCode", uuCode);
|
|
parameters.Add("Token", token_);
|
|
string data_ = AES(data);
|
|
parameters.Add("Data", data_);
|
|
parameters.Add("uNickName", "hm15892885934");
|
|
return doPost(url, parameters);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取Token
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
private string GetToken()
|
|
{
|
|
if (string.IsNullOrEmpty(token) || DateTime.Now >= exp)
|
|
{
|
|
//token不存在 或者 过期 重新获取
|
|
Dictionary<String, String> parameters = new Dictionary<String, String>();
|
|
parameters.Add("uuCode", uuCode);
|
|
parameters.Add("uuAuth", uuAuth);
|
|
parameters.Add("type", "ZB");
|
|
string url = "https://api.chinasdc.cn/StrokeInterface/ApiAuth/GetToken";
|
|
string response = doPost(url, parameters);
|
|
if (string.IsNullOrEmpty(response))
|
|
{
|
|
//调用授权接收出错
|
|
return null;
|
|
}
|
|
else
|
|
{
|
|
XmlDocument xmlDoc = new XmlDocument();
|
|
xmlDoc.LoadXml(response);
|
|
XmlElement root = xmlDoc.DocumentElement;
|
|
string Err = root.SelectSingleNode("Err").InnerText;
|
|
string Msg = root.SelectSingleNode("Msg").InnerText;
|
|
if (Err.Equals("0"))
|
|
{
|
|
XmlNode data = root.SelectSingleNode("Data");
|
|
token = data.SelectSingleNode("Token").InnerText;
|
|
aesKey = enc.GetBytes(data.SelectSingleNode("AESKEY").InnerText);
|
|
aesIv = enc.GetBytes(data.SelectSingleNode("AESIV").InnerText);
|
|
//获取到token 返回
|
|
//记录过期时间
|
|
exp = DateTime.Now.AddHours(7.8);
|
|
return token;
|
|
}
|
|
else
|
|
{
|
|
//调用授权接收出错 记录错误
|
|
return null;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return token;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 调用http post接口
|
|
/// </summary>
|
|
/// <param name="url">url地址</param>
|
|
/// <param name="parameters">参数</param>
|
|
/// <returns>Response</returns>
|
|
private string doPost(string url, IDictionary<string, string> parameters)
|
|
{
|
|
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
|
|
request.Method = "POST";
|
|
request.ContentType = "application/x-www-form-urlencoded";
|
|
request.Timeout = timeout;
|
|
|
|
//如果需要POST数据
|
|
if (!(parameters == null || parameters.Count == 0))
|
|
{
|
|
StringBuilder buffer = new StringBuilder();
|
|
bool bl = true;
|
|
foreach (string key in parameters.Keys)
|
|
{
|
|
if (bl)
|
|
{
|
|
buffer.AppendFormat("{0}={1}", key, parameters[key]);
|
|
bl = false;
|
|
}
|
|
else
|
|
{
|
|
buffer.AppendFormat("&{0}={1}", key, parameters[key]);
|
|
}
|
|
}
|
|
byte[] data = enc.GetBytes(buffer.ToString());
|
|
using (Stream stream = request.GetRequestStream())
|
|
{
|
|
stream.Write(data, 0, data.Length);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
request.ContentLength = 0;
|
|
}
|
|
HttpWebResponse hwr = request.GetResponse() as HttpWebResponse;
|
|
if (hwr.StatusCode == HttpStatusCode.OK)
|
|
{
|
|
Stream receiveStream = hwr.GetResponseStream();
|
|
StreamReader readStream = new StreamReader(receiveStream, enc);
|
|
string str = readStream.ReadToEnd();
|
|
hwr.Close();
|
|
receiveStream.Close();
|
|
readStream.Close();
|
|
return str;
|
|
}
|
|
else
|
|
{
|
|
return null;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// AES加密
|
|
/// </summary>
|
|
/// <param name="data">需要加密的内容</param>
|
|
/// <returns>加密后的Base64字符串</returns>
|
|
private string AES(string data)
|
|
{
|
|
//分组加密算法
|
|
SymmetricAlgorithm des = Rijndael.Create();
|
|
byte[] inputByteArray = enc.GetBytes(data);//得到需要加密的字节数组
|
|
//设置密钥及密钥向量
|
|
des.Key = aesKey;
|
|
des.IV = aesIv;
|
|
byte[] cipherBytes = null;
|
|
using (MemoryStream ms = new MemoryStream())
|
|
{
|
|
using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))
|
|
{
|
|
cs.Write(inputByteArray, 0, inputByteArray.Length);
|
|
cs.FlushFinalBlock();
|
|
cipherBytes = ms.ToArray();//得到加密后的字节数组
|
|
cs.Close();
|
|
ms.Close();
|
|
}
|
|
}
|
|
return Convert.ToBase64String(cipherBytes);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 记录错误日志
|
|
/// 精确到每分钟
|
|
/// </summary>
|
|
/// <param name="file_name_prefix">文件名前缀</param>
|
|
/// <param name="text">记录内容</param>
|
|
public static void WriteErrorLog(string file_name_prefix = "", string text = "")
|
|
{
|
|
if (string.IsNullOrEmpty(file_name_prefix))
|
|
{
|
|
file_name_prefix = "Debug";
|
|
}
|
|
|
|
string path = AppDomain.CurrentDomain.BaseDirectory;
|
|
path = Path.Combine(path, "logs\\");
|
|
|
|
if (!Directory.Exists(path))
|
|
{
|
|
Directory.CreateDirectory(path);
|
|
}
|
|
string fileFullName = Path.Combine(path, string.Format("{0}{1}.txt", file_name_prefix, DateTime.Now.ToString("yyyyMMdd-HHmm")));
|
|
|
|
using (StreamWriter output = File.AppendText(fileFullName))
|
|
{
|
|
output.WriteLine(text);
|
|
|
|
output.Close();
|
|
}
|
|
}
|
|
|
|
private void gridControl1_MouseDoubleClick(object sender, MouseEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
//gridView2.SelectRow(this.gridView2.FocusedRowHandle);
|
|
ShowDetail();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
//XtraMessageBox.Show("请先勾选该患者后再双击打开!");
|
|
PublicClass.WriteErrorLog(this.Text, "查看患者详情:\r\n" + ex);
|
|
}
|
|
}
|
|
|
|
private void ShowDetail()
|
|
{
|
|
if (gridView1.DataRowCount > 0)
|
|
{
|
|
// loading.ShowMessage();
|
|
int selectRow = gridView1.FocusedRowHandle;
|
|
//long PatientID = PublicClass.ToInt64(gridView2.GetRowCellValue(selectRow, "编号").ToString(), 0);
|
|
string GUID = gridView1.GetRowCellValue(selectRow, "GUID").ToString();
|
|
|
|
Form_PatientDetail detail = new Form_PatientDetail(GUID, "1");//, hospitalGuid
|
|
detail.WindowState = FormWindowState.Maximized;
|
|
detail.Owner = this;
|
|
// loading.ShowMessage("请稍候", "正在加载...");
|
|
detail.Show();
|
|
// loading.HideMessage();
|
|
}
|
|
}
|
|
|
|
private void MyPagerEvents(int curPage, int pageSize)
|
|
{
|
|
this.curPage = curPage;
|
|
this.pageSize = pageSize;
|
|
GetDate(Information.Hospital.GUID, acZLType, txt_name.Text, txt_acHzCode.Text, time_cytimeOne.TimeValue, time_cytimeTwo.TimeValue, pageSize, curPage);
|
|
}
|
|
|
|
private void userControlForPage_myPagerEvents(int curPage, int pageSize)
|
|
{
|
|
userControlForPage.myPagerEvents += MyPagerEvents;
|
|
}
|
|
}
|
|
} |