承志医疗管理系统技术解析床位分配(五)
2015-05-30 14:57
525 查看
缴纳完押金后对病人按照不同的病人,根据不同的症状,分配到不同的病区,从而进行分配床位。如图2.3(图1)
2.3(图1)
查询未分配病床病人如2.3(图2)
从界面上可以看到所用到的控件有
实现查询未分配病床病功能所用到的表和关系如下:
主要业务表
床位分配表 ZY_BedLocationAllocationList
首先分析看到界面中病区的实现。 病区其实时一个Button按钮,然后给每个病区对应的赋值对应病区ID。功能实现代码如下:
病区单击事件
动态床位的实现代码如下:
实现鼠标进入病床时出现边框,离开时无边框。
鼠标进入事件
选好病区病床后,接下就是保存
第一步:数据库存储过程:
第二步:逻辑层代码
第三步:界面层代码
仅供学习,禁止用于商业用途!
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 | 退床否 |
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
仅供学习,禁止用于商业用途!
相关文章推荐
- 用例建模
- PhoneGap安装配置
- Error android.text.StaticLayout.calculateEllipsis(StaticLayout.java:783)
- epoll处理高并发连接丢失连接的问题
- opencv for android 教程
- hdu3397 Sequence operation
- Centos忘记Root密码怎么办?
- javascript 判断微信浏览器
- 网页元素居中攻略记_(2)元素垂直居中
- 网页元素居中攻略记_(2)元素垂直居中
- 仿函数经验总结
- 飞机大战-BasicView
- Python 内置彩蛋
- 解决struts2在(IE,Firefox)下载文件名乱码问题
- 【小萝莉说Crash】第一期:Unrecognized selector sent to instance xxxx
- 【组合数学】Bzoj2916 [Poi1997]Monochromatic Triangles
- PHP preg_match正则表达
- 怎样通过dnspod进行域名解析
- a Dll project without DllMain ?
- poj 3040