您的位置:首页 > 其它

承志医疗管理系统技术解析床位分配(五)

2015-05-30 14:57 525 查看
缴纳完押金后对病人按照不同的病人,根据不同的症状,分配到不同的病区,从而进行分配床位。如图2.3(图1)



2.3(图1)

查询未分配病床病人如2.3(图2)



从界面上可以看到所用到的控件有

控件名称

说明
文本(TextBox)

控件可以在工具箱直接拖动至窗体,拖至窗体后右击属性可以修改控件的样式和各种属性,还可以编辑事件

按钮(Button)

表格(DataGridView)

容器(Panel)

实现查询未分配病床病功能所用到的表和关系如下:



主要业务表

床位分配表 ZY_BedLocationAllocationList
列名

数据类型

说明

BedLocationAllocationID

int - Identity

床位分配ID

RegisterInhospitalID

int

住院登记ID

BedLocationID

int

床位ID

EnterResideTime

datetime

入住时间

QuitBedTime

datetime

退床时间

QuitBedNo

bit

退床否

首先分析看到界面中病区的实现。 病区其实时一个Button按钮,然后给每个病区对应的赋值对应病区ID。功能实现代码如下:

region 窗体激活时给病区赋值
private void Frm_ChuanWeiFenPei_Load(object sender, EventArgs e)
{

dtBingQu = myFrm_ChuanWeiFenPeiClient.Frm_ChuanWeiFenPei_SelectBingQu().Tables[0];
if (dtBingQu.Rows.Count > 0)
{
//给每一个病区赋值,用于单击时获取,再根据获取的ID进行对应床位的绑定
btnComprehensiveIllnessArea.TabIndex =
(int)dtBingQu.Rows[0]["IllnessAreaID"];
btnSpiritIllnessArea.TabIndex =
(int)dtBingQu.Rows[1]["IllnessAreaID"];
btnMedicineIllnessArea.TabIndex =
(int)dtBingQu.Rows[2]["IllnessAreaID"];
btnEyeIllnessArea.TabIndex =
(int)dtBingQu.Rows[3]["IllnessAreaID"];
btnWomanIllnessArea.TabIndex =
(int)dtBingQu.Rows[4]["IllnessAreaID"];
btnBoneIllnessArea.TabIndex =
(int)dtBingQu.Rows[5]["IllnessAreaID"];
btnMouthIllnessArea.TabIndex =
(int)dtBingQu.Rows[6]["IllnessAreaID"];
btnComprehensiveIllnessArea_Click(null, null);
}
#region 绑定病人信息
DataTable dtZhuYuanDengJi = myFrm_ChuanWeiFenPeiClient.Frm_ChuanWeiFenPei_SelectZhuYuanDengJiBiao
(PulicStatic.ZhuYuanDengjiID).Tables[0];
if (dtZhuYuanDengJi.Rows.Count > 0)
{

txtName.Text = dtZhuYuanDengJi.Rows[0]["Name"].ToString().Trim();
txtInHospitalNumber1.Text = dtZhuYuanDengJi.Rows[0]["InHospitalNumber"].ToString().Trim();
txtInHospitalNumber.Text = dtZhuYuanDengJi.Rows[0]["InHospitalNumber"].ToString().Trim();
txtSex.Text = dtZhuYuanDengJi.Rows[0]["Sex"].ToString().Trim();
txtOffice.Text = dtZhuYuanDengJi.Rows[0]["NurseGrad"].ToString().Trim();
txtLinkMan.Text = dtZhuYuanDengJi.Rows[0]["LinkMan"].ToString().Trim();
txtLinkManRelation.Text = dtZhuYuanDengJi.Rows[0]["Relation"].ToString().Trim();
txtLinkManName.Text = dtZhuYuanDengJi.Rows[0]["LinkMan"].ToString().Trim();
txtMenZhenNumber.Text = dtZhuYuanDengJi.Rows[0]["MenZhenNumber"].ToString().Trim();
txtMenZhengDiagnosi.Text = dtZhuYuanDengJi.Rows[0]["MenZhengDiagnosi"].ToString().Trim();
txtNation.Text = dtZhuYuanDengJi.Rows[0]["Nation"].ToString().Trim();
txtEnterHospitalDate.Text = dtZhuYuanDengJi.Rows[0]["EnterHospitalDate"].ToString().Trim();
}
#endregion
}
#endregion


病区单击事件

