329 lines
13 KiB
C#
329 lines
13 KiB
C#
using System;
|
||
using System.Data;
|
||
using System.Web;
|
||
using System.Web.Configuration;
|
||
using System.Xml.Linq;
|
||
using System.Web.Script.Serialization;
|
||
using System.Speech.Synthesis;
|
||
using System.Text;
|
||
using System.Threading.Tasks;
|
||
|
||
namespace BeginScreen
|
||
{
|
||
/// <summary>
|
||
/// WaitingHandler 的摘要说明
|
||
/// </summary>
|
||
public class WaitingHandler : HandlerBase
|
||
{
|
||
|
||
static int glop = 1;
|
||
private DateTime _beginDate;
|
||
private DateTime _endDate;
|
||
private int dSum; //数据表的总记录
|
||
private int startRecond; //起始记录
|
||
private int endRecond; //结束记录
|
||
private static int PageSum = 9; //每页显示的记录数
|
||
private int countPage; //总页数
|
||
private int currentPage; //当前页
|
||
|
||
private DataTable dts;
|
||
|
||
|
||
#region 配置文件的属性
|
||
public static XElement xmlOpe = null;
|
||
private string fontSize = "20px";
|
||
private string fontFamily = "微软雅黑";
|
||
private string rowOddBgColor = "#000000";
|
||
private string rowEvenBgColor = "#000000";
|
||
private string opeBeforColor = "DodgerBlue";
|
||
//private string opeInColor = "red";
|
||
private string opeInColor = "yellow";
|
||
private string opeAfterColor = "rgb(32, 218, 112)";
|
||
private string opeInColor1 = "Orange";
|
||
private string opeAfterColor1 = "Wheat";
|
||
private string defaultColor = "LightSkyBlue"; //1
|
||
private string PatientNames = "";
|
||
private string OpeTime = "";
|
||
private string DeptId = "";
|
||
#endregion
|
||
|
||
private string body = "";
|
||
private string messageStr = "";
|
||
private string systemType = "";
|
||
private string sendType = "";
|
||
private int messId = 0;
|
||
|
||
private static void InitConfig()
|
||
{
|
||
#region 加载配置文件
|
||
string baseDirectory = AppDomain.CurrentDomain.BaseDirectory + "WaitConfig.xml";
|
||
xmlOpe = XElement.Load(baseDirectory);
|
||
#endregion
|
||
}
|
||
|
||
public string GetHtml(HttpContext context)
|
||
{
|
||
//设置显示信息的开始和结束时间
|
||
InitConfig();
|
||
SetViewTime();
|
||
currentPage = int.Parse(xmlOpe.Element("currentPage").Value);
|
||
PatientNames = xmlOpe.Element("PatientName").Value;
|
||
OpeTime = xmlOpe.Element("OpeTime").Value;
|
||
DeptId = xmlOpe.Element("DeptId").Value;
|
||
messageStr = "";
|
||
DataTable dt = new DataTable();
|
||
dt = PublicMethod.GetPlanNoticeNew1(_beginDate, _endDate, OpeTime == "" ? "5" : OpeTime, DeptId);
|
||
|
||
dts = dt;
|
||
//总记录数
|
||
dSum = dts.Rows.Count;
|
||
countPage = GetPageCount();
|
||
string tdRows = string.Empty;
|
||
if (HttpContext.Current.Request["WorkerCurrentPage"] != null && HttpContext.Current.Request["WorkerCurrentPage"] != "")
|
||
{
|
||
LoadWaitNurseOpe(Convert.ToInt32(HttpContext.Current.Request["WorkerCurrentPage"]));
|
||
}
|
||
JavaScriptSerializer jss = new JavaScriptSerializer();
|
||
message1 msg = new message1(true, body, messageStr, systemType, sendType, messId, countPage.ToString(), "");
|
||
|
||
|
||
context.Response.Write(jss.Serialize(msg));//返回给前台页面
|
||
context.Response.End();
|
||
return body;
|
||
}
|
||
|
||
public void GetOpenFile(HttpContext context)
|
||
{
|
||
context.Response.Write("");//返回给前台页面
|
||
context.Response.End();
|
||
}
|
||
|
||
public string GetOpenFile1(HttpContext context)
|
||
{
|
||
string fileid = HttpContext.Current.Request["fileid"];
|
||
context.Response.Write(context.Application[fileid]);//返回给前台页面
|
||
context.Response.End();
|
||
return "1";
|
||
}
|
||
#region //计算总页数
|
||
|
||
public int GetPageCount()
|
||
{
|
||
if (PageSum == 0)
|
||
PageSum = 9; //每页显示的记录条数为"0",则默认为"20"
|
||
if (dSum % PageSum == 0)
|
||
return (dSum / PageSum);
|
||
else
|
||
return (dSum / PageSum) + 1;
|
||
}
|
||
|
||
#endregion
|
||
|
||
/// <summary>
|
||
/// 加载所有手术状态为“术前、术中、”的申请信息
|
||
/// </summary>
|
||
/// <param name="m"></param>
|
||
/// <param name="n"></param>
|
||
private void LoadWaitNurseOpe(int curPage)
|
||
{
|
||
//每次去查询时,要更新一下记录总数,RecondSum,每一页显示的记录数为,PageSum ,
|
||
body = "";
|
||
messageStr = "";
|
||
systemType = "";
|
||
sendType = "";
|
||
|
||
curPage -= 1;
|
||
startRecond = curPage * PageSum;
|
||
endRecond = startRecond + PageSum;
|
||
|
||
string tdRows = "";
|
||
for (int i = startRecond; i < endRecond; i++)
|
||
{
|
||
try
|
||
{
|
||
string tdRow = "<tr>";
|
||
if (i >= dSum)
|
||
{
|
||
tdRow += "<td colspan='5'> </td>";
|
||
}
|
||
else
|
||
{
|
||
string intApplyID = dts.Rows[i]["ApplyId"].ToString();
|
||
string OperationRoom = dts.Rows[i]["OperationRoom"].ToString();
|
||
string vchrOpeStatus = GetOpeStatus(dts.Rows[i]);
|
||
if (vchrOpeStatus == "") continue;
|
||
|
||
|
||
string rowStyle = "";
|
||
if (i % 2 == 0)
|
||
{
|
||
rowStyle = " height='35px' bgcolor='" + rowEvenBgColor + "' style='font-size:" + fontSize + ";font-family:" + fontFamily + ";' ";
|
||
}
|
||
else
|
||
{
|
||
rowStyle = " height='35px' bgcolor='" + rowOddBgColor + "' style='font-size:" + fontSize + "; font-family:" + fontFamily + ";' ";
|
||
}
|
||
switch (vchrOpeStatus)
|
||
{
|
||
case "等待手术":
|
||
break;
|
||
case "手术准备":
|
||
break;
|
||
case "手术中":
|
||
break;
|
||
case "手术结束":
|
||
break;
|
||
case "术后恢复":
|
||
break;
|
||
case "手术结束转恢复室":
|
||
break;
|
||
case "手术结束安返病房":
|
||
break;
|
||
case "转入复苏室":
|
||
break;
|
||
case "离开复苏室":
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
|
||
tdRow += "<td align='center' " + rowStyle + "></td>";
|
||
tdRow += "<td align='center' " + rowStyle + ">" + dts.Rows[i]["ApplyDepName"] + "</td>";
|
||
tdRow += "<td align='center' " + rowStyle + ">" + dts.Rows[i]["SickBed"] + "</td>";
|
||
string PatientName = "";
|
||
if (PatientNames == "")
|
||
{
|
||
PatientName = dts.Rows[i]["PatientName"].ToString();
|
||
}
|
||
else
|
||
{
|
||
string name = dts.Rows[i]["PatientName"].ToString().Length < 2 ? "" : dts.Rows[i]["PatientName"].ToString().Substring(2);
|
||
PatientName = dts.Rows[i]["PatientName"].ToString().Substring(0, 1) + PatientNames + name;
|
||
}
|
||
tdRow += "<td align='center' " + rowStyle + "> " + PatientName + "</td>";
|
||
tdRow += "<td align='center' " + rowStyle + ">" + vchrOpeStatus + "</td>";
|
||
|
||
}
|
||
tdRow += "</tr>";
|
||
tdRows += tdRow;
|
||
}
|
||
catch (Exception)
|
||
{
|
||
}
|
||
}
|
||
//显示备注等
|
||
body += tdRows;
|
||
GetT_Inform();
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 获取通知档的内容
|
||
/// </summary>
|
||
private void GetT_Inform()
|
||
{
|
||
DataRow dr = PublicMethod.GetMessigeData();
|
||
if (dr != null)
|
||
{
|
||
if (dr["Contents"] != null && dr["Contents"].ToString().Trim() != "")
|
||
{
|
||
messageStr = dr["Contents"].ToString().Trim();
|
||
}
|
||
systemType = "0";
|
||
if (dr["Id"] != null && dr["Id"].ToString().Trim() != "")
|
||
{
|
||
messId = Convert.ToInt32(dr["Id"].ToString().Trim());
|
||
}
|
||
//var task = Task.Factory.StartNew(() =>
|
||
//{
|
||
// using (var speechSyn = new SpeechSynthesizer())
|
||
// {
|
||
// //speechSyn.Volume = ;//语速
|
||
// //speechSyn.Rate = -;//音量
|
||
|
||
// speechSyn.SetOutputToDefaultAudioDevice();
|
||
// speechSyn.SetOutputToWaveFile("E:\\AIMS\\BeginScreen\\static\\Record.wav");//"D:\\Record.wav"
|
||
// speechSyn.Speak(messageStr );
|
||
// }
|
||
//});
|
||
//Task.WaitAll(task);
|
||
}
|
||
}
|
||
|
||
private void SetViewTime()
|
||
{
|
||
_beginDate = PublicMethod.ServerTime().Date.AddSeconds(1);
|
||
_endDate = PublicMethod.ServerTime().Date.AddHours(23).AddMinutes(59).AddSeconds(59);
|
||
}
|
||
|
||
|
||
public static string GetOpeStatus(DataRow dts)
|
||
{
|
||
//--0.【等待手术】 “已排程”“待访视”“已访视”
|
||
//--1.【术前准备】 点击“手术转入”
|
||
//--2.【手术进行中】 点击“手术开始”
|
||
//--3.【术后恢复】 点击“手术结束”
|
||
//--4.【离开手术室】 从点击手术结束
|
||
//--5.【转入复苏室】 麻醉恢复记录单点击“转入”
|
||
//--6.【离开手术室】 点击“转出”恢复室
|
||
string OpeStatus = dts["State"].ToString();
|
||
string InRoomTime = dts["InRoomTime"].ToString();
|
||
string OperationBeginTime = dts["OperationBeginTime"].ToString();
|
||
string OperationEndTime = dts["OperationEndTime"].ToString();
|
||
string OutRoomTime = dts["OutRoomTime"].ToString();
|
||
string Temp = "";
|
||
if (OpeStatus == "等待手术")
|
||
{
|
||
Temp = "等待手术";
|
||
}
|
||
if (OpeStatus == "手术中" && InRoomTime != "" && OperationBeginTime == "" && OperationEndTime == "" && OutRoomTime == "")
|
||
{
|
||
Temp = "手术准备";
|
||
}
|
||
if (OpeStatus == "手术中" && InRoomTime != "" && OperationBeginTime != "" && OperationEndTime == "" && OutRoomTime == "")
|
||
{
|
||
Temp = "手术进行中";
|
||
}
|
||
if (OpeStatus == "手术中" && InRoomTime != "" && OperationBeginTime != "" && OperationEndTime != "" && OutRoomTime == "")
|
||
{
|
||
if (DateTime.Now < Convert.ToDateTime(OperationEndTime))
|
||
{
|
||
Temp = "手术进行中";
|
||
}
|
||
else
|
||
{
|
||
Temp = "术后恢复";
|
||
}
|
||
}
|
||
if (InRoomTime != "" && OperationBeginTime != "" && OperationEndTime != "" && OutRoomTime != "")
|
||
{
|
||
if (DateTime.Now < Convert.ToDateTime(OutRoomTime))
|
||
{
|
||
Temp = "术后恢复";
|
||
}
|
||
else if (dts["Pulse"].ToString() == "病房")
|
||
{
|
||
Temp = "手术结束安返病房";
|
||
}
|
||
else if (dts["Pulse"].ToString() == "恢复室")
|
||
{
|
||
Temp = "手术结束转恢复室";
|
||
}
|
||
else
|
||
{
|
||
Temp = "手术结束";
|
||
}
|
||
}
|
||
//if (OpeStatus == "4" && InRoomTime != "" && OutRoomTime == "")
|
||
//{
|
||
// Temp = "转入复苏室";
|
||
//}
|
||
//if (OpeStatus == "5" && InRoomTime != "" && OutRoomTime != "")
|
||
//{
|
||
// Temp = "离开复苏室";
|
||
//}
|
||
return Temp;
|
||
}
|
||
|
||
}
|
||
} |