您的位置:首页 > 其它

WCF医院管理系统技术解析(三)体检登记(二)

2015-05-30 20:03 411 查看
WCF医院管理系统技术解析(三)体检登记(二)

体检登记中的新增历史病人(需要注意的是:该病人不经过挂号和处方,只是到医院进行体检)与医院中的前台登记病人不同。

对于这种情况:我的思路是:该病人先到医院进行登记体检,然后设置好体检的项目,再到前台进行收费,最后拿着收费单到体检执行处,执行体检处将体检的结果以纸质形式返回给病人。

进入【体检中心】→【体检登记】,按下面界面中的“新增客人”




2.9.8(图16)

在新增病人的窗体中有病人的基本资料填写、附件资料(病人图片的加载)、病员病史和账户流水等信息,界面如下:



2.9.8(图17)

从界面上用到的控件有:

控件

说明

从工具箱中找到对应的控件,拖动到界面,右键属性可以设置控件的一些属性样式和事件。如显示的文本,命名是规范

文本框 (TextBox)

下拉框 (ComBobox)

数据表格 (DataGridView)

按钮(Button)

标签 (Label)

容器(Panel)

选项卡(TabContral)

功能实现

第一步:数据库

1.表与关系:



2.9.8(图18)



2.9.8(图19)

表1.病人表(BT_PatientTable)

用于新增病人

列名

数据类型

主键/外键

说明

PatientID

int

主键

病人ID

PatientCardNumber

nchar (50)

病人卡号

PatientName

nchar (30)

病人名称

RegisterCategoryID

int

外键

挂号类别 ID

AS_SexID

int

外键

性别ID

Birthday

datetime

出生年月

IDCardNo

nchar (50)

身份证号

AS_MaritalStatusID

int

外键

婚姻情况ID

Profession

nchar (50)

所在职业

MemberTypeID

int

外键

会员类型ID

MedicareCardNumber

nchar (50)

医保卡号

AS_InsuredTypeID

int

外键

参保类型ID

ContactTelephone

nchar (30)

联系电话

ContactAddress

nchar (100)

联系地址

DrugAllergyHistory

nchar (100)

药物过敏史

PatientCategoryID

int

外键

病人类别ID

Age

nchar (30)

年龄

AlphabeticBrevityCode

nchar (20)

拼音简码

WubiInCode

nchar (20)

五笔简码

ContactMobilePhone

nchar (30)

联系手机

Email

nchar (30)

电子邮件

Introducer

nchar (30)

介绍人员

PersonalTaboo

nchar (70)

个人忌讳

HighestReputation

nchar (70)

信誉上限

NowIntegral

nchar (50)

当前积分

Debt

decimal (18, 2)

尚欠金额

ExpenseSum

decimal (18, 2)

消费金额

LastTime

datetime

上次时间

LastDoctor_StaffID

int

外键

上次医生

Prescriptions

nchar (50)

总处方数

PatientPhotos

char (200)

病人照片

WhetherEffective

bit

((1))

有效否

WhetherFromPhysicalExamination

Bit

是否体检

表2:属性明细表(BT_AttributeDetailsTable)

用于普通常用字段录入

列名

数据类型
主键/外键
说明
AttributeDetailsID
int
主键
属性明细ID
AttributeDetailsID_F
int
外键
属性明细ID_F
AttributeSetID
int
外键
属性明细ID
AttributeDetailsName
nchar (30)
属性明细名称
Number
nchar (30)
编号
RetrievalInCode
nchar (30)
检索简码
BuiltInIdentifiers
bit
((0))
内置标识
Remarks
nchar (100)
备注
WhetherEffective
bit
((1))
有效否
表3.会员类别表 (MemberCategoryTable)

列名
数据类型
主键/外键
说明
MemberCategoryID
int
主键
会员类别 ID
MemberCategoryNumber
nchar (30)
会员类别编号
MemberCategoryDiscount
numeric (18, 2)
会员类别折扣
MemberCategoryName
nchar (30)
会员类别名称
Remarks
nchar (150)
备注
WhetherEffective
bit
((1))
有效否
该新增病人的界面中涉及的基本资料填写的控件数据绑定有各个下拉框的绑定界面图如下:







2.9.8(图20)

各个下拉框即上图2.9.8(图20)的绑定数据库:

