承志医疗管理系统技术解析交押金(四)

9 篇文章 0 订阅

  对新登记得病人进行缴纳押金,主要是对病人登记后的缴纳金额进行记录处理,可以根据病人信息在文本框内输入,会查找到对应的病人,然后对其缴纳的押金,押金会在后面出院结算时统一计算,根据病人的住院消费情况,病人可以重复缴纳押金。功能如下2.2(图1):


  2.2(图1)

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

控件名称

说明

文本(TextBox)

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

按钮(Button)

表格(DataGridView)

 实现这功能所用到的表和关系如下


表1住院登记表(dbo.ZY_InHospitalRegisterList)

  列名

    数据类型 /  主外键

说明

RegisterInhospitalID

int - Identity(主键)

住院登记ID

InHospitalNumber

nchar (20)

住院号

MedicalTreatmentWaysID

int

医疗方式ID

Name

nchar (10)

姓名

NationalityID

int

国籍ID

ProvinceID

int

省份ID

CityID

int

市ID

CountyID

int

县ID

VillageID

Int(外键)

村ID

HuKouAddress

nchar (50)

户口地址

FamilyAddress

nchar (50)

家庭住址

ProfessionID

Int(外键)

职业ID

LinkMan

nchar (20)

联系人

PhoneNumber

nchar (20)

手机号

MenZhenNumber

nchar (50)

门诊号

EnterHospitalDate

datetime

入院日期

EnterDiagnosis

nchar (50)

入院诊断

NurseGradeID

int(外键)

护理级别ID

CommunityFilesNumber

nchar (20)

社区档案号

MedicalTreatmentCard

nchar (20)

医疗证号

SexID

int(外键)

性别ID

NationID

int(外键)

民族ID

WorkUnit

nchar (50)

工作单位

Relation

nchar (10)

关系

ElectronMail

nchar (20)

电子邮件

MenZhengDiagnosi

nchar (50)

门诊诊断

EnterHospitalCaseID

int(外键)

入院情况ID

MedicalRecordNumber

nchar (20)

病案号

IdentityCardNumber

nchar (20)

身份证号

BirthDate

datetime

出生日期

MarriageCaseID

int(外键)

婚姻状况ID

EnterNumber

decimal (18)

住院次数

PostalNumber_s

nchar (10)

邮政编码_s

Age

nchar (10)

年龄

PostalNumber_d

nchar (10)

邮政编码_d

UnitPhone

nchar (20)

单位电话

Phone

nchar (20)

电话

LinkManAddress

nchar (50)

联系人住址

QQNumber

nchar (20)

QQ号

DoctorID

int(外键)

医生ID

OfficeID

int(外键)

科室ID

ConfirmDiagnoseDate

datetime

确诊日期

DietCaseID

int(外键)

饮食情况ID

BloodTypeID

int(外键)

血型ID

LeaveHospitalNo

bit

出院否

MenZhenRegisterID

int

门诊登记ID

BedLocationAllocationNo

bit

床位分配否


表2押金表

列名

    数据类型 /  主外键

说明

PledgeGoldID

int - Identity(主键)

押金ID

PledgeGoldBillsNumber

nchar (20)

押金单号

BillsNumber

nchar (20)

单据号

PledgeGold

decimal (18, 2)

押金

RegisterInhospitalID

Int(外键)

住院登记ID

PledgeGoldDate

datetime

押金日期

LeaveHospitalNo

bit

出院否


第一步:数据库存储过程1.界面查询功能

if @Type='Frm_ZhuYuanYaJin_SelectZhuYuanDengJiBiao'
	begin
SELECT     AttributeMingXiList.AttributeMingXiName AS NurseGrad, AttributeMingXiList_1.AttributeMingXiName AS Sex, AttributeMingXiList_2.AttributeMingXiName AS Nation, 
                      ZY_InHospitalRegisterList.RegisterInhospitalID, ZY_InHospitalRegisterList.InHospitalNumber, ZY_InHospitalRegisterList.Name AS BingRenName, ZY_InHospitalRegisterList.FamilyAddress, 
                      ZY_InHospitalRegisterList.LinkMan, ZY_InHospitalRegisterList.PhoneNumber, ZY_InHospitalRegisterList.MenZhenNumber, ZY_InHospitalRegisterList.EnterHospitalDate, 
                      ZY_InHospitalRegisterList.WorkUnit, ZY_InHospitalRegisterList.MedicalRecordNumber, ZY_InHospitalRegisterList.EnterNumber, ZY_InHospitalRegisterList.Relation, 
                      ZY_InHospitalRegisterList.MenZhengDiagnosi
