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

9 篇文章 0 订阅

缴纳完押金后对病人按照不同的病人,根据不同的症状,分配到不同的病区,从而进行分配床位。如图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

                                                                 仅供学习,禁止用于商业用途!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值