--绑定性别
IF @Type = 'FRM_TiJianDengJi_Insert_cbo_AS_SexID'
BEGIN
SELECT     RTRIM(AttributeDetailsID) AS AttributeDetailsID, RTRIM(AttributeDetailsName) AS AttributeDetailsName
FROM         BT_AttributeDetailsTable
WHERE AttributeSetID = 2
END
--绑定婚姻状态
IF @Type = 'FRM_TiJianDengJi_Insert_cbo_AS_MaritalStatusID'
BEGIN
SELECT     RTRIM(AttributeDetailsID) AS AttributeDetailsID, RTRIM(AttributeDetailsName) AS AttributeDetailsName
FROM         BT_AttributeDetailsTable
WHERE AttributeSetID = 20
END
--绑定参保类别
IF @Type = 'FRM_TiJianDengJi_Insert_cbo_AS_InsuredTypeID'
BEGIN
SELECT     RTRIM(AttributeDetailsID) AS AttributeDetailsID, RTRIM(AttributeDetailsName) AS AttributeDetailsName
FROM         BT_AttributeDetailsTable
WHERE AttributeSetID = 21
END

--绑定挂号类别
IF @Type = 'FRM_TiJianDengJi_Insert_cbo_RegisterCategoryID'
BEGIN
SELECT     RTRIM(RegisterCategoryID) AS RegisterCategoryID, RTRIM(RegisterCategoryName) AS RegisterCategoryName
FROM         BT_RegisterCategoryTable
END
--绑定会员类别
IF @Type = 'FRM_TiJianDengJi_Insert_cbo_MemberTypeID'
BEGIN
SELECT     RTRIM(MemberCategoryID) AS MemberCategoryID,RTRIM( MemberCategoryName) AS MemberCategoryName
FROM         BT_MemberCategoryTable
END
--查询病人类别
IF @Type = 'FRM_TiJianDengJi_Insert_cbo_PatientCategoryID'
BEGIN
SELECT     RTRIM(PatientCategoryID) AS PatientCategoryID, RTRIM(CategoryName) AS CategoryName
FROM         BT_PatientCategoryTable
END
--查询员工
IF @Type = 'FRM_TiJianDengJi_Insert_LastDoctor_StaffID'
BEGIN
SELECT    RTRIM( StaffID) AS StaffID, RTRIM(StaffName) AS StaffName
FROM         BT_StaffTable
END


BLL中与之对应的方法有:

DALPublic.DALMethod myDALMethod = new DALPublic.DALMethod();
//绑定性别
[OperationContract]
public DataSet FRM_TiJianDengJi_Insert_cbo_AS_SexID()
{
SqlParameter[] mySqlParameters = {
new SqlParameter("@Type",SqlDbType .Char ),
};
mySqlParameters[0].Value = "FRM_TiJianDengJi_Insert_cbo_AS_SexID";
DataTable dt = myDALMethod.QueryDataTable("TiJianZhongXin_TiJianDengJi_Patient_Main", mySqlParameters);
DataSet ds = new DataSet();
ds.Tables.Add(dt);
return ds;
}
//绑定婚姻状态
[OperationContract]
public DataSet FRM_TiJianDengJi_Insert_cbo_AS_MaritalStatusID()
{
SqlParameter[] mySqlParameters = {
new SqlParameter("@Type",SqlDbType .Char ),
};
mySqlParameters[0].Value = "FRM_TiJianDengJi_Insert_cbo_AS_MaritalStatusID";
DataTable dt = myDALMethod.QueryDataTable("TiJianZhongXin_TiJianDengJi_Patient_Main", mySqlParameters);
DataSet ds = new DataSet();
ds.Tables.Add(dt);
return ds;
}
//绑定参保类别
[OperationContract]
public DataSet FRM_TiJianDengJi_Insert_cbo_AS_InsuredTypeID()
{
SqlParameter[] mySqlParameters = {
new SqlParameter("@Type",SqlDbType .Char ),
};
mySqlParameters[0].Value = "FRM_TiJianDengJi_Insert_cbo_AS_InsuredTypeID";
DataTable dt = myDALMethod.QueryDataTable("TiJianZhongXin_TiJianDengJi_Patient_Main", mySqlParameters);
DataSet ds = new DataSet();
ds.Tables.Add(dt);
return ds;
}
//绑定挂号类别
[OperationContract]
public DataSet FRM_TiJianDengJi_Insert_cbo_RegisterCategoryID()
{
SqlParameter[] mySqlParameters = {
new SqlParameter("@Type",SqlDbType .Char ),
};
mySqlParameters[0].Value = "FRM_TiJianDengJi_Insert_cbo_RegisterCategoryID";
DataTable dt = myDALMethod.QueryDataTable("TiJianZhongXin_TiJianDengJi_Patient_Main", mySqlParameters);
DataSet ds = new DataSet();
ds.Tables.Add(dt);
return ds;
}
//绑定会员类别
[OperationContract]
public DataSet FRM_TiJianDengJi_Insert_cbo_MemberTypeID()
{
SqlParameter[] mySqlParameters = {
new SqlParameter("@Type",SqlDbType .Char ),
};
mySqlParameters[0].Value = "FRM_TiJianDengJi_Insert_cbo_MemberTypeID";
DataTable dt = myDALMethod.QueryDataTable("TiJianZhongXin_TiJianDengJi_Patient_Main", mySqlParameters);
DataSet ds = new DataSet();
ds.Tables.Add(dt);
return ds;
}
//查询病人类别
[OperationContract]
public DataSet FRM_TiJianDengJi_Insert_cbo_PatientCategoryID()
{
SqlParameter[] mySqlParameters = {
new SqlParameter("@Type",SqlDbType .Char ),
};
mySqlParameters[0].Value = "FRM_TiJianDengJi_Insert_cbo_PatientCategoryID";
DataTable dt = myDALMethod.QueryDataTable("TiJianZhongXin_TiJianDengJi_Patient_Main", mySqlParameters);
DataSet ds = new DataSet();
ds.Tables.Add(dt);
return ds;
}
//查询员工
[OperationContract]
public DataSet FRM_TiJianDengJi_Insert_LastDoctor_StaffID()
{
SqlParameter[] mySqlParameters = {
new SqlParameter("@Type",SqlDbType .Char ),
};
mySqlParameters[0].Value = "FRM_TiJianDengJi_Insert_LastDoctor_StaffID";
DataTable dt = myDALMethod.QueryDataTable("TiJianZhongXin_TiJianDengJi_Patient_Main", mySqlParameters);
DataSet ds = new DataSet();
ds.Tables.Add(dt);
return ds;
}