private void btnComprehensiveIllnessArea_Click(object sender, EventArgs e)
{   //点击时获取病区ID
int BingQuID = (int)btnComprehensiveIllnessArea.TabIndex;
PulicStatic.BingQuID = BingQuID;
SheZhiBingFang(BingQuID);//根据病区ID绑定病床的方法

}


动态床位的实现代码如下:



#region 根据病区绘制病床
/// <summary>
/// for循环计算床位坐标,循环加载床位
/// </summary>
/// <param name="BingQuID">病区ID,根据病区ID绑定对应床位</param>
public void SheZhiBingFang(int BingQuID)
{
plBedLocation.Controls.Clear();//清空容器,方便重新加载不同的床
DataTable dtBingChuan = myFrm_ChuanWeiFenPeiClient.
Frm_ChuanWeiFenPei_SelectBingChuan(BingQuID).Tables[0];//根据病区ID绑定数据
for (int RowsIndex = 0, leftX = 10, leftY = 80; RowsIndex < dtBingChuan.Rows.Count; RowsIndex++)
{
int RowCount = RowsIndex / 3;//计算床位行数
if (RowsIndex % 3 == 0)//判断是否整除
{
leftX = 10;//如果整除横坐标变为10
}
else
{

leftX += 130;//如果不整除横坐标变为10+120
}
leftY = 5 + RowCount * 100;//纵坐标5+行数乘100
Button btnChuanWei = new Button();//定义一个button
btnChuanWei.Tag = dtBingChuan.Rows[RowsIndex]["BedLocationID"].ToString().Trim();
btnChuanWei.Name = dtBingChuan.Rows[RowsIndex]["StatusID"].ToString().Trim();
btnChuanWei.Text = dtBingChuan.Rows[RowsIndex]["BedLocationNumber"].ToString().Trim();
btnChuanWei.Size = new Size(120, 60);//设置button的大小
btnChuanWei.FlatAppearance.BorderSize = 0;//设置button的边框为0
btnChuanWei.FlatAppearance.MouseDownBackColor = Color.Red;//按下时颜色为红色
btnChuanWei.FlatAppearance.MouseOverBackColor = Color.RoyalBlue;//经过时为蓝色
btnChuanWei.TextAlign = System.Drawing.ContentAlignment.BottomCenter;//图片和文字对齐方式
btnChuanWei.FlatStyle = FlatStyle.Flat;//设置button的样式
btnChuanWei.Location = new Point(leftX, leftY);//坐标位置
int ChuangWeiZhuanTaiID = Convert.ToInt32(dtBingChuan.Rows[RowsIndex]["StatusID"].ToString().Trim());
DataTable dtXingBie = myFrm_ChuanWeiFenPeiClient.Frm_ChuanWeiFenPei_SelectBingChuanAndXingBie
(BingQuID,Convert .ToInt32(btnChuanWei.Tag)).Tables[0];
int Incount = dtXingBie.Rows.Count;
if (Incount > 0)
{
//判断病人的性别,如果为男的床位图像为男的,否则为女
string XingBie = dtXingBie.Rows[0]["Sex"].ToString().Trim();
if (XingBie == "男" && ChuangWeiZhuanTaiID==108)
{
ChuangWeiZhuanTaiID = ChuangWeiZhuanTaiID + 2;

}
}
switch (ChuangWeiZhuanTaiID)
{
case 107:
btnChuanWei.Image = imgTupiang.Images["床.gif"];
break;
case 108:

btnChuanWei.Image = imgTupiang.Images["wife.gif"];
break;
case 109:
btnChuanWei.Image = imgTupiang.Images["停床.gif"];
break;
case 110:
btnChuanWei.Image = imgTupiang.Images["man.gif"];
break;
}
plBedLocation.Controls.Add(btnChuanWei);//把每一个床位放到容器中
btnChuanWei.MouseClick += new MouseEventHandler(btnChuanWei_MouseClick);//定义单击事件委托
btnChuanWei.MouseEnter+=new EventHandler(btnChuanWei_MouseEnter);//定义鼠标进入控件委托
btnChuanWei .MouseLeave+=new EventHandler(btnChuanWei_MouseLeave);//定义鼠标离开事件委托
}
}

#endregion


实现鼠标进入病床时出现边框,离开时无边框。





鼠标进入事件

