1.23门诊挂号
1:在主界面点击门诊挂号,如图(1)
图(1)
会进入这个界面,如图(2)
图(2)
然后查找病人,会出现这个界面,如图(3)
图(3)
最后出现这个效果,如图(4)
图(4)
第一步:数据库
1、表与关系
表1:门诊挂号表(MZ_MenZhenHangNumberList)
Primary Key(s): MenZhenHangNumberID
列名 | 数据类型 | 说明 |
MenZhenHangNumberID | int - Identity | 门诊挂号自动编号 |
MedicalTreatmentInsuranceID | int | (医疗保险表)医保ID |
OfficeID | int | (科室表)科室ID |
RegisterTypeID | int | (挂号类型表)挂号类型ID |
DoctorID | int | (医生表)挂号医生ID |
MenZhenRegisterID | int | (门诊登记表)门诊登记ID |
BitBillsNo | bit | 打单否 |
HangNumberTime | datetime | 挂号时间 |
1:绑定dgv中的数据源
第一步:数据库的存储过程
if(@Type='Frm_MenZhenGuaHao_ChaXunBingRen')
begin
SELECT MZ_MenZhenRegisterList.MenZhenNumber, MZ_MenZhenRegisterList.Name, MZ_MenZhenRegisterList.SpellCode, MZ_MenZhenRegisterList.BirthDate, MZ_MenZhenRegisterList.Age,
MZ_MenZhenRegisterList.IdentityCard, MZ_MenZhenRegisterList.MedicalTreatmentCard, MZ_MenZhenRegisterList.RegisterDate, MZ_MenZhenRegisterList.FamilyAddress,
MZ_MenZhenRegisterList.HousePhone, MZ_MenZhenRegisterList.HangNumberNo, AttributeMingXiList.AttributeMingXiName AS Sex, AttributeMingXiList_2.AttributeMingXiName AS Profession,
AttributeMingXiList_3.AttributeMingXiName AS Nationality, AttributeMingXiList_4.AttributeMingXiName AS Province, AttributeMingXiList_5.AttributeMingXiName AS County,
AttributeMingXiList_6.AttributeMingXiName AS Nation, AttributeMingXiList_7.AttributeMingXiName AS Marriage, SYS_UserList.UserName AS MakeBillsPerson,
MZ_MenZhenRegisterList.MenZhenRegisterID, BS_DiscountList.DiscountTypeName
FROM MZ_MenZhenRegisterList INNERJOIN
AttributeMingXiListON MZ_MenZhenRegisterList.SexID = AttributeMingXiList.AttributeMingXiID INNER JOIN
AttributeMingXiListAS AttributeMingXiList_2ON MZ_MenZhenRegisterList.ProfessionID = AttributeMingXiList_2.AttributeMingXiID INNER JOIN
AttributeMingXiListAS AttributeMingXiList_3ON MZ_MenZhenRegisterList.NationalityID = AttributeMingXiList_3.AttributeMingXiID INNER JOIN
AttributeMingXiListAS AttributeMingXiList_4ON MZ_MenZhenRegisterList.ProvinceID = AttributeMingXiList_4.AttributeMingXiID INNER JOIN
AttributeMingXiListAS AttributeMingXiList_5ON MZ_MenZhenRegisterList.CountyID = AttributeMingXiList_5.AttributeMingXiID INNER JOIN
AttributeMingXiListAS AttributeMingXiList_6ON MZ_MenZhenRegisterList.NationID = AttributeMingXiList_6.AttributeMingXiID INNER JOIN
AttributeMingXiListAS AttributeMingXiList_7ON MZ_MenZhenRegisterList.MarriageID = AttributeMingXiList_7.AttributeMingXiID INNER JOIN
SYS_UserList ON MZ_MenZhenRegisterList.MakeBillsPersonID = SYS_UserList.UserID INNER JOIN
BS_DiscountListON MZ_MenZhenRegisterList.MedicalTreatmentInsuranceTypeID= BS_DiscountList.DiscountTypeID
where MZ_MenZhenRegisterList.HangNumberNo=0 and MZ_MenZhenRegisterList.ChargeNo=0
end
第二步:逻辑层(BLL)代码
DALPublic.DALMethod myDALMethod = new DALPublic.DALMethod();
[OperationContract]
public DataSet Frm_MenZhenGuaHao_ChaXunBingRen()
{
SqlParameter[] mySqlParameters = {
new SqlParameter ("@Type",SqlDbType .Char),
};
mySqlParameters[0].Value = "Frm_MenZhenGuaHao_ChaXunBingRen";
DataTable dt = myDALMethod.QueryDataTable("门诊登记_Frm_MenZhenGuaHao", mySqlParameters);
DataSet ds = new DataSet();
ds.Tables.Add(dt);
return ds;
}
第三步:界面层(UIL)代码,在窗体的Load事件中绑定数据源
private void Frm_XuanZeBingRen_Load(object sender, EventArgs e)
{
dgvBingRenXinXi.DataSource = myFrm_MenZhenGuaHaoClient.Frm_MenZhenGuaHao_ChaXunBingRen().Tables[0];
}
2:模糊查询(选择门诊病人窗体)
第一步:数据库的存储过程
第二步:逻辑层(BLL)代码
(第一、二步和上第一、二步相同,所以就不写了)
第三步:界面层(UIL)代码,文本框Changed事件
private void txtChaXun_TextChanged(object sender, EventArgs e)
{
string strXingMing=txtChaXun.Text.Trim();//获取文本的值
DataTable dtBingRenAll= myFrm_MenZhenGuaHaoClient.Frm_MenZhenGuaHao_ChaXunBingRen().Tables[0];//获取数据装进数据表
DataView dvBingRenAll = new DataView(dtBingRenAll);//自定义一个视图,把数据表里的数据装进去
dvBingRenAll.RowFilter = "Name like'%" + strXingMing + "%' or SpellCode like'%" + strXingMing + "%'";//从数据库中的筛选Name,SpellCode进行模糊查询。"%"是表示大约的意思
dgvBingRenXinXi.DataSource = dvBingRenAll;//根据过滤的数据绑定dgv
}
4:跨窗体传值
从这个窗体
传到这个
v
没有储存过程
代码如下:
首先在选择病人那窗体定义静态变量,定义静态变量就是可以跨窗体传值
public static int intBingRenID;
public static string strYiLiaoFangShi;
public static string strXingBie;
public static string strMenZhenHao;
public static string strXingMing;
public static string strNianLing;
public static string strShengFenZhengHao;
public static string strJiaTingZhuZhi;
public static string strYiLiaoZhengHao;
public static DateTime dtChuShengRiQi;
然后再获取dgv中的值
PublicStatic.intMenZhenGuaHaoID2 = Convert.ToInt32(dgvBingRenXinXi.CurrentRow.Cells["门诊登记ID"].Value);
intBingRenID = Convert.ToInt32(dgvBingRenXinXi.CurrentRow.Cells["门诊登记ID"].Value);
strYiLiaoFangShi = dgvBingRenXinXi.CurrentRow.Cells["医疗方式"].Value.ToString();
strXingBie = dgvBingRenXinXi.CurrentRow.Cells["性别"].Value.ToString();
strMenZhenHao = dgvBingRenXinXi.CurrentRow.Cells["门诊号"].Value.ToString().Trim();
strXingMing = dgvBingRenXinXi.CurrentRow.Cells["姓名"].Value.ToString().Trim();
strNianLing = dgvBingRenXinXi.CurrentRow.Cells["年龄"].Value.ToString().Trim();
strYiLiaoZhengHao = dgvBingRenXinXi.CurrentRow.Cells["医疗证号"].Value.ToString().Trim();
strShengFenZhengHao = dgvBingRenXinXi.CurrentRow.Cells["身份证"].Value.ToString().Trim();
strJiaTingZhuZhi = dgvBingRenXinXi.CurrentRow.Cells["家庭住址"].Value.ToString().Trim();
dtChuShengRiQi = Convert.ToDateTime(dgvBingRenXinXi.CurrentRow.Cells["出生日期"].Value);
this.Close();
this.Dispose();
}
catch { }
}
还有一步,就是再点击每一行的时候要获取每一行的ID
private void dgvBingRenXinXi_CellClick(object sender, DataGridViewCellEventArgs e)
{
PublicStatic.intMenZhenGuaHaoID2 = Convert.ToInt32(dgvBingRenXinXi.CurrentRow.Cells["门诊登记ID"].Value);
}
然后就是在门诊挂号窗体中“查询病人”按钮那里获值
#region 跨窗体获值
private voidbtnSelect_Click(object sender, EventArgs e)
{
try
{
门诊管理.Frm_XuanZeBingRen myFrm_XuanZeBingRen = newFrm_XuanZeBingRen();
myFrm_XuanZeBingRen.ShowDialog();
intBingRenID =Frm_XuanZeBingRen.intBingRenID;
txtName.Text =Frm_XuanZeBingRen.strXingMing.Trim();
txtMenZhenNumber.Text = Frm_XuanZeBingRen.strMenZhenHao.Trim();
txtSex.Text =Frm_XuanZeBingRen.strXingBie.Trim();
txtAge.Text =Frm_XuanZeBingRen.strNianLing.Trim();
dtpBirthDate.Text= Frm_XuanZeBingRen.dtChuShengRiQi.ToString().Trim();
cboMedicalTreatmentInsuranceID.Text= Frm_XuanZeBingRen.strYiLiaoFangShi.ToString();
txtMedicalTreatmentCard.Text =Frm_XuanZeBingRen.strYiLiaoZhengHao.Trim();
txtIdentityCard.Text = Frm_XuanZeBingRen.strShengFenZhengHao.Trim();
txtFamilyAddress.Text =Frm_XuanZeBingRen.strJiaTingZhuZhi.Trim();
}
catch { }
}
#endregion
5:根据选择科室显示收费详细,如图(5)
图(5)
代码如下:
#region 选择下拉框数据,dgvGuaHaoLeiXing才能显示数据
private void dgvGuaHaoLeiXing_CellClick(object sender, DataGridViewCellEventArgs e)
{
PublicStatic.intGuaHaoLeiXingID = Convert.ToInt32(dgvGuaHaoLeiXing.CurrentRow.Cells["挂号类型ID"].Value);
//在挂号类型这个DGV获取它的ID
if (kaiguan == 1)
{
dgvShouFeiMingXi.DataSource = myFrm_MenZhenGuaHaoClient.Frm_MenZhenGuaHao_dgvGuaHaoLeiXingMingXi(PublicStatic.intGuaHaoLeiXingID).Tables[0];
//当点击cboOfficeID_SelectionChangeCommitted这个事件获值的时候收费明细就会显示数据
}
}
private void cboOfficeID_SelectionChangeCommitted(object sender, EventArgs e)
{
kaiguan = 1;
dgvShouFeiMingXi.DataSource = myFrm_MenZhenGuaHaoClient.Frm_MenZhenGuaHao_dgvGuaHaoLeiXingMingXi(PublicStatic.intGuaHaoLeiXingID).Tables[0];
//在科室下拉定义一个开关,如果点击选择收费详细就会显示出数据
}
#endregion
6:新增挂号
第一步:数据库的存储过程
if(@Type='Frm_MenZhenGuaHao_Insert')
begin
insert MZ_MenZhenHangNumberList(MedicalTreatmentInsuranceID, OfficeID, RegisterTypeID
, DoctorID, MenZhenRegisterID, BitBillsNo, HangNumberTime)
values (@MedicalTreatmentInsuranceID, @OfficeID, @RegisterTypeID, @DoctorID, @MenZhenRegisterID, @BitBillsNo, @HangNumberTime)
end
门诊登记表的挂号否改为True
储存过程如下:
if(@Type='Frm_MenZhenGuaHao_GuaHaoFou')
begin
update MZ_MenZhenRegisterList
set MZ_MenZhenRegisterList.HangNumberNo=1
where MenZhenRegisterID=@MenZhenRegisterID
end
第二步:逻辑层(BLL)代码
[OperationContract]
public int Frm_MenZhenGuaHao_Insert(int intYiBaoID, int intKeShiID, int intGuaHaoLeiXingID, int intGuaHaoYiShengID,
int intMenZhenDengJiID,bool DaDanFou,DateTime GuaHaoShiJian)
{
SqlParameter[] mySqlParameters = {
new SqlParameter ("@Type",SqlDbType .Char),
new SqlParameter ("@MedicalTreatmentInsuranceID",SqlDbType.Int),
new SqlParameter ("@OfficeID",SqlDbType .Int),
new SqlParameter ("@RegisterTypeID",SqlDbType .Int),
new SqlParameter ("@DoctorID",SqlDbType .Int),
new SqlParameter ("@MenZhenRegisterID",SqlDbType.Int),
new SqlParameter ("@BitBillsNo",SqlDbType.Bit),
new SqlParameter ("@HangNumberTime",SqlDbType.DateTime),
};
mySqlParameters[0].Value = "Frm_MenZhenGuaHao_Insert";
mySqlParameters[1].Value = intYiBaoID;
mySqlParameters[2].Value = intKeShiID;
mySqlParameters[3].Value = intGuaHaoLeiXingID;
mySqlParameters[4].Value = intGuaHaoYiShengID;
mySqlParameters[5].Value = intMenZhenDengJiID;
mySqlParameters[6].Value = DaDanFou;
mySqlParameters[7].Value = GuaHaoShiJian;
int i = myDALMethod.UpdateData("门?诊?登Ì?记?_Frm_MenZhenGuaHao", mySqlParameters);
return i;
}
挂号否改为True(bll)
[OperationContract]
public int Frm_MenZhenGuaHao_GuaHaoFou(int intMenZhenDengJiID)
{
SqlParameter[]mySqlParameters = {
new SqlParameter ("@Type",SqlDbType.Char),
new SqlParameter ("@MenZhenRegisterID",SqlDbType.Int),
};
mySqlParameters[0].Value = "Frm_MenZhenGuaHao_GuaHaoFou";
mySqlParameters[1].Value =intMenZhenDengJiID;
inti = myDALMethod.UpdateData("门?诊?登Ì?记?_Frm_MenZhenGuaHao", mySqlParameters);
returni;
}
第三步:界面层(UIL)代码,挂号保存
#region 新增挂号
private void btnSure_Click(object sender, EventArgs e)
{
if (txtName.Text == "")
{
MessageBox.Show("操作提示,请在查找病人那个按钮选择病人,否则不能挂号");
return;
}
if (cboOfficeID.Text == "")
{
MessageBox.Show("请选择挂号科室");
return;
}
int intYiBaoID = Convert.ToInt32(cboMedicalTreatmentInsuranceID.SelectedValue);
int intKeShiID = Convert.ToInt32(cboOfficeID.SelectedValue);
int intGuaHaoLeiXingID = Convert.ToInt32(dgvGuaHaoLeiXing.CurrentRow.Cells["挂号类型ID"].Value);
int intGuaHaoYiShengID = Convert.ToInt32(cboDoctorID.SelectedValue);
int intMenZhenDengJiID = Frm_XuanZeBingRen.intBingRenID;
bool DaDanFou = ckbBitBillsNo.Checked;
DateTime GuaHaoShiJian = Convert.ToDateTime(DateTime.Now.ToString().Trim());
if (MessageBox.Show("确认将" + txtName.Text + "挂号?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
myFrm_MenZhenGuaHaoClient.Frm_MenZhenGuaHao_Insert(intYiBaoID, intKeShiID, intGuaHaoLeiXingID,
intGuaHaoYiShengID, intMenZhenDengJiID, DaDanFou, GuaHaoShiJian);
myFrm_MenZhenGuaHaoClient.Frm_MenZhenGuaHao_GuaHaoFou(intBingRenID);
//挂号成功改挂号否为True
MessageBox.Show("挂号成功!!!");
if (ckbBitBillsNo.Checked == true)//如果ckbBitBillsNo为True,则报表
{
报表打印.Frm_MenZhenGuaHaoBaoBiao myFrm_MenZhenGuaHaoBaoBiao = new 报表打印.Frm_MenZhenGuaHaoBaoBiao();
myFrm_MenZhenGuaHaoBaoBiao.ShowDialog();
}
this.Close();
}
else
{
MessageBox.Show("挂号失败!!!");
}
}
#endregion
挂号完成
仅供参考,禁止用于商业用途,违者后果自负