StableVersion4.3/HL_FristAidPlatform_ChestPain/Form_ChestPain_Pathography.cs

562 lines
25 KiB
C#
Raw Permalink 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 System;
using System.Collections.Generic;
using System.Data;
using System.Windows.Forms;
namespace HL_FristAidPlatform_ChestPain
{
public partial class Form_ChestPain_Pathography : XtraForm
{
#region 变量
/// <summary>
/// 当前病人编号(GUID)
/// </summary>
private string Cur_PatientGuid;
/// <summary>
/// 从存储过程中调取的数据源 便于首次生成和后期更新
/// </summary>
private DataTable Cur_QualityControlDT = new DataTable();
/// <summary>
/// 当前修改的记录信息
/// </summary>
private DataTable Cur_DetailDT = new DataTable();
#endregion 变量
/// <summary>
/// 胸痛患者病志
/// </summary>
/// <param name="_patientGuid">患者编号</param>
public Form_ChestPain_Pathography(string _patientGuid)
{
InitializeComponent();
Cur_PatientGuid = _patientGuid;
}
/// <summary>
/// 窗体加载
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Form_ChestPain_Pathography_Load(object sender, EventArgs e)
{
BindData();
}
/// <summary>
/// 窗体快捷键注册
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Form_ChestPain_Pathography_KeyDown(object sender, KeyEventArgs e)
{
//同时按下 Ctrl+S 时执行保存方法
if (e.KeyCode == Keys.S && e.Control)
{
barButton_Save_ItemClick(null, null);
}
}
/// <summary>
/// 绑定数据
/// </summary>
private void BindData()
{
try
{
string ContentStr = string.Empty;
string Url = string.Format("api/service/T_Service_Pathography/GetByPatientGuid?patientGuid={0}", Cur_PatientGuid);
Cur_DetailDT = DBHelpClass.Get(Url);
//没有在病例表中进行数据存储
if (Cur_DetailDT != null && Cur_DetailDT.Rows.Count > 0)
{
ContentStr = Cur_DetailDT.Rows[0]["Content"].ToString();
ContentStr = ContentStr.Replace("rn", "\r\n");
}
else
{
Url = string.Format("api/service/T_Service_ChestPain_PatientsTimeAxis/GetChestPainQualityControl?patientGuid={0}", Cur_PatientGuid);
Cur_QualityControlDT = DBHelpClass.GetJsonText(Url);
ContentStr = InitializePathography(Cur_QualityControlDT);
}
richEdit_Content.Text = ContentStr;
}
catch (Exception ex)
{
PublicClass.WriteErrorLog(this.Text, "绑定数据:\r\n" + ex);
}
}
/// <summary>
/// 初始化病志信息
/// </summary>
/// <param name="DataDT">数据源</param>
/// <returns></returns>
private string InitializePathography(DataTable DataDT)
{
string ContentStr = string.Empty;
//判断是否有数据
if (DataDT != null && DataDT.Rows.Count > 0)
{
#region 初始化病志信息
//日期
string RegisterTime = PublicClass.DateTimeToString(DataDT.Rows[0]["RegisterTime"], "", "yyyy-MM-dd HH:mm");
//姓名
string Name = PublicClass.ToString(DataDT.Rows[0]["Name"], "");
//性别
string GenderName = PublicClass.ToString(DataDT.Rows[0]["GenderName"], "");
//年龄
string Age = PublicClass.ToString(DataDT.Rows[0]["Age"], "");
//年龄单位
string Age_Unit = PublicClass.ToString(DataDT.Rows[0]["Age_Unit"], "");
//发病时间
string FB_Time = PublicClass.DateTimeToString(DataDT.Rows[0]["FB_Time"], "", "HH:mm");
//诊断
string Diagnosis = string.Empty;
#region 诊断
int CP_Diagnosis_Code = PublicClass.ToInt32(DataDT.Rows[0]["CP_Diagnosis_Code"], 0);
switch (CP_Diagnosis_Code)
{
case 1:
Diagnosis = "STEMI";
break;
case 2:
Diagnosis = "NSTEMI";
break;
case 3:
Diagnosis = "UA";
break;
case 4:
Diagnosis = "主动脉夹层";
break;
case 5:
Diagnosis = "肺动脉栓塞";
break;
case 6:
Diagnosis = "非ACS心源性胸痛";
break;
case 7:
Diagnosis = "其它非心源性胸痛";
break;
case 8:
Diagnosis = "待查";
break;
default:
Diagnosis = "";
break;
}
#endregion
//来院方式
string LYFS = PublicClass.ToString(DataDT.Rows[0]["LYFS"], "");
//到达医院大门时间
string Arrived_Hospital_Time = PublicClass.DateTimeToString(DataDT.Rows[0]["Arrived_Hospital_Time"], "", "HH:mm");
//是否远程传输心电图
string Remote_ECG_Transmission = PublicClass.ToString(DataDT.Rows[0]["Remote_ECG_Transmission"], "") == "1" ? "是" : "否";
//绕行模式
string GreenChannel = string.Empty;
#region 绕行模式
int IsGreenChannel = PublicClass.ToInt32(DataDT.Rows[0]["IsGreenChannel"], 0);
switch (IsGreenChannel)
{
case (int)Enumerate.CircumferenceMode.:
GreenChannel = Enumerate.CircumferenceMode..ToString();
break;
case (int)Enumerate.CircumferenceMode.:
GreenChannel = Enumerate.CircumferenceMode..ToString();
break;
case (int)Enumerate.CircumferenceMode.:
GreenChannel = Enumerate.CircumferenceMode..ToString();
break;
case (int)Enumerate.CircumferenceMode.:
GreenChannel = Enumerate.CircumferenceMode..ToString();
break;
default:
GreenChannel = "";
break;
}
#endregion 绕行模式
//是否溶栓 0:无溶栓 1:院前溶栓 2:院内溶栓 3:院前溶栓+院内溶栓
int Thrombolysis = PublicClass.ToInt32(DataDT.Rows[0]["Thrombolysis"], 0);
//是否介入治疗 0:否 1:是
int Interventional_Therapy = PublicClass.ToInt32(DataDT.Rows[0]["Interventional_Therapy"], 0);
//首次医疗接触时间
string FMC_Time = PublicClass.DateTimeToString(DataDT.Rows[0]["FMC_Time"], "", "HH:mm");
//首份心电图完成时间
string ECG_Time = PublicClass.DateTimeToString(DataDT.Rows[0]["ECG_Time"], "", "HH:mm");
//心电图确诊时间
string ECG_Diagnose_Time = PublicClass.DateTimeToString(DataDT.Rows[0]["ECG_Diagnose_Time"], "", "HH:mm");
//肌钙蛋白抽血完成时间
string Blood_Time = PublicClass.DateTimeToString(DataDT.Rows[0]["Blood_Time"], "", "HH:mm");
//肌钙蛋白获得报告时间
string Report_Time = PublicClass.DateTimeToString(DataDT.Rows[0]["Report_Time"], "", "HH:mm");
//通知会诊时间
string Notice_IMCD_Time = PublicClass.DateTimeToString(DataDT.Rows[0]["Notice_IMCD_Time"], "", "HH:mm");
//会诊时间
string Consultation_Time = PublicClass.DateTimeToString(DataDT.Rows[0]["Consultation_Time"], "", "HH:mm");
//溶栓开始知情同意时间
string Throm_Start_Agree_Time = PublicClass.DateTimeToString(DataDT.Rows[0]["Throm_Start_Agree_Time"], "", "HH:mm");
//溶栓签署知情同意时间
string Throm_Sign_Agree_Time = PublicClass.DateTimeToString(DataDT.Rows[0]["Throm_Sign_Agree_Time"], "", "HH:mm");
//介入开始知情同意时间
string Start_Agree_Time = PublicClass.DateTimeToString(DataDT.Rows[0]["Start_Agree_Time"], "", "HH:mm");
//介入签署知情同意时间
string Sign_Agree_Time = PublicClass.DateTimeToString(DataDT.Rows[0]["Sign_Agree_Time"], "", "HH:mm");
//启动导管室时间
string Start_Conduit_Time = PublicClass.DateTimeToString(DataDT.Rows[0]["Start_Conduit_Time"], "", "HH:mm");
//导管室激活时间
string Activate_Conduit_Time = PublicClass.DateTimeToString(DataDT.Rows[0]["Activate_Conduit_Time"], "", "HH:mm");
//导丝通过时间
string Balloon_expansion_Time = PublicClass.DateTimeToString(DataDT.Rows[0]["Balloon_expansion_Time"], "", "HH:mm");
//发病时间-首次医疗接触时间
int S2FMC = PublicClass.ToInt32(DataDT.Rows[0]["S2FMC"], 0);
//首次医疗接触时间间隔-首份心电图时间
int FMC2ECG = PublicClass.ToInt32(DataDT.Rows[0]["FMC2ECG"], 0);
//首份心电图时间-首份心电图确诊时间
int ECG2QZ = PublicClass.ToInt32(DataDT.Rows[0]["ECG2QZ"], 0);
//肌钙蛋白抽血时间-获取报告时间
int CX2BG = PublicClass.ToInt32(DataDT.Rows[0]["CX2BG"], 0);
//通知心内科会诊-会诊时间
int TZHZ2HZ = PublicClass.ToInt32(DataDT.Rows[0]["TZHZ2HZ"], 0);
//溶栓开始知情同意时间-溶栓签署知情同意时间
int RSKSZQTY2QS = PublicClass.ToInt32(DataDT.Rows[0]["RSZQTY2QS"], 0);
//介入开始知情同意时间-介入签署知情同意时间
int JRKSZQTY2QS = PublicClass.ToInt32(DataDT.Rows[0]["JRZQTY2QS"], 0);
//启动导管室时间-导管室激活时间
int QDDGS2DGSJH = PublicClass.ToInt32(DataDT.Rows[0]["QDDGS2DGSJH"], 0);
//到达医院大门时间-导丝通过时间
int D2W = PublicClass.ToInt32(DataDT.Rows[0]["D2W"], 0);
#region 治疗方案++知情同意
//治疗方案
string TreatmentOptions = string.Empty;
//知情同意时间和签署知情同意时间
string Start_Agree_Str = string.Empty;
//0:无溶栓 1:院前溶栓 2:院内溶栓 3:院前溶栓+院内溶栓
if (Thrombolysis > 0)
{
Start_Agree_Str = $"溶栓开始知情同意时间({Throm_Start_Agree_Time})-溶栓签署知情同意时间({Throm_Sign_Agree_Time});耗时{RSKSZQTY2QS}分钟";
switch (Thrombolysis)
{
case 1:
TreatmentOptions = "院前溶栓";
break;
case 2:
TreatmentOptions = "院内溶栓";
break;
case 3:
TreatmentOptions = "院前溶栓+院内溶栓";
break;
default:
break;
}
}
//是否介入治疗 0:否 1:是
if (Interventional_Therapy == 1)
{
if (!string.IsNullOrEmpty(Start_Agree_Str))
{
Start_Agree_Str += $"\r\n介入开始知情同意时间({Start_Agree_Time})-介入签署知情同意时间({Sign_Agree_Time});耗时{JRKSZQTY2QS}分钟";
}
else
{
Start_Agree_Str += $"介入开始知情同意时间({Start_Agree_Time})-介入签署知情同意时间({Sign_Agree_Time});耗时{JRKSZQTY2QS}分钟";
}
TreatmentOptions += TreatmentOptions == "" ? "介入治疗" : "+介入治疗";
}
#endregion 治疗方案++知情同意
#region 达标项与未达标项
//达标项
string StandardItem = string.Empty;
//不达标项
string NotStandardItem = string.Empty;
//首次医疗接触时间间隔-首份心电图时间
if (FMC2ECG >= 0 && FMC2ECG <= 10)
{
StandardItem = "首份心电图时间";
}
else
{
NotStandardItem = "首份心电图时间";
}
//首份心电图时间-首份心电图确诊时间
if (ECG2QZ >= 0 && ECG2QZ <= 10)
{
StandardItem += "\r\n心电图确诊时间";
}
else
{
NotStandardItem += "\r\n心电图确诊时间";
}
//肌钙蛋白抽血时间-获取报告时间
if (CX2BG >= 0 && CX2BG <= 20)
{
StandardItem += "\r\n肌钙蛋白检测时间";
}
else
{
NotStandardItem += "\r\n肌钙蛋白检测时间";
}
//到达医院大门时间-导丝通过时间
if (QDDGS2DGSJH >= 0 && QDDGS2DGSJH <= 30)
{
StandardItem += "\r\n导管室激活时间";
}
else
{
NotStandardItem += "\r\n导管室激活时间";
}
#endregion 达标项与未达标项
ContentStr = $"患者姓名:{Name},{GenderName},{Age}{Age_Unit}\r\n" +
$"建档日期:{RegisterTime}\r\n" +
$"诊断:{Diagnosis}\r\n" +
$"治疗方案:{TreatmentOptions}\r\n" +
$"绕行模式:{GreenChannel}\r\n" +
$"来院方式:{LYFS}\r\n" +
$"【质控指标】\r\n" +
$"是否远程传输心电图:{Remote_ECG_Transmission}\r\n" +
$"发病时间({FB_Time})-首次医疗接触时间({FMC_Time});耗时{S2FMC}分钟\r\n" +
$"首次医疗接触时间({FMC_Time})-首份心电图完成时间({ECG_Time});耗时{FMC2ECG}分钟\r\n" +
$"首份心电图完成时间({ECG_Time})-心电图诊断时间({ECG_Diagnose_Time});耗时{ECG2QZ}分钟\r\n" +
$"抽血完成时间({Blood_Time})-获得报告时间({Report_Time});耗时{CX2BG}分钟\r\n" +
$"通知心内科会诊时间({Notice_IMCD_Time})-会诊时间({Consultation_Time});耗时{TZHZ2HZ}分钟\r\n" + Start_Agree_Str + "\r\n" +
$"启动导管室时间({Start_Conduit_Time})-导管室激活时间({Activate_Conduit_Time});耗时{QDDGS2DGSJH}分钟\r\n" +
$"到达医院大门时间({Arrived_Hospital_Time})-导丝通过时间({Balloon_expansion_Time});耗时{D2W}分钟\r\n" +
$"【达标项】\r\n{StandardItem}\r\n" +
$"【未达标项】\r\n{NotStandardItem}";
#endregion 初始化病志信息
}
return ContentStr;
}
/// <summary>
/// 保存按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void barButton_Save_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
string Content = richEdit_Content.Text;
if (string.IsNullOrEmpty(Content))
{
if (XtraMessageBox.Show("当前患者病志信息为空,是否继续保存?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No)
{
return;
}
}
if (Save())
{
XtraMessageBox.Show("患者病志信息保存成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
BindData();//重新绑定,避免重复新增
}
}
/// <summary>
/// 退出按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void barButton_Exit_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
Close();
}
/// <summary>
/// 保存病志
/// </summary>
/// <returns></returns>
private bool Save()
{
try
{
string Url = string.Empty;
#region 保存病志
List<T_Service_PathographyDTO> list_Model = new List<T_Service_PathographyDTO>();
T_Service_PathographyDTO model = new T_Service_PathographyDTO();
//存在则修改 否则新增
if (Cur_DetailDT != null && Cur_DetailDT.Rows.Count > 0)
{
Url = "api/service/T_Service_Pathography/UpdateNotNullColumns";
model.ID = PublicClass.ToInt64(Cur_DetailDT.Rows[0]["ID"], 0); ;
model.GUID = Cur_DetailDT.Rows[0]["GUID"].ToString();
model.DeleteFlag = PublicClass.ToInt32(Cur_DetailDT.Rows[0]["DeleteFlag"], -1);
model.CreatorID = PublicClass.ToInt64(Cur_DetailDT.Rows[0]["CreatorID"], 0);
model.CreationDate = Cur_DetailDT.Rows[0]["CreationDate"].ToString();
model.EditorID = Information.User.ID;
model.Editor = Information.User.FullName;
model.EditTime = PublicClass.DateTimeNow();
}
else
{
Url = "api/service/T_Service_Pathography/AddNotNullColumns";
model.ID = 0;
model.GUID = Guid.NewGuid().ToString();
model.DeleteFlag = 0;
model.CreatorID = Information.User.ID;
model.Creator = Information.User.FullName;
model.CreationDate = PublicClass.DateTimeNow();
}
model.PatientGuid = Cur_PatientGuid;
model.Content = richEdit_Content.Text;
list_Model.Add(model);
//初始化两个工厂
ClientFactory<T_Service_PathographyDTO> httpClient = new HttpClientFactory<T_Service_PathographyDTO>();
Client<T_Service_PathographyDTO> client = httpClient.VisitFactory();
#endregion
var result = client.Post(Url, list_Model);
//访问
return result.Success;
}
catch (Exception ex)
{
PublicClass.WriteErrorLog(this.Text, "保存患者病志信息:\r\n" + ex);
return false;
}
}
/// <summary>
/// 刷新
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void barButton_Refresh_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
if (!string.IsNullOrEmpty(richEdit_Content.Text.Trim()))
{
if (XtraMessageBox.Show("当前患者病志信息不为空,是否继续更新?\r\n继续更新将覆盖您当前的所有更改", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No)
{
return;
}
}
if (Cur_QualityControlDT.Rows.Count <= 0)
{
string Url = string.Format("api/service/T_Service_ChestPain_PatientsTimeAxis/GetChestPainQualityControl?patientGuid={0}", Cur_PatientGuid);
Cur_QualityControlDT = DBHelpClass.GetJsonText(Url);
}
//生成病志
richEdit_Content.Text = InitializePathography(Cur_QualityControlDT);
}
/// <summary>
/// 收藏
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void barButton_Enshrine_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
//病志没有存储到表中
if (Cur_DetailDT != null && Cur_DetailDT.Rows.Count > 0)
{
//病志内容框不为空
string Content = richEdit_Content.Text.Trim();
if (!string.IsNullOrEmpty(Content))
{
//收藏前进行保存
if (Save())
{
BindData();//重新绑定,避免重复新增
string dynamicGuid = PublicClass.ToString(Cur_DetailDT.Rows[0]["GUID"], "");
if (!string.IsNullOrEmpty(dynamicGuid))
{
if (Save_Enshrine(dynamicGuid))
{
XtraMessageBox.Show("收藏患者病志信息成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
XtraMessageBox.Show("收藏失败,请稍后重试或联系管理员!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
else
{
XtraMessageBox.Show("收藏失败,请先保存患者病志信息!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}
}
/// <summary>
/// 保存收藏
/// </summary>
/// <param name="dynamicGuid">需要收藏的动态编号</param>
/// <returns></returns>
private bool Save_Enshrine(string dynamicGuid)
{
try
{
string Url = $"api/service/T_Service_Enshrine/GetModelByDynamicGuid?userId={Information.User.ID}&type=1&dynamicGuid={dynamicGuid}";
DataTable EnshrineDT = DBHelpClass.Get(Url);
#region 保存收藏
List<T_Service_EnshrineDTO> list_Model = new List<T_Service_EnshrineDTO>();
T_Service_EnshrineDTO model = new T_Service_EnshrineDTO();
//存在则修改 否则新增
if (EnshrineDT != null && EnshrineDT.Rows.Count > 0)
{
Url = "api/service/T_Service_Enshrine/UpdateNotNullColumns";
model.ID = PublicClass.ToInt64(EnshrineDT.Rows[0]["ID"], 0); ;
model.GUID = EnshrineDT.Rows[0]["GUID"].ToString();
model.DeleteFlag = PublicClass.ToInt32(EnshrineDT.Rows[0]["DeleteFlag"], -1);
model.CreatorID = PublicClass.ToInt64(EnshrineDT.Rows[0]["CreatorID"], 0);
model.EditorID = Information.User.ID;
model.Editor = Information.User.FullName;
model.EditTime = PublicClass.DateTimeNow();
}
else
{
Url = "api/service/T_Service_Enshrine/AddNotNullColumns";
model.ID = 0;
model.GUID = Guid.NewGuid().ToString();
model.DeleteFlag = 0;
model.CreatorID = Information.User.ID;
model.Creator = Information.User.FullName;
model.CreationDate = PublicClass.DateTimeNow();
}
model.UserID = Information.User.ID;
model.Type = 1;
model.DynamicGuid = dynamicGuid;
list_Model.Add(model);
//初始化两个工厂
ClientFactory<T_Service_EnshrineDTO> httpClient = new HttpClientFactory<T_Service_EnshrineDTO>();
Client<T_Service_EnshrineDTO> client = httpClient.VisitFactory();
#endregion
bool IsTrue = client.Post(Url, list_Model).Success;
//访问
return IsTrue;
}
catch (Exception ex)
{
PublicClass.WriteErrorLog(this.Text, "保存收藏:\r\n" + ex);
return false;
}
}
}
}