using DevExpress.XtraEditors;
using HL_FristAidPlatform_DTO;
using HL_FristAidPlatform_MultiSystemPublic;
using HL_FristAidPlatform_Public;
using System;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using System.IO;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace HL_FristAidPlatform_ChestPain
{
public partial class Form_ChestPain_ECG : XtraForm
{
#region 变量
///
/// 当前病人编号
///
private string Cur_PatientGuid = string.Empty;
///
/// 首份心电图文件类型 V2.1
///
private string FristECG_FileType = string.Empty;
///
/// 首份心电图文件 V2.1
///
private string FristECG_FileStr = string.Empty;
///
/// 当前患者所有的肌钙蛋白报告
///
private DataTable Cur_BindDT = new DataTable();
///
/// 当前修改的记录信息
///
private DataTable Cur_DetailDT = new DataTable();
///
/// 心电图(转换成二进制之后数据)
///
private string Cur_PicData = string.Empty;
///
/// 心电图(文件后缀)
///
private string Cur_PicType = string.Empty;
///
/// 等待窗体
///
private Loading loading = new Loading();
#endregion
///
/// 心电图管理
///
///
public Form_ChestPain_ECG(string _patientGuid)
{
InitializeComponent();
Cur_PatientGuid = _patientGuid;
}
///
/// 窗体加载
///
///
///
private void Form_ChestPain_ECG_Load(object sender, EventArgs e)
{
Bind_List();
BindDetail();
}
///
/// 绑定心电图列表
///
private void Bind_List()
{
try
{
string Url = string.Format("api/service/T_Service_ChestPain_ECG/GetByPatientGuid?patientGuid={0}&ecgType={1}", Cur_PatientGuid, -1);
Cur_BindDT = DBHelpClass.Get(Url);
gridControl_ECG.DataSource = Cur_BindDT;
}
catch (Exception ex)
{
PublicClass.WriteErrorLog(this.Text, "绑定心电图列表:\r\n" + ex);
}
}
///
/// 保存
///
///
///
private async void btn_Save_Click(object sender, EventArgs e)
{
ASYNCPostECG();
}
async Task ASYNCPostECG()
{
try
{
if (Cur_BindDT.Rows.Count >= 3 && Cur_DetailDT.Rows.Count == 0)
{
if (XtraMessageBox.Show("当前已有三份心电图的报告,因数据填报平台只需传送三份心电报告!\r\n如果继续新增将按添加的先后顺序传送前三份到数据填报平台,请知晓!\r\n请问是否继续新增?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
{
return;
}
}
#region 验证
if (string.IsNullOrEmpty(time_ECG_Time.TimeValue))
{
XtraMessageBox.Show("请填写心电图时间!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
time_ECG_Time.Focus();
return;
}
if (string.IsNullOrEmpty(time_ECG_Diagnose_Time.TimeValue))
{
XtraMessageBox.Show("请填写心电图诊断时间!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
time_ECG_Diagnose_Time.Focus();
return;
}
if (string.IsNullOrEmpty(Cur_PicData))
{
XtraMessageBox.Show("请选择需要上传的心电图报告!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
btn_OpenFile.Focus();
return;
}
#endregion
loading.ShowMessage("", "正在上传心电图报告...");
if (Save_ECG())
{
loading.HideMessage();
XtraMessageBox.Show("保存心电图成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
// 重新绑定
Bind_List();
int selectRow = grv_ECG.GetSelectedRows()[0];
string firstECG = PublicClass.ToString(grv_ECG.GetRowCellValue(selectRow, "FirstECG"), "");
if (firstECG == "1")
{
if (!string.IsNullOrEmpty(time_ECG_Time.TimeValue))
PublicClassForDataBase.UpdateTime_ChestPain(Cur_PatientGuid, time_ECG_Time.TimeValue, PublicClassForDataBase.Config1004);
if (!string.IsNullOrEmpty(time_ECG_Diagnose_Time.TimeValue))
PublicClassForDataBase.UpdateTime_ChestPain(Cur_PatientGuid, time_ECG_Diagnose_Time.TimeValue, PublicClassForDataBase.Config1006);
}
PublicClass.EnabledControl(groupControl_Info, true, false);
UpdateTreatmentInfo(Cur_PatientGuid);
btn_Add.Enabled = true;
btn_Update.Enabled = true;
btn_Delete.Enabled = true;
}
else
{
loading.HideMessage();
XtraMessageBox.Show("保存心电图失败!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
catch (Exception ex)
{
PublicClass.WriteErrorLog(this.Text, "保存:\r\n" + ex);
}
}
///
/// 新增
///
///
///
private void btn_Add_Click(object sender, EventArgs e)
{
if (Cur_BindDT.Rows.Count >= 3)
{
if (XtraMessageBox.Show("当前已有三份心电图的报告,因数据填报平台只需传送三份心电报告!\r\n如果继续新增将按添加的先后顺序传送前三份到数据填报平台,请知晓!\r\n请问是否继续新增?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
{
PublicClass.EnabledControl(groupControl_Info, true, true);
return;
}
}
PublicClass.EnabledControl(groupControl_Info, false, true);
Cur_DetailDT = new DataTable();
lbl_ECG_Time.Tag = "";
lbl_ECG_Diagnose_Time.Tag = "";
Cur_PicData = "";
Cur_PicType = "";
pictureEdit_Image.Image = null;
btn_Update.Enabled = false;
btn_Delete.Enabled = false;
}
///
/// 修改
///
///
///
private void btn_Update_Click(object sender, EventArgs e)
{
BindDetail();
PublicClass.EnabledControl(groupControl_Info, false, false);
btn_Add.Enabled = false;
btn_Delete.Enabled = false;
}
///
/// 删除
///
///
///
private void btn_Delete_Click(object sender, EventArgs e)
{
try
{
if (grv_ECG.DataRowCount > 0)
{
int selectRow = grv_ECG.GetSelectedRows()[0];
long ID = PublicClass.ToInt64(grv_ECG.GetRowCellValue(selectRow, "ID"), 0);
string GUID = grv_ECG.GetRowCellValue(selectRow, "GUID").ToString();
string FirstECG = grv_ECG.GetRowCellValue(selectRow, "FirstECG").ToString();
if (FirstECG == "1")
{
XtraMessageBox.Show("不能删除首份心电图!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
if (ID == 0)
{
XtraMessageBox.Show("请先选择要删除的心电图!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
if (XtraMessageBox.Show("确定要删除当前心电图?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
List list = new List();
T_Service_ChestPain_ECGDTO model = new T_Service_ChestPain_ECGDTO();
string Url = "api/service/T_Service_ChestPain_ECG/LogicalDelete";
model.ID = ID;
model.DeleteFlag = 1;
model.EditorID = Information.User.ID;
model.Editor = Information.User.FullName;
model.EditTime = PublicClass.DateTimeNow();
model.GUID = GUID;
list.Add(model);
//初始化两个工厂
ClientFactory httpClient = new HttpClientFactory();
Client client = httpClient.VisitFactory();
if (client.Post(Url, list).Success)
{
XtraMessageBox.Show("删除心电图成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
PublicClass.EnabledControl(this.groupControl_Info, true, false);
//列表分页数据绑定
Bind_List();
}
else
{
XtraMessageBox.Show("删除心电图失败,请稍后重试!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}
catch (Exception ex)
{
PublicClass.WriteErrorLog(this.Text, "删除:\r\n" + ex);
}
}
///
/// 更换心电图
///
///
///
private void btn_OpenFile_Click(object sender, EventArgs e)
{
try
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "Image Files(*.JPG;*.PNG;*.JPEG;;*.BMP)|*.JPG;*.PNG;;*.BMP;*.JPEG";
ofd.RestoreDirectory = true;
Cur_PicData = "";
if (ofd.ShowDialog() == DialogResult.OK)
{
int Config109 = PublicClass.ToInt32(PublicClassForDataBase.Config109, 5);
string FileName = ofd.FileName;
if (PublicClass.GetFileSize(FileName) <= Config109)
{
FileInfo file = new FileInfo(ofd.FileName);
string Cur_PicAddress = ofd.FileName;
Image imge = Image.FromFile(Cur_PicAddress);
Bitmap Cur_ImageBitmap = new Bitmap(imge);
Cur_PicType = file.Extension;
pictureEdit_Image.Image = Cur_ImageBitmap;
if (Cur_PicType.ToLower() == ".png")
{
//所选图标转换成二进制 png
Cur_PicData = PublicClass.Png2String(Cur_ImageBitmap);
if (!string.IsNullOrEmpty(Cur_PicData))
{
MemoryStream ms = new MemoryStream(Convert.FromBase64String(Cur_PicData));
Image img = Image.FromStream(ms);
pictureEdit_Image.Image = img;
Cur_PicType = Cur_DetailDT.Rows[0]["ECGImageType"].ToString();
}
}
else
{
Cur_PicData = PublicClass.Jpeg2String(Cur_ImageBitmap);
//所选图标转换成二进制 jpg
if (!string.IsNullOrEmpty(Cur_PicData))
{
MemoryStream ms = new MemoryStream(Convert.FromBase64String(Cur_PicData));
Image img = Image.FromStream(ms);
pictureEdit_Image.Image = img;
Cur_PicType = Cur_DetailDT.Rows[0]["ECGImageType"].ToString();
}
}
}
else
{
XtraMessageBox.Show(string.Format("选择的文件大小超出了限制,请将文件控制在{0}兆以内!", Config109), "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
}
catch (Exception ex)
{
PublicClass.WriteErrorLog(this.Text, "更换心电图:\r\n" + ex);
}
}
///
/// 显示详情
///
///
///
private void gridControl_ECG_MouseClick(object sender, MouseEventArgs e)
{
PublicClass.EnabledControl(this.groupControl_Info, true, false);
BindDetail();
btn_Add.Enabled = true;
btn_Update.Enabled = true;
btn_Delete.Enabled = true;
}
///
/// 绑定心电图详情
///
private void BindDetail()
{
try
{
if (grv_ECG.DataRowCount > 0)
{
int selectRow = grv_ECG.GetSelectedRows()[0];
long ID = Convert.ToInt64(grv_ECG.GetRowCellValue(selectRow, "ID").ToString());
Cur_DetailDT = DBHelpClass.GetDataRow(string.Format("api/service/T_Service_ChestPain_ECG/{0}", ID));
if (Cur_DetailDT != null && Cur_DetailDT.Rows.Count > 0)
{
lbl_ECG_Time.Tag = Cur_DetailDT.Rows[0]["ID"].ToString();
lbl_ECG_Diagnose_Time.Tag = Cur_DetailDT.Rows[0]["GUID"].ToString();
//心电图时间
time_ECG_Time.TimeValue = Cur_DetailDT.Rows[0]["ECG_Time"].ToString();
//心电图诊断时间
time_ECG_Diagnose_Time.TimeValue = Cur_DetailDT.Rows[0]["ECG_Diagnose_Time"].ToString();
#region 图片
//头像
string ECGImageFiles = PublicClass.ToString(Cur_DetailDT.Rows[0]["ECGImageFiles"], "");
if (!string.IsNullOrEmpty(ECGImageFiles))
{
MemoryStream ms = new MemoryStream(Convert.FromBase64String(ECGImageFiles));
Image img = Image.FromStream(ms);
pictureEdit_Image.Image = img;
Bitmap Cur_ImageBitmap = new Bitmap(img);
Cur_PicData = PublicClass.Jpeg2String(Cur_ImageBitmap);
Cur_PicType = Cur_DetailDT.Rows[0]["ECGImageType"].ToString();
}
else
{
pictureEdit_Image.Image = null;
Cur_PicData = "";
Cur_PicType = "";
}
#endregion
}
}
}
catch (Exception ex)
{
PublicClass.WriteErrorLog(this.Text, "绑定心电图详情:\r\n" + ex);
}
}
///
/// 保存心电图
///
///
private bool Save_ECG()
{
try
{
string Url = string.Empty;
#region 保存心电图
List list_Model = new List();
T_Service_ChestPain_ECGDTO model = new T_Service_ChestPain_ECGDTO();
//存在则修改 否则新增
if (Cur_DetailDT != null && Cur_DetailDT.Rows.Count > 0)
{
Url = "api/service/T_Service_ChestPain_ECG/UpdateNotNullColumns";
model.ID = PublicClass.ToInt64(lbl_ECG_Time.Tag, -1);
model.GUID = lbl_ECG_Diagnose_Time.Tag.ToString();
model.DeleteFlag = PublicClass.ToInt32(Cur_DetailDT.Rows[0]["DeleteFlag"], -1);
model.CreatorID = PublicClass.ToInt64(Cur_DetailDT.Rows[0]["CreatorID"], 0);
model.Creator = Cur_DetailDT.Rows[0]["Creator"].ToString();
model.CreationDate = Cur_DetailDT.Rows[0]["CreationDate"].ToString();
model.EditorID = Information.User.ID;
model.Editor = Information.User.FullName;
model.EditTime = PublicClass.DateTimeNow();
}
else
{
if (Cur_BindDT == null && Cur_BindDT.Rows.Count <= 0)
model.FirstECG = "1";
Url = "api/service/T_Service_ChestPain_ECG/AddNotNullColumns";
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.ECG_Time = time_ECG_Time.TimeValue;
model.ECG_Diagnose_Time = time_ECG_Diagnose_Time.TimeValue;
//model.ECGImageFiles = Convert.FromBase64String(Cur_PicData);
model.ECGImageFiles = Cur_PicData;
model.ECGImageType = Cur_PicType;
list_Model.Add(model);
//初始化两个工厂
ClientFactory httpClient = new HttpClientFactory();
Client client = httpClient.VisitFactory();
#endregion
var resul = client.Post(Url, list_Model);
//访问
return true;
}
catch (Exception ex)
{
PublicClass.WriteErrorLog(this.Text, "保存心电图:\r\n" + ex);
return false;
}
}
///
/// 列表操作
///
///
///
private void repositoryItemButtonEdit_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
{
switch (e.Button.Caption)
{
case "查看图片":
loading.ShowMessage();
ShowImage();
loading.HideMessage();
break;
default:
break;
}
}
///
/// 显示图片
///
private void ShowImage()
{
try
{
if (grv_ECG.DataRowCount > 0)
{
int selectRow = grv_ECG.GetSelectedRows()[0];
long id = PublicClass.ToInt64(grv_ECG.GetRowCellValue(selectRow, "ID"), 0);
if (id > 0)
{
DataTable DetailDT = DBHelpClass.GetDataRow(string.Format("api/service/T_Service_ChestPain_ECG/{0}", id));
if (DetailDT != null && DetailDT.Rows.Count > 0)
{
//图片
#region 图片
string FileImage = PublicClass.ToString(DetailDT.Rows[0]["ECGImageFiles"], "");
if (!string.IsNullOrEmpty(FileImage))
{
byte[] image = Convert.FromBase64String(FileImage);
HL_FristAidPlatform_MultiSystemPublic.Form_ImageShow frm = new HL_FristAidPlatform_MultiSystemPublic.Form_ImageShow(image);
frm.ShowDialog();
}
else
{
XtraMessageBox.Show("没有获取到文件图片,请确认!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
#endregion
}
}
}
}
catch (Exception ex)
{
PublicClass.WriteErrorLog(this.Text, "显示图片:\r\n" + ex);
}
}
///
/// 更新胸痛诊疗表中是否有心电图的字段值
///
/// 患者编号
private void UpdateTreatmentInfo(string _patientGuid)
{
string Url = string.Format("api/service/T_Service_ChestPain_TreatmentInfo/GetByPatientGuid?patientGuid={0}", _patientGuid);
DataTable Cur_TreatmentInfoDT = DBHelpClass.Get(Url);
if (Cur_TreatmentInfoDT != null && Cur_TreatmentInfoDT.Rows.Count > 0)
{
string Has_ECG_Image = PublicClass.ToString(Cur_TreatmentInfoDT.Rows[0]["Has_ECG_Image"], "");
if (Has_ECG_Image == "")
{
List list_Model = new List();
T_Service_ChestPain_TreatmentInfoDTO model = new T_Service_ChestPain_TreatmentInfoDTO();
Url = "api/service/T_Service_ChestPain_TreatmentInfo/UpdateNotNullColumns";
model.ID = PublicClass.ToInt64(Cur_TreatmentInfoDT.Rows[0]["ID"], -1);
model.GUID = Cur_TreatmentInfoDT.Rows[0]["GUID"].ToString();
model.DeleteFlag = PublicClass.ToInt32(Cur_TreatmentInfoDT.Rows[0]["DeleteFlag"], -1);
model.CreatorID = PublicClass.ToInt64(Cur_TreatmentInfoDT.Rows[0]["CreatorID"], 0);
model.Creator = Cur_TreatmentInfoDT.Rows[0]["Creator"].ToString();
model.CreationDate = Cur_TreatmentInfoDT.Rows[0]["CreationDate"].ToString();
model.EditorID = Information.User.ID;
model.Editor = Information.User.FullName;
model.EditTime = PublicClass.DateTimeNow();
model.Has_ECG_Image = "1";
list_Model.Add(model);
//初始化两个工厂
ClientFactory httpClient = new HttpClientFactory();
Client client = httpClient.VisitFactory();
}
}
}
private void Form_ChestPain_ECG_FormClosed(object sender, FormClosedEventArgs e)
{
Form_ChestPain_Treatment treatment;
treatment = (Form_ChestPain_Treatment)this.Owner;
treatment.Bind_ECGList();
this.Close();
}
private void grv_ECG_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e)
{
if (e.Info.IsRowIndicator && e.RowHandle >= 0)
e.Info.DisplayText = (e.RowHandle + 1).ToString();
}
}
}