510 lines
21 KiB
C#
510 lines
21 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.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
|
|||
|
}
|
|||
|
}
|