FROM         AttributeMingXiList INNER JOIN
                      ZY_InHospitalRegisterList ON AttributeMingXiList.AttributeMingXiID = ZY_InHospitalRegisterList.NurseGradeID INNER JOIN
                      AttributeMingXiList AS AttributeMingXiList_1 ON ZY_InHospitalRegisterList.SexID = AttributeMingXiList_1.AttributeMingXiID INNER JOIN
                      AttributeMingXiList AS AttributeMingXiList_2 ON ZY_InHospitalRegisterList.NationID = AttributeMingXiList_2.AttributeMingXiID
     where ZY_InHospitalRegisterList.LeaveHospitalNo=0
	end--查询住院登记表

第二步:逻辑层(BLL)代码

 public class Frm_ZhuYuanYaJin
    {
        DALPublic.DALMethod myDALMethod = new DALPublic.DALMethod();
        [OperationContract]
        public DataSet Frm_ZhuYuanYaJin_SelectZhuYuanDengJiBiao()
        {
            SqlParameter[] mySqlParameters = {
                                               new SqlParameter ("@Type",SqlDbType .Char),
                                           };
            mySqlParameters[0].Value = "Frm_ZhuYuanYaJin_SelectZhuYuanDengJiBiao";
            DataTable dt = myDALMethod.QueryDataTable("住院登记_Frm_ZhuYuanYaJin", mySqlParameters);
            DataSet ds = new DataSet();
            ds.Tables.Add(dt);
            return ds;
        }

第三步:界面层(UIL)代码

 private void Frm_ZhuYuanYaJin_Load(object sender, EventArgs e)
        {
            DataTable dt = myFrm_ZhuYuanYaJinClient.Frm_ZhuYuanYaJin_SelectZhuYuanDengJiBiao().Tables[0];
            dgRegisterInformation.DataSource = dt;//绑定数据源
            if (dgRegisterInformation.Rows.Count > 0)//如果数据行数>0
            {
                BangDingBingRenXinXi();//绑定病人信息
            }
            
        }
        #region 绑定病人信息
        public void BangDingBingRenXinXi()
        {
           

            txtName.Text = dgRegisterInformation.CurrentRow.Cells["BingRenName"].Value.ToString().Trim();
            txtInHospitalNumber.Text = dgRegisterInformation.CurrentRow.Cells["InHospitalNumber"].Value.ToString().Trim();
            txtInHospitalNumber1.Text = dgRegisterInformation.CurrentRow.Cells["InHospitalNumber"].Value.ToString().Trim();
            txtSex.Text = dgRegisterInformation.CurrentRow.Cells["Sex"].Value.ToString().Trim();
            txtOffice.Text = dgRegisterInformation.CurrentRow.Cells["NurseGrad"].Value.ToString().Trim();
            txtLinkMan.Text = dgRegisterInformation.CurrentRow.Cells["LinkMan"].Value.ToString().Trim();
            txtLinkManRelation.Text = dgRegisterInformation.CurrentRow.Cells["Relation"].Value.ToString().Trim();
            txtLinkManName.Text = dgRegisterInformation.CurrentRow.Cells["LinkMan"].Value.ToString().Trim();
            txtMenZhenNumber.Text = dgRegisterInformation.CurrentRow.Cells["MenZhenNumber"].Value.ToString().Trim();
            txtMenZhengDiagnosi.Text = dgRegisterInformation.CurrentRow.Cells["MenZhengDiagnosi"].Value.ToString().Trim();
            txtNation.Text = dgRegisterInformation.CurrentRow.Cells["Nation"].Value.ToString().Trim();
            txtEnterHospitalDate.Text = dgRegisterInformation.CurrentRow.Cells["EnterHospitalDate"].Value.ToString().Trim();
        }
        #endregion


交取完押金后保存

第一步:数据库存储过程

if @Type='Frm_ZhuYuanYaJin_insertYaJin'
	begin
	insert    ZY_PledgeGoldBillsList(RegisterInhospitalID,PledgeGold,BillsNumber,
	          PledgeGoldBillsNumber, PledgeGoldDate,LeaveHospitalNo)
     values   (@RegisterInhospitalID,@PledgeGold,@BillsNumber,@PledgeGoldBillsNumber, 
              @PledgeGoldDate,0)	
	end--新增押金


第二步:逻辑层(BLL)代码

 [OperationContract]
        public int Frm_ZhuYuanYaJin_insertYaJin(int ZhuYuanDengJiID, 
            decimal deYaJin,string strDanJuHao,string strYaJinDanHao, DateTime YajinRiQi)
        {
            SqlParameter[] mySqlParameters = {
                                               new SqlParameter ("@Type",SqlDbType .Char),
                                               new SqlParameter ("@RegisterInhospitalID",SqlDbType .Int),
                                               new SqlParameter ("@PledgeGold",SqlDbType .Decimal),
                                               new SqlParameter ("@BillsNumber",SqlDbType .Char),
                                               new SqlParameter ("@PledgeGoldBillsNumber",SqlDbType .Char),
                                               new SqlParameter ("@PledgeGoldDate",SqlDbType .DateTime),
                                           };
            mySqlParameters[0].Value = "Frm_ZhuYuanYaJin_insertYaJin";
            mySqlParameters[1].Value = ZhuYuanDengJiID;
            mySqlParameters[2].Value = deYaJin;
            mySqlParameters[3].Value = strDanJuHao;
            mySqlParameters[4].Value = strYaJinDanHao;
            mySqlParameters[5].Value = YajinRiQi;
            return myDALMethod.UpdateData("<span style="font-family: Arial, Helvetica, sans-serif;">住院登记</span>_Frm_ZhuYuanYaJin", mySqlParameters);


        }

第三步:界面层(UIL)代码

  private void btnSave_Click(object sender, EventArgs e)
        {
            try
            {
                int ZhuYuanDengJiID = PulicStatic.ZhuYuanDengjiID;//获取住院ID
                decimal deYaJin = Convert.ToDecimal(txtPledgeGold.Text);//获取输入的押金
                string strDanJuHao = txtBillsNumber.Text;//获取单据号
                string strYaJinDanHao = txtPledgeGoldBillsNumber.Text;//获取押金单号
                DateTime YajinRiQi = Convert.ToDateTime(dtpDate.Text);//获取日期
                int i = myFrm_ZhuYuanYaJinClient.Frm_ZhuYuanYaJin_insertYaJin
                    (ZhuYuanDengJiID, deYaJin, strDanJuHao, strYaJinDanHao, YajinRiQi);
                if (i > 0)
                {
                    MessageBox.Show("交押金成功!!");
                    dgRegisterInformation_CellClick(null, null);//刷新
                    panel3.Visible = false;//隐藏押金表单
                    i = 0;
                    txtPledgeGold.Text = "";//保存成功后清空
                    txtPledgeGoldBillsNumber.Text = "";//保存成功后清空
                    txtBillsNumber.Text = "";//保存成功后清空
                }
            }
            catch { MessageBox.Show("交完押金才能保存"); }

        }

保存后单击病人信息可以根据不同的病人查询交押金情况

功能截图


功能实现:

第一步:数据库存储过程

	if @Type='Frm_ZhuYuanYaJin_selectYaJinBiao'
	begin
		SELECT     ZY_PledgeGoldBillsList.PledgeGoldBillsNumber, ZY_PledgeGoldBillsList.BillsNumber,
				   ZY_PledgeGoldBillsList.PledgeGold, ZY_PledgeGoldBillsList.PledgeGoldDate
		FROM       ZY_PledgeGoldBillsList INNER JOIN
				   ZY_InHospitalRegisterList ON ZY_PledgeGoldBillsList.RegisterInhospitalID =
				   ZY_InHospitalRegisterList.RegisterInhospitalID
		where      ZY_PledgeGoldBillsList.RegisterInhospitalID=@RegisterInhospitalID 
		           and ZY_PledgeGoldBillsList.LeaveHospitalNo=0
  end--查询押金


第二步:逻辑层(BLL)代码

 [OperationContract]
        public DataSet Frm_ZhuYuanYaJin_selectYaJinBiao(int ZhuYuanDengJiID)
        {
            SqlParameter[] mySqlParameters = {
                                               new SqlParameter ("@Type",SqlDbType .Char),
                                               new SqlParameter ("@RegisterInhospitalID",SqlDbType .Int ),
                                           };
            mySqlParameters[0].Value = "Frm_ZhuYuanYaJin_selectYaJinBiao";
            mySqlParameters[1].Value = ZhuYuanDengJiID;
            DataTable dt = myDALMethod.QueryDataTable("住院登记_Frm_ZhuYuanYaJin", mySqlParameters);
            DataSet ds = new DataSet();
            ds.Tables.Add(dt);
            return ds;
        }

第三步:界面层(UIL)代码

region 单击查询押金
        private void dgRegisterInformation_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            BangDingBingRenXinXi();//绑定病人信息到右边资料栏
            PulicStatic.ZhuYuanDengjiID = Convert.ToInt32
                (dgRegisterInformation.CurrentRow.Cells["RegisterInhospitalID"].Value);//给静态住院ID赋值
            DataTable dtYaJiXinXi = myFrm_ZhuYuanYaJinClient.Frm_ZhuYuanYaJin_selectYaJinBiao
                (PulicStatic.ZhuYuanDengjiID).Tables[0];//查询押金
            dgCashPledgeInformation.Rows.Clear();//开始选清空押金表格
            if (dtYaJiXinXi.Rows.Count > 0)//如果查到数据
            { //for循环动态的加载每一天押金
                for (int i = 0; i < dtYaJiXinXi.Rows.Count; i++)
                {
                    dgCashPledgeInformation.Rows.Add(1);//为表格条件一行
                    dgCashPledgeInformation.Rows[i].Cells["PledgeGold"].Value =
                        dtYaJiXinXi.Rows[i]["PledgeGold"].ToString();
                    dgCashPledgeInformation.Rows[i].Cells["PledgeGoldBillsNumber"].Value =
                        dtYaJiXinXi.Rows[i]["PledgeGoldBillsNumber"].ToString();
                    dgCashPledgeInformation.Rows[i].Cells["BillsNumber"].Value =
                        dtYaJiXinXi.Rows[i]["BillsNumber"].ToString();
                    dgCashPledgeInformation.Rows[i].Cells["PledgeGoldDate"].Value =
                        dtYaJiXinXi.Rows[i]["PledgeGoldDate"].ToString();

                }
                dgCashPledgeInformation.Rows.Add(1);//循环绑定好数据后在表格后再添加一行空行
               //为空行对应赋值
                dgCashPledgeInformation.Rows[dtYaJiXinXi.Rows.Count].Cells["PledgeGoldBillsNumber"].Value = "合计:";
                //设置最后一行字体为后色
                dgCashPledgeInformation.Rows[dtYaJiXinXi.Rows.Count].DefaultCellStyle.ForeColor = Color.Red;
                //设置最后一行背景颜色为蓝色
                dgCashPledgeInformation.Rows[dtYaJiXinXi.Rows.Count].DefaultCellStyle.BackColor = Color.SkyBlue;
                Heji();//调用自定义的方法计算押金总和
            }

        }
        #endregion
        #region 合计押金
        public void Heji()
        {
            decimal Yaji = 0;
            //for循环计算押金
            for (int j = 0; j < dgCashPledgeInformation.Rows.Count; j++)
            {
                Yaji += Convert.ToDecimal(dgCashPledgeInformation.Rows[j].Cells["PledgeGold"].Value);
            }
            //给表格最后一行赋值
            dgCashPledgeInformation.Rows[dgCashPledgeInformation.Rows.Count - 1].Cells["PledgeGold"].Value = Yaji;

        }
        #endregion

到次住院押金功能已经完成;下面的是一些辅助功能,如果未交押金的病太多,可以在搜索框输入搜索对应病人,代码实现如下:

 private void txtRetrieval_TextChanged(object sender, EventArgs e)
        {
            string NeiRong = txtRetrieval.Text.Trim();//获取文本框输入的值
            DataTable dtBingRenXiXi = myFrm_ZhuYuanYaJinClient.
                Frm_ZhuYuanYaJin_SelectZhuYuanDengJiBiao().Tables[0];//查询全部的病人信息
            DataView dvBingRenXinXi = new DataView(dtBingRenXiXi);//实例化数据集
            dvBingRenXinXi.RowFilter = "InHospitalNumber like'%" + NeiRong + "%' or BingRenName like'%"
                + NeiRong + "%'or BingRenName like'%" + MenZhenNumber + "%'";//根据输入的内容筛选数据
            dgRegisterInformation.DataSource = dvBingRenXinXi;//把筛选的数据绑定到表格
        }
到此就完成一个简单的交押金功能了,接下的是承志医疗管理系统技术解析床位分配(五)

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

                                                                                     
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值