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

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;//设置另一张图片在的高度在上一张的高度下面
        }


注意:此文章置供学习用途,禁止用于商业用途,否则后果自负




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值