承志醫療管理系統技術解析交押金(四)

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

   僅供學習,禁止用於商業用途!

                                                                                     
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章