UIL中涉及中绑定图2.9.8(图20)的代码:

BLL医院管理系统.TiJianZhongXin.FRM_TiJianDengJi_Patient_Main.FRM_TiJianDengJi_Patient_MainClient myFRM_TiJianDengJi_Patient_MainClient
= new BLL医院管理系统.TiJianZhongXin.FRM_TiJianDengJi_Patient_Main.FRM_TiJianDengJi_Patient_MainClient();

//绑定性别
cbo_AS_SexID.DataSource = myFRM_TiJianDengJi_Patient_MainClient.FRM_TiJianDengJi_Insert_cbo_AS_SexID().Tables[0];
cbo_AS_SexID.DisplayMember = "AttributeDetailsName";
cbo_AS_SexID.ValueMember = "AttributeDetailsID";
cbo_AS_SexID.SelectedValue = -1;
//绑定婚姻状态
cbo_AS_MaritalStatusID.DataSource = myFRM_TiJianDengJi_Patient_MainClient.FRM_TiJianDengJi_Insert_cbo_AS_MaritalStatusID().Tables[0];
cbo_AS_MaritalStatusID.DisplayMember = "AttributeDetailsName";
cbo_AS_MaritalStatusID.ValueMember = "AttributeDetailsID";
//绑定参保类别
cbo_AS_InsuredTypeID.DataSource = myFRM_TiJianDengJi_Patient_MainClient.FRM_TiJianDengJi_Insert_cbo_AS_InsuredTypeID().Tables[0];
cbo_AS_InsuredTypeID.DisplayMember = "AttributeDetailsName";
cbo_AS_InsuredTypeID.ValueMember = "AttributeDetailsID";
//绑定挂号类别
cbo_RegisterCategoryID.DataSource = myFRM_TiJianDengJi_Patient_MainClient.FRM_TiJianDengJi_Insert_cbo_RegisterCategoryID().Tables[0];
cbo_RegisterCategoryID.DisplayMember = "RegisterCategoryName";
cbo_RegisterCategoryID.ValueMember = "RegisterCategoryID";
//绑定会员类别
cbo_MemberTypeID.DataSource = myFRM_TiJianDengJi_Patient_MainClient.FRM_TiJianDengJi_Insert_cbo_MemberTypeID().Tables[0];
cbo_MemberTypeID.DisplayMember = "MemberCategoryName";
cbo_MemberTypeID.ValueMember = "MemberCategoryID";
//查询病人类别
cbo_PatientCategoryID.DataSource = myFRM_TiJianDengJi_Patient_MainClient.FRM_TiJianDengJi_Insert_cbo_PatientCategoryID().Tables[0];
cbo_PatientCategoryID.DisplayMember = "CategoryName";
cbo_PatientCategoryID.ValueMember = "PatientCategoryID";
//查询员工
cbo_LastDoctor_StaffID.DataSource = myFRM_TiJianDengJi_Patient_MainClient.FRM_TiJianDengJi_Insert_LastDoctor_StaffID().Tables[0];
cbo_LastDoctor_StaffID.DisplayMember = "StaffName";
cbo_LastDoctor_StaffID.ValueMember = "StaffID";