public void btnChuanWei_MouseEnter(object sender, EventArgs e)
{
Button btn = sender as Button;  //把触发事件的对象转换为图片对象
btn.Cursor = Cursors.Hand;//显示手指按钮
Pen pen = new Pen(Color.Red, 5);//定义画笔对象用于绘图
Graphics gra = plBedLocation.CreateGraphics();//定义画板对象

// 参数:
//   pen:
//     System.Drawing.Pen,它确定矩形的颜色、宽度和样式。
//
gra.DrawRectangle(pen, new Rectangle(btn.Location.X, btn.Location.Y, btn.Size.Width, btn.Size.Height));

}
鼠标离开事件
public void btnChuanWei_MouseLeave(object sender, EventArgs e)
{
Button btn = sender as Button; //把触发事件的对象转换为图片对象
if (Convert.ToInt32(btn.Tag).ToString() != ChuangWeiIDY)//如果
{

btn.Cursor = Cursors.Hand;//显示手指按钮
Pen pen = new Pen(plBedLocation.BackColor, 5);////用于绘图,实例化画笔对象,颜色为画板的背景颜色,粗细为5个像素
Graphics gra = plBedLocation.CreateGraphics();
gra.DrawRectangle(pen, new Rectangle(btn.Location.X, btn.Location.Y,btn.Size.Width, btn.Size.Height)); //用于透明绘图
}

}

选好病区病床后,接下就是保存

第一步:数据库存储过程:

if @Type='Frm_ChuanWeiFenPei_insertChuangWeiFenPei'
begin
insert  ZY_BedLocationAllocationList(RegisterInhospitalID, BedLocationID, EnterResideTime, QuitBedNo)
values (@RegisterInhospitalID, @BedLocationID, @EnterResideTime, 0) --保存
update  ZY_InHospitalRegisterList
set ZY_InHospitalRegisterList.BedLocationAllocationNo=1
where ZY_InHospitalRegisterList.RegisterInhospitalID=@RegisterInhospitalID
end--新增床位分配表数据和修改住院分配床状态
if  @Type='Frm_ChuanWeiFenPei_UpdateChuangWeiZhuangTai'
begin
update ZY_BedLocationList
set      StatusID=108
where ZY_BedLocationList.BedLocationID=@BedLocationID
end--修改床位状态


第二步:逻辑层代码

[OperationContract]
public int Frm_ChuanWeiFenPei_insertChuangWeiFenPei
(int ZhuYuanDengJiID, int ChuangWeiID, DateTime RuZhuShiJian)
{
SqlParameter[] mySqlParameters = {
new SqlParameter ("@Type",SqlDbType .Char),
new SqlParameter ("@RegisterInhospitalID",SqlDbType.Int),
new SqlParameter ("@BedLocationID",SqlDbType .Int),
new SqlParameter ("@EnterResideTime",SqlDbType .DateTime),
};
mySqlParameters[0].Value = "Frm_ChuanWeiFenPei_insertChuangWeiFenPei";
mySqlParameters[1].Value = ZhuYuanDengJiID;
mySqlParameters[2].Value = ChuangWeiID;
mySqlParameters[3].Value = RuZhuShiJian;
return myDALMethod.UpdateData("住院登记_Frm_ChuanWeiFenPei", mySqlParameters);

}
[OperationContract]
public int Frm_ChuanWeiFenPei_UpdateChuangWeiZhuangTai(int ChuangWeiID)
{
SqlParameter[] mySqlParameters = {
new SqlParameter ("@Type",SqlDbType .Char),
new SqlParameter ("@BedLocationID",SqlDbType .Int),
};
mySqlParameters[0].Value = "Frm_ChuanWeiFenPei_UpdateChuangWeiZhuangTai";
mySqlParameters[1].Value = ChuangWeiID;
return myDALMethod.UpdateData("住院登记_Frm_ChuanWeiFenPei", mySqlParameters);

}

第三步:界面层代码

private void btnSave_Click(object sender, EventArgs e)
{

int ChuangWeiID = ChuanWeiID;
DateTime RuZhuShiJian = DateTime.Now;
int i = myFrm_ChuanWeiFenPeiClient.Frm_ChuanWeiFenPei_insertChuangWeiFenPei
(PulicStatic.ZhuYuanDengjiID, ChuangWeiID, RuZhuShiJian);
int j = myFrm_ChuanWeiFenPeiClient.Frm_ChuanWeiFenPei_UpdateChuangWeiZhuangTai(ChuangWeiID);
//调用逻辑层方法

if (i > 0 && j > 0)
{
MessageBox.Show("已安排床位");
SheZhiBingFang(PulicStatic.BingQuID);
PulicStatic.ZhuYuanDengjiID = 0;

}
}
#endregion


仅供学习,禁止用于商业用途!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: