StableVersion4.3/HL_DynamicElectrocardiogram/Form_CheckInECGPatient .cs

510 lines
21 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 Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Data;
using System.Reflection;
using System.Windows.Forms;
namespace HL_FristAidPlatform_DynamicElectrocardiogram
{
public partial class Form_CheckInECGPatient : XtraForm
{
public Form_CheckInECGPatient()
{
InitializeComponent();
}
/// <summary>
/// 加载
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Form_CheckInECGPatient_Load(object sender, EventArgs e)
{
GetEcgPatientList();
BindData();
}
#region 绑定数据
/// <summary>
/// 绑定数据
/// </summary>
private void BindData()
{
BindSystemModule();
BindAmbulance(1);
BindWristStrap(0);
}
/// <summary>
/// 绑定所属系统模块
/// </summary>
private void BindSystemModule()
{
try
{
string Url = string.Format("/api/admin/T_SYS_SystemModule/GetRightListByHospitalID?hospitalID={0}&isHaveTimeAxis=0", Information.Hospital.ID);
DataTable ResultDT = DBHelpClass.Get(Url);
if (ResultDT != null && ResultDT.Rows.Count > 0)
{
DataTable BindData = new DataTable();
BindData.Columns.Add("ID", Type.GetType("System.String"));
BindData.Columns.Add("SystemName", Type.GetType("System.String"));
BindData.Columns.Add("IconData", Type.GetType("System.Byte[]"));
foreach (DataRow item in ResultDT.Rows)
{
DataRow newRow = BindData.NewRow();
newRow["ID"] = item["ID"];
newRow["SystemName"] = item["ShortName"] + "患者";
if (!string.IsNullOrEmpty(PublicClass.ToString(item["IconData"], "")))
{
newRow["IconData"] = Convert.FromBase64String(item["IconData"].ToString());
}
else
{
newRow["IconData"] = null;
}
BindData.Rows.Add(newRow);
}
listBox_SystemModule.DataSource = BindData;
listBox_SystemModule.ValueMember = "ID";
listBox_SystemModule.DisplayMember = "SystemName";
}
}
catch (Exception ex)
{
PublicClass.WriteErrorLog(this.Text, "绑定所属系统模块:\r\n" + ex);
}
}
/// <summary>
/// 绑定标签卡
/// </summary>
/// <param name="state">状态-1:全部0:空闲1:使用中2:维护中</param>
private void BindWristStrap(int state)
{
try
{
string Url = string.Format("/api/base/T_Base_WristStrap?status={0}&deleteFlag=0", state);
DataTable WristStrapDT = DBHelpClass.Get(Url);
PublicClass.SetLookUpList(LUEdit_WristStrap, WristStrapDT, "ID", "Alias", true, "请选择");
}
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(lookUpEdit_Ambulance, ResultDT, "GUID", "PlateNumber", true, "请选择");
}
catch (Exception ex)
{
PublicClass.WriteErrorLog(this.Text, "绑定当前院区空闲的急救车:\r\n" + ex);
}
}
#endregion
/// <summary>
/// 获取当前心电患者列表
/// </summary>
private void GetEcgPatientList()
{
try
{
if (PublicHelp.IsConnectNetwork())
{
DataTable BindDT = new DataTable();
string guid = Guid.NewGuid().ToString();
string summary = Information.Hospital.Ecg_Summary;
string encryption = Util.Encryption(summary);
string authorKey = Information.Hospital.Ecg_AuthorKey;
string appId = Information.Hospital.Ecg_AppId;
string token = Information.Hospital.Ecg_Token;
string Url = "http://113.200.102.99:20018/api/mPublicEDataBs";//Information.Hospital.Ecg_URL;
string postText = "header[authorKey]=" + authorKey + "&header[appId]=" + appId + "&header[token]=" + token + "&header[ssid]" +
"=" + guid + "&header[service]=GETACTIVEWARDPRO&header[summary]=" + encryption;
var strJson = Util.ECGPostEncoding(Url, postText);
EcgRoot rootObject = JsonConvert.DeserializeObject<EcgRoot>(strJson);
if (rootObject.Result != null)
{
if (rootObject.Result.Count > 0)
{
BindDT = ListToDataTable(rootObject.Result);
}
}
gridControl_List.DataSource = BindDT;//显示结果
}
else
{
XtraMessageBox.Show("无法连接到Internet因此无法获取急救车上患者信息", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
catch (Exception ex)
{
PublicClass.WriteErrorLog(this.Text, "获取当前心电患者列表:\r\n" + ex);
}
}
/// <summary>
/// 选中行
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void gridControl_List_MouseClick(object sender, MouseEventArgs e)
{
try
{
#region 绑定详情
if (gridView_List.DataRowCount > 0)
{
int selectRow = gridView_List.GetSelectedRows()[0];
//标签卡号
string nid = PublicClass.ToString(gridView_List.GetRowCellValue(selectRow, "nid"), "").ToUpper();
LUEdit_WristStrap.Text = nid;
}
#endregion
}
catch (Exception ex)
{
PublicClass.WriteErrorLog(this.Text, "绑定详情:\r\n" + ex);
}
}
/// <summary>
/// 确认签入
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_CheckIn_Click(object sender, EventArgs e)
{
try
{
if (gridView_List.DataRowCount > 0)
{
int selectRow = gridView_List.GetSelectedRows()[0];
//心电合同编号
string Wid = PublicClass.ToString(gridView_List.GetRowCellValue(selectRow, "wid"), "");
if (!string.IsNullOrEmpty(Wid))
{
//设备编号
string Devid = PublicClass.ToString(gridView_List.GetRowCellValue(selectRow, "devid"), "");
//患者姓名
string Cname = PublicClass.ToString(gridView_List.GetRowCellValue(selectRow, "cname"), "");
//患者性别
string Sex = PublicClass.ToString(gridView_List.GetRowCellValue(selectRow, "sex"), "");
int SexCode = 0;
switch (Sex)
{
case "男":
SexCode = 1;
break;
case "女":
SexCode = 2;
break;
default:
SexCode = 0;
break;
}
//患者年龄
int Age = PublicClass.ToInt32(gridView_List.GetRowCellValue(selectRow, "age"), 0);
//身份证号码
string Ccno = PublicClass.ToString(gridView_List.GetRowCellValue(selectRow, "ccno"), "");
#region 保存信息
//验证
if (!DataVerification())
return;
#region 保存患者信息
List<T_Service_PatientDTO> list_Patient = new List<T_Service_PatientDTO>();
T_Service_PatientDTO model_Patient = new T_Service_PatientDTO();
string Url = "api/service/T_Service_Patient";
//患者编号
model_Patient.GUID = Guid.NewGuid().ToString();
//所属系统模块
model_Patient.SystemModuleID = PublicClass.ToInt64(listBox_SystemModule.SelectedValue, 0);
//所属院区编号
model_Patient.HospitalGuid = Information.Hospital.GUID;
//创建人编号
model_Patient.CreatorID = Information.User.ID;
//创建人
model_Patient.Creator = Information.User.FullName;
//创建时间
model_Patient.CreationDate = PublicClass.DateTimeNow();
//编辑时间
model_Patient.EditTime = PublicClass.DateTimeNow();
//档案归属日期
model_Patient.RegisterTime = PublicClass.DateTimeNow();
//是否三无人员
model_Patient.Category = 0;
//姓名
model_Patient.Name = Cname;
//性别
model_Patient.Gender = SexCode;
//年龄
model_Patient.Age = Age;
//证件类型
model_Patient.Credentials_Type = "1";
//证件号码
model_Patient.IdentityCard = Ccno;
#region 默认字段赋值
//急救状态
model_Patient.EmergencyState = 0;
//绕行方式 1:未绕行 2:单绕 3:双绕 4:三绕
model_Patient.IsGreenChannel = (int)Enumerate.CircumferenceMode.;
//是否上传到胸痛数据平台1是0否
model_Patient.CCPC_State = 0;
//填报状态
model_Patient.Status = 1;
//溶栓治疗 0:无 1:有 默认否
model_Patient.Thrombolysis = "0";
//是否介入治疗 0:否 1:是 默认否
model_Patient.Interventional_Therapy = "0";
#endregion
//备注
model_Patient.Note = "";
//标签卡
long WristStrapID = PublicClass.ToInt64(LUEdit_WristStrap.EditValue, -1);
model_Patient.WristStrapID = WristStrapID == -1 ? 0 : WristStrapID;
//急救车
string AmbulanceGuid = PublicClass.ToString(lookUpEdit_Ambulance.EditValue, "");
model_Patient.AmbulanceGuid = AmbulanceGuid == "" ? "" : AmbulanceGuid;
//心电合同号
model_Patient.WardshipId = Wid;
//心电回执ID
model_Patient.RecId = "";
//心电设备号
model_Patient.EqmtNo = Devid;
//病案操作更新日志
model_Patient.Operation_Log = string.Format("{0} 由 {1} 创建了患者病案\r\n", DateTime.Now.ToString(PublicClass.TimeToString), Information.User.FullName);
#endregion
list_Patient.Add(model_Patient);
ClientFactory<T_Service_PatientDTO> httpClient = new HttpClientFactory<T_Service_PatientDTO>();
Client<T_Service_PatientDTO> client = httpClient.VisitFactory();
//访问
ListEntity<T_Service_PatientDTO> t = client.Post(Url, list_Patient);
#endregion
if (t.Success)
{
//新增后更改标签卡和急救车的占用状态
#region 修改标签卡状态
Url = "/api/base/T_Base_WristStrap/UpdateStatus";
List<T_Base_WristStrapDTO> listWristStrap = new List<T_Base_WristStrapDTO>();
T_Base_WristStrapDTO modelWristStrap = new T_Base_WristStrapDTO();
modelWristStrap.ID = WristStrapID;
modelWristStrap.CreationDate = PublicClass.DateTimeNow();
modelWristStrap.Status = 1;//使用中
listWristStrap.Add(modelWristStrap);
//初始化两个工厂
ClientFactory<T_Base_WristStrapDTO> httpClientWristStrap = new HttpClientFactory<T_Base_WristStrapDTO>();
Client<T_Base_WristStrapDTO> clientWristStrap = httpClientWristStrap.VisitFactory();
//访问
ListEntity<T_Base_WristStrapDTO> tWristStrap = clientWristStrap.Post(Url, listWristStrap);
#endregion
#region 更改急救车信息
Url = "api/base/T_Base_Ambulance/UpdateState";
List<T_Base_AmbulanceDTO> listAmbulance = new List<T_Base_AmbulanceDTO>();
T_Base_AmbulanceDTO modelAmbulance = new T_Base_AmbulanceDTO();
modelAmbulance.GUID = AmbulanceGuid;
modelAmbulance.State = 2;
modelAmbulance.CreationDate = PublicClass.DateTimeNow();
listAmbulance.Add(modelAmbulance);
//初始化两个工厂
ClientFactory<T_Base_AmbulanceDTO> httpClientAmbulance = new HttpClientFactory<T_Base_AmbulanceDTO>();
Client<T_Base_AmbulanceDTO> clientAmbulance = httpClientAmbulance.VisitFactory();
//访问
clientAmbulance.Post(Url, listAmbulance);
#endregion
XtraMessageBox.Show(string.Format("签入【急救车病人】信息成功!"), "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
DialogResult = DialogResult.OK;
Close();
}
else
{
XtraMessageBox.Show("保存失败,请稍后重试!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
else
{
XtraMessageBox.Show("请在上方列表先选择病人!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
else
{
XtraMessageBox.Show("当前没有急救病人!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
catch (Exception ex)
{
PublicClass.WriteErrorLog(this.Text, "确认签入:\r\n" + ex);
}
}
/// <summary>
/// 数据有效性验证
/// </summary>
private bool DataVerification()
{
string Cur_SystemModuleID = PublicClass.ToString(listBox_SystemModule.SelectedValue, "0");
if (Cur_SystemModuleID == "0")
{
XtraMessageBox.Show("请选择患者类型!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
listBox_SystemModule.Focus();
return false;
}
string AmbulanceGuid = PublicClass.ToString(lookUpEdit_Ambulance.EditValue, "-1");
if (AmbulanceGuid == "-1")
{
XtraMessageBox.Show("请选择急救车牌号!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
lookUpEdit_Ambulance.Focus();
return false;
}
return true;
}
/// <summary>
/// 将泛类型集合List类转换成DataTable
/// </summary>
/// <param name="list">泛类型集合</param>
/// <returns></returns>
public static DataTable ListToDataTable<T>(List<T> entitys)
{
//检查实体集合不能为空
if (entitys == null || entitys.Count < 1)
{
throw new Exception("需转换的集合为空");
}
//取出第一个实体的所有Propertie
Type entityType = entitys[0].GetType();
PropertyInfo[] entityProperties = entityType.GetProperties();
//生成DataTable的structure
//生产代码中应将生成的DataTable结构Cache起来此处略
DataTable dt = new DataTable();
for (int i = 0; i < entityProperties.Length; i++)
{
dt.Columns.Add(entityProperties[i].Name);
}
//将所有entity添加到DataTable中
foreach (object entity in entitys)
{
//检查所有的的实体都为同一类型
if (entity.GetType() != entityType)
{
throw new Exception("要转换的集合元素类型不一致");
}
object[] entityValues = new object[entityProperties.Length];
for (int i = 0; i < entityProperties.Length; i++)
{
entityValues[i] = entityProperties[i].GetValue(entity, null);
}
dt.Rows.Add(entityValues);
}
return dt;
}
#region 实体
/// <summary>
///
/// </summary>
public class ResultItem
{
/// <summary>
/// 设备编号
/// </summary>
public string wid { get; set; }
/// <summary>
/// 设备ID
/// </summary>
public string devid { get; set; }
/// <summary>
/// 患者姓名
/// </summary>
public string cname { get; set; }
/// <summary>
/// 患者性别
/// </summary>
public string sex { get; set; }
/// <summary>
/// 患者年龄
/// </summary>
public string age { get; set; }
/// <summary>
/// 患者身份证号码
/// </summary>
public string ccno { get; set; }
/// <summary>
/// 标签编号
/// </summary>
public string nid { get; set; }
}
public class Header
{
/// <summary>
///
/// </summary>
public string errorCode { get; set; }
/// <summary>
/// 成功
/// </summary>
public string errorMsg { get; set; }
/// <summary>
///
/// </summary>
public string resultCode { get; set; }
}
public class EcgRoot
{
/// <summary>
///
/// </summary>
public List<ResultItem> Result { get; set; }
/// <summary>
///
/// </summary>
public Header header { get; set; }
}
#endregion
}
}