在输入病人姓名的时候,有检则是否为历史病人,是历史病人就根据病人姓名显示出来,选择对应的体检历史病人绑定数据。同时,历史病人的病员病历以及账户流水就会显示出来,不是历史病人的就进行新增病人的操作,但病员病历和账户流水都为空。

如在病人名称中的本文框

中输入“张“ ,会提示”张”姓的病人其 界面效果为:



2.9.8(图21)
数据库代码为:

根据病人姓名查询某病人的信息
IF @Type = 'FRM_TiJianBingRen_Insert_SelectBingRen'
BEGIN
SELECT     LTRIM(RTRIM(BT_PatientTable.PatientCardNumber)) AS PatientCardNumber, LTRIM(RTRIM(BT_PatientTable.PatientName)) AS PatientName, LTRIM(RTRIM(BT_PatientTable.AS_SexID)) AS AS_SexID,
LTRIM(RTRIM(BT_AttributeDetailsTable_1.AttributeDetailsName)) AS Sex, LTRIM(RTRIM(BT_PatientTable.AS_MaritalStatusID)) AS AS_MaritalStatusID,
LTRIM(RTRIM(BT_AttributeDetailsTable_2.AttributeDetailsName)) AS MaritalStatus, LTRIM(RTRIM(BT_PatientTable.Profession)) AS Profession, LTRIM(RTRIM(BT_PatientTable.Age)) AS Age,
LTRIM(RTRIM(BT_PatientTable.AS_InsuredTypeID)) AS AS_InsuredTypeID, LTRIM(RTRIM(BT_AttributeDetailsTable_3.AttributeDetailsName)) AS InsuredType,
LTRIM(RTRIM(BT_PatientTable.MemberTypeID)) AS MemberTypeID, LTRIM(RTRIM(BT_MemberCategoryTable.MemberCategoryName)) AS MemberCategoryName,
LTRIM(RTRIM(BT_PatientTable.ContactTelephone)) AS ContactTelephone, LTRIM(RTRIM(BT_PatientTable.ContactAddress)) AS ContactAddress, LTRIM(RTRIM(BT_PatientTable.PersonalTaboo))
AS PersonalTaboo, LTRIM(RTRIM(BT_PatientTable.DrugAllergyHistory)) AS DrugAllergyHistory, LTRIM(RTRIM(BT_PatientTable.PatientID)) AS PatientID,
RTRIM(BT_MemberCategoryTable.MemberCategoryDiscount) AS MemberCategoryDiscount
FROM         BT_PatientTable INNER JOIN
BT_AttributeDetailsTable AS BT_AttributeDetailsTable_1 ON BT_PatientTable.AS_SexID = BT_AttributeDetailsTable_1.AttributeDetailsID INNER JOIN
BT_AttributeDetailsTable AS BT_AttributeDetailsTable_2 ON BT_PatientTable.AS_MaritalStatusID = BT_AttributeDetailsTable_2.AttributeDetailsID INNER JOIN
BT_AttributeDetailsTable AS BT_AttributeDetailsTable_3 ON BT_PatientTable.AS_InsuredTypeID = BT_AttributeDetailsTable_3.AttributeDetailsID INNER JOIN
BT_MemberCategoryTable ON BT_PatientTable.MemberTypeID = BT_MemberCategoryTable.MemberCategoryID
WHERE     BT_PatientTable.PatientName  LIKE '%'+  RTRIM(LTRIM(@PatientName)) + '%'
END


BLL中涉及的方法有:

#region 根据病人姓名查询一个病人的信息
[OperationContract]
public DataSet FRM_TiJianBingRen_Insert_SelectBingRen(string strPatientName)//获取界面中输入的病人姓名
{
SqlParameter[] mySqlParameters = {
new SqlParameter("@Type",SqlDbType .Char ),
new SqlParameter ("@PatientName",SqlDbType.Char),//根据界面中输入的病人姓名进行查询数据库
};
mySqlParameters[0].Value = "FRM_TiJianBingRen_Insert_SelectBingRen";
mySqlParameters[1].Value = strPatientName;
DataTable dt = myDALMethod.QueryDataTable("TiJianZhongXin_TiJianDengJi_Patient_Main", mySqlParameters);
DataSet ds = new DataSet();
ds.Tables.Add(dt);
return ds;
}
#endregion


