對新登記得病人進行繳納押金,主要是對病人登記後的繳納金額進行記錄處理,可以根據病人信息在文本框內輸入,會查找到對應的病人,然後對其繳納的押金,押金會在後面出院結算時統一計算,根據病人的住院消費情況,病人可以重複繳納押金。功能如下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;//把篩選的數據綁定到表格
}
到此就完成一個簡單的交押金功能了,接下的是承志醫療管理系統技術解析牀位分配(五)僅供學習,禁止用於商業用途!