StableVersion4.3/HL_FristAidPlatform_Trauma/Form_Trauma_PatientDetail.cs

402 lines
16 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 System;
using System.Collections.Generic;
using System.Data;
using System.Reflection;
using System.Threading;
using System.Windows.Forms;
namespace HL_FristAidPlatform_Trauma
{
public partial class Form_Trauma_PatientDetail : XtraForm
{
#region 变量
/// <summary>
/// 当前病人编号(GUID)
/// </summary>
public string Cur_PatientGuid = string.Empty;
/// <summary>
/// 当前患者所属院区编号(GUID)
/// </summary>
private string Cur_HospitalGuid = string.Empty;
/// <summary>
/// 当前病人姓名
/// </summary>
private string Cur_PatientName = string.Empty;
/// <summary>
/// 当前病人性别(男,女)
/// </summary>
private string Cur_PatientGender = string.Empty;
/// <summary>
/// 当前病人年龄
/// </summary>
private string Cur_PatientAge = string.Empty;
/// <summary>
/// 心电设备号
/// </summary>
private string Cur_WardshipId = string.Empty;
/// <summary>
/// 当前病人信息
/// </summary>
private DataTable Cur_PatientDT = new DataTable();
/// <summary>
/// 等待窗体
/// </summary>
private Loading loading = new Loading();
#endregion
/// <summary>
/// 创伤患者详情
/// </summary>
/// <param name="_patientGuid">患者编号(GUID)</param>
/// <param name="_hospitalGuid">患者所属院区编号(GUID)</param>
/// <param name="_patientName">患者姓名</param>
public Form_Trauma_PatientDetail(string _patientGuid = "", string _hospitalGuid = "", string _patientName = "")
{
InitializeComponent();
Cur_PatientGuid = _patientGuid;
Cur_HospitalGuid = _hospitalGuid;
Cur_PatientName = _patientName;
this.Text = string.Format("创伤患者详情【{0}】", Cur_PatientName);
}
/// <summary>
/// 窗体加载
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Form_Trauma_PatientDetail_Load(object sender, EventArgs e)
{
//绑定控件中的基础数据
BindData();
//绑定业务数据
BindInfo(Cur_PatientGuid);
}
#region 绑定数据
/// <summary>
/// 绑定控件中的基础数据
/// </summary>
private void BindData()
{
BindHospitalMode(PublicClassForDataBase.Config10003);
BindAmbulance(-1);
}
/// <summary>
/// 绑定来院方式
/// </summary>
/// <param name="systemModuleID">所属系统模块</param>
private void BindHospitalMode(string systemModuleID)
{
try
{
DataTable BindDT = DBHelpClass.Get(string.Format("/api/base/T_Base_HospitalMode/GetListBySystemModuleID?systemModuleID={0}", systemModuleID));
PublicClass.BindRadioGroupData(radioGroup_HospitalMode, BindDT, "Content", "ID");
}
catch (Exception ex)
{
PublicClass.WriteErrorLog(this.Text, "绑定来院方式:\r\n" + ex);
}
}
/// <summary>
/// 绑定当前院区空闲的急救车
/// </summary>
/// <param name="state">急救车状态-1、全部1、空闲2、出车中3、维修中4、已报废</param>
private void BindAmbulance(int state)
{
try
{
string Url = string.Format("/api/base/T_Base_Ambulance/GetListForState?state={0}&hospitalGuid={1}", state, Information.Hospital.GUID);
DataTable ResultDT = DBHelpClass.Get(Url);
PublicClass.SetLookUpList(ref lookUpEdit_Ambulance, ResultDT, 5, 9, true, "请选择");
}
catch (Exception ex)
{
PublicClass.WriteErrorLog(this.Text, "绑定当前院区空闲的急救车:\r\n" + ex);
}
}
/// <summary>
/// 绑定业务数据
/// </summary>
/// <param name="PatientGuid">患者编号(GUID)</param>
private void BindInfo(string PatientGuid)
{
//绑定患者信息
BindPatientInfo(PatientGuid);
//绑定动态监护
Thread cha = new Thread(new ThreadStart(BindECG));
cha.Start();
}
/// <summary>
/// 绑定胸痛患者基本信息
/// </summary>
/// <param name="PatientGuid">患者编号(GUID)</param>
private void BindPatientInfo(string PatientGuid)
{
try
{
if (!string.IsNullOrEmpty(PatientGuid))
{
#region 绑定患者基本信息
string Url = string.Format("api/service/T_Service_Patient/GetModelByIdOrGuid?guid={0}", PatientGuid);
Cur_PatientDT = DBHelpClass.Get(Url);
if (Cur_PatientDT != null && Cur_PatientDT.Rows.Count > 0)
{
ckb_Category.Checked = Cur_PatientDT.Rows[0]["Category"].ToString() == "0" ? false : true;
if (ckb_Category.Checked)
ckb_Category.ReadOnly = false;
else
ckb_Category.ReadOnly = true;
Cur_PatientName = Cur_PatientDT.Rows[0]["Name"].ToString();
labelControl_Name.Text = "姓名:" + Cur_PatientName;
txt_Name.Text = Cur_PatientName;
txt_Name.Tag = Cur_PatientDT.Rows[0]["ID"].ToString();
Cur_PatientGender = Cur_PatientDT.Rows[0]["GenderName"].ToString();
labelControl_Gender.Text = "性别:" + Cur_PatientGender;
radioGroup_Gender.EditValue = Cur_PatientGender;
Cur_PatientAge = Cur_PatientDT.Rows[0]["Age"].ToString();
labelControl_Age.Text = "年龄:" + Cur_PatientAge;
txt_Age.Text = Cur_PatientAge;
string MobilePhone = Cur_PatientDT.Rows[0]["MobilePhone"].ToString();
labelControl_MobilePhone.Text = "电话:" + MobilePhone;
labelControl_WristStrapID.Text = "标签卡:" + Cur_PatientDT.Rows[0]["WristStrapCode"].ToString();
Cur_WardshipId = Cur_PatientDT.Rows[0]["WardshipId"].ToString();
labelControl_GUID.Text = "患者编号:" + Cur_PatientDT.Rows[0]["GUID"].ToString().ToUpper();
#region 图片
//string Portrait = PublicClass.ToString(Cur_PatientDT.Rows[0]["Portrait"], "");
//if (!string.IsNullOrEmpty(Portrait))
//{
// MemoryStream ms = new MemoryStream(Convert.FromBase64String(Portrait));
// Image img = Image.FromStream(ms);
// Bitmap ImageBitmap = new Bitmap(img, PictureBox_Image.Width, PictureBox_Image.Height);
// PictureBox_Image.Image = ImageBitmap;
//}
//else
//{
// PictureBox_Image.Image = null;
//}
#endregion
txt_OutpatientNumber.Text = Cur_PatientDT.Rows[0]["OutpatientNumber"].ToString();
txt_AdmissionNumber.Text = Cur_PatientDT.Rows[0]["AdmissionNumber"].ToString();
txt_MobilePhone.Text = Cur_PatientDT.Rows[0]["MobilePhone"].ToString();
txt_IdentityCard.Text = Cur_PatientDT.Rows[0]["IdentityCard"].ToString();
txt_Address.Text = Cur_PatientDT.Rows[0]["Address"].ToString();
txt_Attack_Address.Text = Cur_PatientDT.Rows[0]["Attack_Address"].ToString();
txt_EmergencyContact.Text = Cur_PatientDT.Rows[0]["EmergencyContact"].ToString();
txt_EmergencyContactPhone.Text = Cur_PatientDT.Rows[0]["EmergencyContactPhone"].ToString();
txt_Note.Text = Cur_PatientDT.Rows[0]["Note"].ToString();
}
#endregion
}
}
catch (Exception ex)
{
PublicClass.WriteErrorLog(this.Text, "绑定胸痛患者基本信息:\r\n" + ex);
}
}
/// <summary>
/// 绑定生命体征
/// </summary>
private void BindECG()
{
try
{
PatientInfo patientInfo = new PatientInfo();
patientInfo.patientName = Cur_PatientName;
patientInfo.patientAge = Cur_PatientAge;
patientInfo.patientSex = Cur_PatientGender;
ECGShowParameter parameter = new ECGShowParameter();
parameter.height = panel_ECG.Height.ToString();
parameter.width = panel_ECG.Width.ToString();
parameter.patientFlag = "1";
parameter.patientInfo = patientInfo;
parameter.wardNo = Cur_WardshipId;
parameter.orgCode = Information.Hospital.Ecg_OrgCode;
string paras = JsonConvert.SerializeObject(parameter);
string dllPath = string.Format(Application.StartupPath + "\\ECG\\Hwyl.ECG_New.dll", System.Environment.CurrentDirectory);//dll组件路径
Assembly pAss = Assembly.LoadFrom(dllPath);//加载组件
Type pType = pAss.GetType("Hwyl.ECG_New.ECGViewControl");//获得类ECG_New命名空间ECGViewControl类名
MethodInfo pMtInfo = pType.GetMethod("ECGViewControl");//获得方法ECGViewControl方法名
//创建类实例
this.Invoke(new ThreadStart(() => panel_ECG.Controls.Add((Control)Activator.CreateInstance(pType, paras))));
}
catch (Exception ex)
{
PublicClass.WriteErrorLog(this.Text, "绑定生命体征:\r\n" + ex);
}
}
#endregion
/// <summary>
/// 保存信息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_Save_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(Cur_PatientGuid))
{
//统一验证
if (!CheckingDataAvailability())
return;
loading.ShowMessage();
if (!Save_Patient())
{
loading.HideMessage();
XtraMessageBox.Show("保存基本信息失败,请重试!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
loading.HideMessage();
XtraMessageBox.Show("保存创伤患者急救信息成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
BindInfo(Cur_PatientGuid);//保存成功后重新加载 已更新操作标记
}
}
/// <summary>
/// 检查数据有效性
/// </summary>
/// <returns></returns>
private bool CheckingDataAvailability()
{
#region 一、基本信息
//门诊号和住院号必选填一个
if (string.IsNullOrEmpty(txt_OutpatientNumber.Text.Trim()) && string.IsNullOrEmpty(txt_AdmissionNumber.Text.Trim()))
{
XtraMessageBox.Show("门诊号和住院号必选填写一个!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
txt_AdmissionNumber.Focus();
return false;
}
#endregion
#region 五、生命体征
//同时为空时不处理
if (string.IsNullOrEmpty(txt_Blood_Pressure1.Text.Trim()) && string.IsNullOrEmpty(txt_Blood_Pressure1.Text.Trim()))
{
}
else
{
int Pressure1 = PublicClass.ToInt32(txt_Blood_Pressure1.Text, 0);
int Pressure2 = PublicClass.ToInt32(txt_Blood_Pressure2.Text, 0);
if (Pressure1 == 0)
{
XtraMessageBox.Show("请正确填写舒缩压!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
txt_Blood_Pressure1.Focus();
return false;
}
if (Pressure2 == 0)
{
XtraMessageBox.Show("请正确填写舒张压!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
txt_Blood_Pressure2.Focus();
return false;
}
}
#endregion
return true;
}
/// <summary>
/// 保存 基本信息
/// </summary>
private bool Save_Patient()
{
try
{
string Url = string.Empty;
#region 保存信息
List<T_Service_PatientDTO> list_model = new List<T_Service_PatientDTO>();
T_Service_PatientDTO model = new T_Service_PatientDTO();
Url = "api/service/T_Service_Patient/Update";
model.ID = PublicClass.ToInt64(Cur_PatientDT.Rows[0]["ID"], -1);
model.GUID = Cur_PatientGuid;
#region 原始数据
model.SystemModuleID = PublicClass.ToInt64(Cur_PatientDT.Rows[0]["SystemModuleID"], -1);
model.RegisterTime = Cur_PatientDT.Rows[0]["RegisterTime"].ToString();
model.Nation = Cur_PatientDT.Rows[0]["Nation"].ToString();
model.Relationship = Cur_PatientDT.Rows[0]["Relationship"].ToString();
model.WristStrapID = PublicClass.ToInt64(Cur_PatientDT.Rows[0]["WristStrapID"], 0);
model.AmbulanceGuid = Cur_PatientDT.Rows[0]["AmbulanceGuid"].ToString();
#endregion
string PatientName = txt_Name.Text.ToString().Trim();
model.Name = PatientName;
model.PymCode = SpellAndWbConfig.GetSpellCode(PatientName);
model.WbmCode = SpellAndWbConfig.GetWBCode(PatientName);
model.Category = ckb_Category.Checked == true ? 1 : 0;
model.Gender = PublicClass.ToInt32(radioGroup_Gender.EditValue, 0);
model.Age = PublicClass.ToInt32(txt_Age.Text, 0);
model.AdmissionNumber = txt_AdmissionNumber.Text.ToString().Trim();
model.OutpatientNumber = txt_OutpatientNumber.Text.ToString().Trim();
model.MobilePhone = txt_MobilePhone.Text.ToString().Trim();
model.IdentityCard = txt_IdentityCard.Text.ToString().Trim();
model.Address = txt_Address.Text.ToString().Trim();
model.Attack_Address = txt_Attack_Address.Text;
model.EmergencyContact = txt_EmergencyContact.Text.ToString().Trim();
model.EmergencyContactPhone = txt_EmergencyContactPhone.Text.ToString().Trim();
model.Note = txt_Note.Text.ToString().Trim();
#region 赋值不更新
model.CreationDate = PublicClass.DateTimeNow();
model.RegisterTime = PublicClass.DateTimeNow();
#endregion
model.EditorID = Information.User.ID;
model.Editor = Information.User.FullName;
model.EditTime = PublicClass.DateTimeNow();
list_model.Add(model);
ClientFactory<T_Service_PatientDTO> httpClient = new HttpClientFactory<T_Service_PatientDTO>();
Client<T_Service_PatientDTO> client = httpClient.VisitFactory();
#endregion
//访问
return client.Post(Url, list_model).Success;
}
catch (Exception ex)
{
PublicClass.WriteErrorLog(this.Text, "保存 基本信息:\r\n" + ex);
return false;
}
}
}
}