UIL中涉及的代码有:

第一步:点击文本框,右键属性



第二步:在文本框中的属性事件中找到TextChanged的事件,点击进入



2.9.8(图22)

#region 病人姓名和拼音简码
private void txt_PatientName_TextChanged(object sender, EventArgs e)
{
txt_AlphabeticBrevityCode.Text = GetChineseSpell(txt_PatientName.Text.Trim());//调用拼音简码的方法
//把病人姓名中的文本框中的值传值到数据库查找相应的历史病人信息存放进表格中
DataTable dtPatientName = myFRM_TiJianDengJi_Patient_MainClient.FRM_TiJianBingRen_Insert_SelectBingRen(txt_PatientName.T<span style="white-space:pre">		</span>ext.Trim()).Tables[0];
dgv_SelecctAllPatient.DataSource = dtPatientName;//把表格中的赋值给dgv
pnl_Patient.Visible = true;//容器可见

}


设为登记病人为历史病人,那么会根据病人ID把以往病人的各种看病情况显示出来:

界面效果图为:



2.9.8(图23)
数据库中涉及到的储存过程有:

--把查询到的病人信息绑定到对应的控件中
IF @Type = 'FRM_TiJianBingRen_Main_Load_SelectPatientOnPatientIDForKongJian'
BEGIN
SELECT     LTRIM(RTRIM(BT_PatientTable.PatientCardNumber)) AS PatientCardNumber, LTRIM(RTRIM(BT_PatientTable.PatientName)) AS PatientName, LTRIM(RTRIM(BT_PatientTable.AS_SexID)) AS AS_SexID,
LTRIM(RTRIM(BT_AttributeDetailsTable_1.AttributeDetailsName)) AS Sex, LTRIM(RTRIM(BT_PatientTable.AS_MaritalStatusID)) AS AS_MaritalStatusID,
LTRIM(RTRIM(BT_AttributeDetailsTable_2.AttributeDetailsName)) AS MaritalStatus, LTRIM(RTRIM(BT_PatientTable.Profession)) AS Profession, LTRIM(RTRIM(BT_PatientTable.Age)) AS Age,
LTRIM(RTRIM(BT_PatientTable.AS_InsuredTypeID)) AS AS_InsuredTypeID, LTRIM(RTRIM(BT_AttributeDetailsTable_3.AttributeDetailsName)) AS InsuredType,
LTRIM(RTRIM(BT_PatientTable.MemberTypeID)) AS MemberTypeID, LTRIM(RTRIM(BT_MemberCategoryTable.MemberCategoryName)) AS MemberCategoryName,
LTRIM(RTRIM(BT_PatientTable.ContactTelephone)) AS ContactTelephone, LTRIM(RTRIM(BT_PatientTable.ContactAddress)) AS ContactAddress, LTRIM(RTRIM(BT_PatientTable.PersonalTaboo))
AS PersonalTaboo, LTRIM(RTRIM(BT_PatientTable.DrugAllergyHistory)) AS DrugAllergyHistory, LTRIM(RTRIM(BT_PatientTable.PatientID)) AS PatientID,
RTRIM(BT_MemberCategoryTable.MemberCategoryDiscount) AS MemberCategoryDiscount, BT_PatientTable.Birthday, BT_PatientTable.IDCardNo, BT_PatientTable.MedicareCardNumber,
BT_PatientTable.PatientCategoryID, BT_PatientTable.AlphabeticBrevityCode, BT_PatientTable.WubiInCode, BT_PatientTable.ContactMobilePhone, BT_PatientTable.Email,
BT_PatientTable.Introducer, BT_PatientTable.HighestReputation, BT_PatientTable.NowIntegral, BT_PatientTable.Debt, BT_PatientTable.ExpenseSum, BT_PatientTable.LastTime,
BT_PatientTable.Prescriptions, BT_PatientTable.PatientPhotos
FROM         BT_PatientTable INNER JOIN
BT_AttributeDetailsTable AS BT_AttributeDetailsTable_1 ON BT_PatientTable.AS_SexID = BT_AttributeDetailsTable_1.AttributeDetailsID INNER JOIN
BT_AttributeDetailsTable AS BT_AttributeDetailsTable_2 ON BT_PatientTable.AS_MaritalStatusID = BT_AttributeDetailsTable_2.AttributeDetailsID INNER JOIN
BT_AttributeDetailsTable AS BT_AttributeDetailsTable_3 ON BT_PatientTable.AS_InsuredTypeID = BT_AttributeDetailsTable_3.AttributeDetailsID INNER JOIN
BT_MemberCategoryTable ON BT_PatientTable.MemberTypeID = BT_MemberCategoryTable.MemberCategoryID
WHERE     BT_PatientTable.PatientID = @PatientID
END


