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