402 lines
16 KiB
C#
402 lines
16 KiB
C#
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;
|
||
}
|
||
}
|
||
}
|
||
}
|