BLL中的涉及的方法有:

#region 把查询到的病人信息绑定到对应的控件中
[OperationContract]
public DataSet FRM_TiJianBingRen_Main_Load_SelectPatientOnPatientIDForKongJian(int intPatientID)///获取界面中的病人ID

{
SqlParameter[] mySqlParameters = {
new SqlParameter("@Type",SqlDbType .Char ),
new SqlParameter ("@PatientID",SqlDbType.Char),//把界面中的病人ID传值到数据库,查询病人信息
};
mySqlParameters[0].Value = "FRM_TiJianBingRen_Main_Load_SelectPatientOnPatientIDForKongJian";
mySqlParameters[1].Value = intPatientID;
DataTable dt = myDALMethod.QueryDataTable("TiJianZhongXin_TiJianDengJi_Patient_Main", mySqlParameters);
DataSet ds = new DataSet();
ds.Tables.Add(dt);
return ds;
}
#endregion


UIL中涉及到的代码有:

//dgv中的单击事件
private void dgv_SelecctAllPatient_CellClick(object sender, DataGridViewCellEventArgs e)
{
intPatienID = Convert.ToInt32(dgv_SelecctAllPatient.CurrentRow.Cells["PatientID"].Value.ToString().Trim());
//根据病人ID把查询到的病人信息绑定到对应的控件中
DataTable dtPatient = myFRM_TiJianDengJi_Patient_MainClient.FRM_TiJianBingRen_Main_Load_SelectPatientOnPatientIDForKongJian(intPatienID).Tables[0];
if (dtPatient.Rows.Count > 0)
{
//把查询到的病人信息绑定到对应的控件中
txt_PatientCardNumber.Text = dtPatient.Rows[0]["PatientCardNumber"].ToString().Trim();
txt_PatientName.Text = dtPatient.Rows[0]["PatientName"].ToString().Trim();
cbo_AS_SexID.SelectedValue = Convert.ToInt32(dtPatient.Rows[0]["AS_SexID"]);
txt_Birthday.Text = dtPatient.Rows[0]["Birthday"].ToString().Trim();
txt_IDCardNo.Text = dtPatient.Rows[0]["IDCardNo"].ToString().Trim();
cbo_AS_MaritalStatusID.SelectedValue = Convert.ToInt32(dtPatient.Rows[0]["AS_MaritalStatusID"]);
txt_Profession.Text = dtPatient.Rows[0]["Profession"].ToString().Trim();
cbo_MemberTypeID.SelectedValue = Convert.ToInt32(dtPatient.Rows[0]["MemberTypeID"]);
txt__MedicareCardNumber.Text = dtPatient.Rows[0]["MedicareCardNumber"].ToString().Trim();
cbo_AS_InsuredTypeID.SelectedValue = Convert.ToInt32(dtPatient.Rows[0]["AS_InsuredTypeID"]);
txt_ContactMobilePhone.Text = dtPatient.Rows[0]["ContactMobilePhone"].ToString().Trim();
txt_ContactAddress.Text = dtPatient.Rows[0]["ContactAddress"].ToString().Trim();
txt_DrugAllergyHistory.Text = dtPatient.Rows[0]["DrugAllergyHistory"].ToString().Trim();
cbo_PatientCategoryID.SelectedValue = Convert.ToInt32(dtPatient.Rows[0]["PatientCategoryID"]);
txt_Age.Text = dtPatient.Rows[0]["Age"].ToString().Trim();
txt_AlphabeticBrevityCode.Text = dtPatient.Rows[0]["AlphabeticBrevityCode"].ToString().Trim();
txt_WubiInCode.Text = dtPatient.Rows[0]["WubiInCode"].ToString().Trim();
txt_ContactMobilePhone.Text = dtPatient.Rows[0]["ContactMobilePhone"].ToString().Trim();
txt_Email.Text = dtPatient.Rows[0]["Email"].ToString().Trim();
txt_Introducer.Text = dtPatient.Rows[0]["Introducer"].ToString().Trim();
txt_PersonalTaboo.Text = dtPatient.Rows[0]["PersonalTaboo"].ToString().Trim();
txt_HighestReputation.Text = dtPatient.Rows[0]["HighestReputation"].ToString().Trim();
txt_NowIntegral.Text = dtPatient.Rows[0]["NowIntegral"].ToString().Trim();
txt_Debt.Text = dtPatient.Rows[0]["Debt"].ToString().Trim();
txt_ExpenseSum.Text = dtPatient.Rows[0]["ExpenseSum"].ToString().Trim();
dtp_LastTime.Text = dtPatient.Rows[0]["LastTime"].ToString().Trim();
txt_Prescriptions.Text = dtPatient.Rows[0]["Prescriptions"].ToString().Trim();
txtLuJing.Text = dtPatient.Rows[0]["PatientPhotos"].ToString().Trim();
txt_ContactTelephone.Text = dtPatient.Rows[0]["ContactTelephone"].ToString().Trim();

历史病人的附加资料中的图片效果图为:



2.9.8(图24)

该过程涉及到的数据库中的储存过程有:

--把查询到的病人信息绑定到对应的控件中
IF @Type = 'FRM_TiJianBingRen_Main_Load_SelectPatientOnPatientIDForKongJian'
BEGIN
SELECT     LTRIM(RTRIM(BT_PatientTable.PatientCardNumber)) AS PatientCardNumber, LTRIM(RTRIM(BT_PatientTable.PatientName)) AS PatientName, LTRIM(RTRIM(BT_PatientTable.AS_SexID)) AS AS_SexID,
LTRIM(RTRIM(BT_AttributeDetailsTable_1.AttributeDetailsName)) AS Sex, LTRIM(RTRIM(BT_PatientTable.AS_MaritalStatusID)) AS AS_MaritalStatusID,
LTRIM(RTRIM(BT_AttributeDetailsTable_2.AttributeDetailsName)) AS MaritalStatus, LTRIM(RTRIM(BT_PatientTable.Profession)) AS Profession, LTRIM(RTRIM(BT_PatientTable.Age)) AS Age,
LTRIM(RTRIM(BT_PatientTable.AS_InsuredTypeID)) AS AS_InsuredTypeID, LTRIM(RTRIM(BT_AttributeDetailsTable_3.AttributeDetailsName)) AS InsuredType,
LTRIM(RTRIM(BT_PatientTable.MemberTypeID)) AS MemberTypeID, LTRIM(RTRIM(BT_MemberCategoryTable.MemberCategoryName)) AS MemberCategoryName,
LTRIM(RTRIM(BT_PatientTable.ContactTelephone)) AS ContactTelephone, LTRIM(RTRIM(BT_PatientTable.ContactAddress)) AS ContactAddress, LTRIM(RTRIM(BT_PatientTable.PersonalTaboo))
AS PersonalTaboo, LTRIM(RTRIM(BT_PatientTable.DrugAllergyHistory)) AS DrugAllergyHistory, LTRIM(RTRIM(BT_PatientTable.PatientID)) AS PatientID,
RTRIM(BT_MemberCategoryTable.MemberCategoryDiscount) AS MemberCategoryDiscount, BT_PatientTable.Birthday, BT_PatientTable.IDCardNo, BT_PatientTable.MedicareCardNumber,
BT_PatientTable.PatientCategoryID, BT_PatientTable.AlphabeticBrevityCode, BT_PatientTable.WubiInCode, BT_PatientTable.ContactMobilePhone, BT_PatientTable.Email,
BT_PatientTable.Introducer, BT_PatientTable.HighestReputation, BT_PatientTable.NowIntegral, BT_PatientTable.Debt, BT_PatientTable.ExpenseSum, BT_PatientTable.LastTime,
BT_PatientTable.Prescriptions, BT_PatientTable.PatientPhotos
FROM         BT_PatientTable INNER JOIN
BT_AttributeDetailsTable AS BT_AttributeDetailsTable_1 ON BT_PatientTable.AS_SexID = BT_AttributeDetailsTable_1.AttributeDetailsID INNER JOIN
BT_AttributeDetailsTable AS BT_AttributeDetailsTable_2 ON BT_PatientTable.AS_MaritalStatusID = BT_AttributeDetailsTable_2.AttributeDetailsID INNER JOIN
BT_AttributeDetailsTable AS BT_AttributeDetailsTable_3 ON BT_PatientTable.AS_InsuredTypeID = BT_AttributeDetailsTable_3.AttributeDetailsID INNER JOIN
BT_MemberCategoryTable ON BT_PatientTable.MemberTypeID = BT_MemberCategoryTable.MemberCategoryID
WHERE     BT_PatientTable.PatientID = @PatientID
END

BLL中涉及的方法:

#region 把查询到的病人信息绑定到对应的控件中
[OperationContract]
public DataSet FRM_TiJianBingRen_Main_Load_SelectPatientOnPatientIDForKongJian(int intPatientID)//获取界面中的病人ID
{
SqlParameter[] mySqlParameters = {
new SqlParameter("@Type",SqlDbType .Char ),
new SqlParameter ("@PatientID",SqlDbType.Char),//把界面中的病人ID传值到数据库,查询病人信息
};
mySqlParameters[0].Value = "FRM_TiJianBingRen_Main_Load_SelectPatientOnPatientIDForKongJian";
mySqlParameters[1].Value = intPatientID;
DataTable dt = myDALMethod.QueryDataTable("TiJianZhongXin_TiJianDengJi_Patient_Main", mySqlParameters);
DataSet ds = new DataSet();
ds.Tables.Add(dt);
return ds;
}
#endregion

查询图片:

#region  查询图片
[OperationContract]
public byte[][] FRM_TiJianDengJi_Update_SelectTuPian(string strLuJing)//获取界面中的图片文件名
{
return WenJianLiuZhuanHuanLuJing(strLuJing);//调用方法
}
#endregion


路径转换文件流:

#region  路径转换文件流
private byte[][] WenJianLiuZhuanHuanLuJing(string strLuJing)//用字符串把UIL中的参数存放起来
{
try
{
string[] strLuJingZu = strLuJing.Split(';');//声明一个数组把文件名从‘;’的字符窜中拆分
byte[][] lstBytes = new byte[strLuJingZu.Length - 1][];//声明一个二进制数组
for (int i = 0; i < strLuJingZu.Length; i++)//遍历循环数组的长度
{
if (strLuJingZu[i] != "")//如果数组的成员中的值不为空
{
string strBaoCunLuJing = System.AppDomain.CurrentDomain.BaseDirectory;
strLuJingZu[i] = strBaoCunLuJing + "image\\" + strLuJingZu[i];//把图片的路径转换为文件流
using (Stream sm = new FileStream(strLuJingZu[i], FileMode.Open, FileAccess.ReadWrite, FileShare.None))////运行方法体后,消毁对象
{
int Length = (int)sm.Length;////二进制文件长度
byte[] bytes = new byte[Length];//二进制文件存放的二进制数组
sm.Read(bytes, 0, Length);//内存流读取
sm.Close();//关闭内存流
lstBytes[i] = bytes;////将数据保存到数据库中
}

}
}
return lstBytes;
}
catch
{
return null;
}
}
#endregion


UIL中涉及到的代码有:

声明全局变量:

Boolean blnNotInsert = false;
byte[][] myTuPianByte; int intPatientID = 0;


窗体加载事件中有:

string strLuJing = dtPatient.Rows[0]["PatientPhotos"].ToString().Trim();
myTuPianByte = myFRM_TiJianDengJi_Patient_MainClient.FRM_TiJianDengJi_Update_SelectTuPian(strLuJing);//根据路径查找图片所在位置
pnl_Image.AutoScroll = true;//
for (int i = 0; i < myTuPianByte.Length; i++)
{
XianShiTuPian(myTuPianByte[i]);//显示图片
}
intTuPianWenZhiY = 0;
blnNotInsert = true;

自定义方法加载图片:

void XianShiTuPian(byte[] mybyte)
{

MemoryStream stmBLOBData = new MemoryStream(mybyte);//实例化一个内存流的对象
PictureBox myPictureBox = new PictureBox();//实例化一个PictureBox
Image myImage = Image.FromStream(stmBLOBData);
myPictureBox.Size = pnl_Image.Size;//实例化的PictureBox的大小就是上传图片的大小
myPictureBox.Location = new Point(0, intTuPianWenZhiY);//图片的位置
myPictureBox.BackgroundImage = myImage;
myPictureBox.BackgroundImageLayout = ImageLayout.Zoom;//设置图片在容器中的中央
this.pnl_Image.Controls.Add(myPictureBox);//将图片加载在pnl_Image容器中
intTuPianWenZhiY += myPictureBox.Size.Height;//设置另一张图片在的高度在上一张的高度下面
}


注意:此文章置供学习用途,禁止用于商业用途,否则后果自负
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: