对新登记得病人进行缴纳押金,主要是对病人登记后的缴纳金额进行记录处理,可以根据病人信息在文本框内输入,会查找到对应的病人,然后对其缴纳的押金,押金会在后面出院结算时统一计算,根据病人的住院消费情况,病人可以重复缴纳押金。功能如下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;//把筛选的数据绑定到表格
}
到此就完成一个简单的交押金功能了,接下的是承志医疗管理系统技术解析床位分配(五)
仅供学习,禁止用于商业用途!