WCF医院管理系统技术解析(六)体检登记(五)对病人设置体检项目

来源:互联网 发布:关于网络诈骗的案例 编辑:程序博客网 时间:2024/03/28 19:13

WCF医院管理系统技术解析(六)体检登记(五)对病人设置体检项目

新增保存好体检病人后,就需要为体检病人设置体检项目,点击体检登记病人界面中的设置体检项目按钮如下图


2.9.8(图53)

然后点击该界面中的保存按钮保存,就可以对病人设置好体检项目和体检套餐了。

该过程中涉及到的数据库表中的关系有:


2.9.8(图54)

表1:病人表

      列名

数据类型

主键/外键

说明

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项目表(ItemTable

            列名

数据类型

主键/外键

说明

ItemID

int

    主键

项目ID

ItemName

nchar (70)

    外键

项目名称

ItemCoding

nchar (50)

    

项目编号

AS_UserStatusID

int

    外键

使用状态ID

ProjectPrice

decimal (18, 2)

   

现金价格

TechnicalOfficesID

int

    外键

科室ID

DiscountProportion

decimal (18, 2)

  

折扣比例

WhetherEffective

bit

((1))

有效否

ItemRemarks

nchar (100)

   

项目备注

ItemUnit

nchar (20)

   

项目单位


3:体检套餐表 (PhysicalExaminationSetMealTable)

            列名

数据类型

主键/外键

说明

PhysicalExaminationSetMealID

int

    主键

体检套餐ID

PhysicalExaminationSetMealName

nchar (30)

   

体检套餐名称

ChargeCategoryID

int

    外键

收费类别 ID

CashPrice

decimal (18, 2)

    

现金价格

DiscountRatio

decimal (18, 2)

    

折扣比例

SetMealNumber

nchar (30)

   

套餐编号

SetMealRemarks

nchar (150)

   

套餐备注

AS_UsableStatusID

int

    外键

可用状态ID

EntryStaff_StaffID

int

    外键

录入人员_员工ID

EntryDate

datetime

   

录入日期

UpdateStaff_StaffID

int

    外键

修改人员_员工ID

UpdateDate

datetime

    

修改日期

WhetherEffective

bit

((1))

有效否


4:体检套餐明细表(PhysicalExaminationSetMealDetailTable)

            列名

数据类型

主键/外键

说明

PhysicalExaminationSetMealDetailID

int

   主键

体检套餐明细ID

PhysicalExaminationSetMealID

int

   外键

体检套餐ID

ItemID

int

   外键

项目ID

WhetherEffective

bit

((1))

有效否


表5:体检登记病人表(PW_PhysicalExaminationChargeBillPatientTable

            列名

数据类型

主键/外键

说明

PhysicalExaminationChargeBillPatientID

Int

    主键

  体检登记病人ID

PatientID

Int

    外键

  病人ID

ChargeBillID

Int

    外键

  收费单ID

AuxiliaryItemDetailID

Int

    外键

   辅助项目明细ID

WhetherChargeBill

Bit

 

  是否收费


该界面用到的控件

                控件

          说明

 

 

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

 

文本框 (TextBox)

下拉框 (ComBobox)

数据表格  (DataGridView)

按钮(Button)

标签 (Label)


数据库中涉及到的储存过程有:(体检项目和体检套餐的数据表格的绑定)


--体检项目IF(@Type='FRM_DuiBingRenSheZhiTiJianXiangMu_SelectItem')BEGINSELECT     LTRIM(RTRIM(ItemID)) AS ItemID,            LTRIM(RTRIM(ItemCoding)) AS ItemCoding,            LTRIM(RTRIM(ItemName)) AS ItemName,            LTRIM(RTRIM(ProjectPrice)) AS ProjectPriceFROM         BT_ItemTableEND--体检套餐IF(@Type='FRM_DuiBingRenSheZhiTiJianXiangMu_SelectPhysicalExaminationSetMeal')BEGINSELECT      LTRIM(RTRIM(PhysicalExaminationSetMealID)) AS PhysicalExaminationSetMealID,     LTRIM(RTRIM(SetMealNumber)) AS SetMealNumber, LTRIM(RTRIM(PhysicalExaminationSetMealName)) AS PhysicalExaminationSetMealName,         LTRIM(RTRIM(CashPrice)) AS CashPriceFROM         BT_PhysicalExaminationSetMealTableEND

BLL中的方法有:

[OperationContract]         #region 查询体检项目         public DataSet FRM_DuiBingRenSheZhiTiJianXiangMu_SelectItem()         {             SqlParameter[] SQLCMDpas ={                                           new  SqlParameter ("@Type",SqlDbType.Char),                                               };             SQLCMDpas[0].Value = "FRM_DuiBingRenSheZhiTiJianXiangMu_SelectItem";             DataTable myDataTable = myDALMethod.QueryDataTable("TiJianZhongXin_TiJianDengJi_Main", SQLCMDpas);             DataSet myDataSet = new DataSet();             myDataSet.Tables.Add(myDataTable);             return myDataSet;         }         #endregion         [OperationContract]         #region 查询体检套餐         public DataSet FRM_DuiBingRenSheZhiTiJianXiangMu_SelectPhysicalExaminationSetMeal()         {             SqlParameter[] SQLCMDpas ={                                           new  SqlParameter ("@Type",SqlDbType.Char),                                               };             SQLCMDpas[0].Value = "FRM_DuiBingRenSheZhiTiJianXiangMu_SelectPhysicalExaminationSetMeal";             DataTable myDataTable = myDALMethod.QueryDataTable("TiJianZhongXin_TiJianDengJi_Main", SQLCMDpas);             DataSet myDataSet = new DataSet();             myDataSet.Tables.Add(myDataTable);             return myDataSet;         }         #endregion

UIL中代码:解释:绑定的体检套餐和体检项目供给医生对病人设置体检项目时选择对应的体检项目或者体检套餐,

窗体中的Laod事件中写如下代码:

dgvPhysicalExaminationItem.DataSource = myFRM_TiJianDengJi_MainClient.FRM_DuiBingRenSheZhiTiJianXiangMu_SelectItem().Tables[0];//绑定体检项目            dgvPhysicalExaminationSetMeal.DataSource = myFRM_TiJianDengJi_MainClient.FRM_DuiBingRenSheZhiTiJianXiangMu_SelectPhysicalExaminationSetMeal().Tables[0];//绑定体检套餐

在选择体检套餐或者体检项目的时候,就当次体检不能对同一个病人、设置相同的体检项目或者体检套餐,如果选择了相同的体检套餐或者体检项目,系统会提示用户。界面效果如图所示:


2.9.8(图54)

该过程不涉及数据库和BLL中的方法,其中涉及到的UIL中的代码有:

在选择体检项目的表格(dgv)上的体检项目中的CellClick事件有:

#region  体检项目中的CellClick事件        private void dgvPhysicalExaminationItem_CellClick(object sender, DataGridViewCellEventArgs e)        {            //项目类别ItemCategoryID用来判断表,值为1时是体检项目表、值为2时是化验项目表、值为3时是治疗项目表、值为4时是体检套餐表、值为5时是化验检查组合表            if (dgvAuxiliaryItemDetail.Rows.Count > 0)//判断dgvAuxiliaryItemDetail是否有数据,有数据就判断是否重复,            {                for (int i = 0; i < dgvAuxiliaryItemDetail.Rows.Count; i++)                {                    int ItemID1 = Convert.ToInt32(dgvPhysicalExaminationItem.CurrentRow.Cells["体检项目ID"].Value);//获取体检项目ID                    int ItemID = Convert.ToInt32(dgvAuxiliaryItemDetail.Rows[i].Cells["ID"].Value);//获取病人已经添加好的体检项目ID获取体检套餐ID                    int ItemCategoryID = Convert.ToInt32(dgvAuxiliaryItemDetail.Rows[i].Cells["ItemCategoryID"].Value);//获取体检类型ID                    if (ItemCategoryID == 4)//体检套餐                    {                        PhysicalExaminationSetMealID = Convert.ToInt32(dgvAuxiliaryItemDetail.Rows[i].Cells["ID"].Value);//获取已存在的体检套餐ID                        //根据循环得到的体检套餐ID查询体检套餐明细                        DataTable DTPhysicalExaminationSetMealDetail = myFRM_TiJianDengJi_MainClient.dgvPhysicalExaminationItem_CellClick_SelectPhysicalExaminationSetMealDetail(PhysicalExaminationSetMealID).Tables[0];                        for (int j = 0; j < DTPhysicalExaminationSetMealDetail.Rows.Count; j++)//遍历体检套餐中的明细                        {                            int DetailItemID = Convert.ToInt32(DTPhysicalExaminationSetMealDetail.Rows[j]["ItemID"]);//获取体检项目ID                            if (DetailItemID == ItemID1)//如果体检套餐中的明细中有项目ID与选择中的体检项目ID相同,就说明已经存在该体检项目                            {                                MessageBox.Show("已添加了含有该项目的体检套餐,不能再添加该项!");                                return;//跳出循环                            }                        }                    }                    if (ItemID == ItemID1 && ItemCategoryID == 1)//项目类别ItemCategoryID用来判断表,值为1时是体检项目。                    {                        PhysicalExaminationItem = false;//不添加项目                        MessageBox.Show("该项目已存在!");                        break;                    }                    else//否则体检项目为真,可以添加体检项目                    {                        PhysicalExaminationItem = true;                    }                }            }            else//否则没有数据,可以添加体检项目 即PhysicalExaminationItem 为 true            {                PhysicalExaminationItem = true;            }            if (PhysicalExaminationItem == true)//当开关为真时,新增项目            {                dgvAuxiliaryItemDetail.Rows.Add();//在病人需要的体检项目表格中添加条空白行                int rowsCount = dgvAuxiliaryItemDetail.Rows.Count - 1;//获取最后一行的数据                //把体检套餐中对应的值赋值给对应的列名                dgvAuxiliaryItemDetail.Rows[rowsCount].Cells["ID"].Value = Convert.ToInt32(dgvPhysicalExaminationItem.CurrentRow.Cells["体检项目ID"].Value);                dgvAuxiliaryItemDetail.Rows[rowsCount].Cells["编号"].Value = dgvPhysicalExaminationItem.CurrentRow.Cells["体检项目编号"].Value.ToString();                dgvAuxiliaryItemDetail.Rows[rowsCount].Cells["名称"].Value = dgvPhysicalExaminationItem.CurrentRow.Cells["体检项目名称"].Value.ToString();                dgvAuxiliaryItemDetail.Rows[rowsCount].Cells["价格"].Value = Convert.ToDecimal(dgvPhysicalExaminationItem.CurrentRow.Cells["体检现金价格"].Value);                dgvAuxiliaryItemDetail.Rows[rowsCount].Cells["ItemCategoryID"].Value = 1;                //项目类别ItemCategoryID用来判断表,值为1时是体检项目表、值为2时是化验项目表、值为3时是治疗项目表、值为4时是体检套餐表、值为5时是化验检查组合表                        }        }        #endregion

在选择体检套餐的表格(dgv)上的体检套餐中的CellClick事件有:

#region  体检套餐中的CellClick事件        private void dgvPhysicalExaminationSetMeal_CellClick(object sender, DataGridViewCellEventArgs e)        {            if (dgvAuxiliaryItemDetail.Rows.Count > 0)//判断dgvAuxiliaryItemDetail是否有数据            {                int intCountPhysicalExaminationSetMeal = 0;//用于判断选择的体检套餐与存在的体检套餐的比较,> 0存在体检套餐ID                for (int i = 0; i < dgvAuxiliaryItemDetail.Rows.Count; i++)//遍历存在的体检项目                {                                                      int ItemID = Convert.ToInt32(dgvAuxiliaryItemDetail.Rows[i].Cells["ID"].Value);//获取体检项目ID或者体检套餐ID                    int ItemID4 = Convert.ToInt32(dgvPhysicalExaminationSetMeal.CurrentRow.Cells["体检套餐ID"].Value);//获取选择的体检套餐ID                    int ItemCategoryID = Convert.ToInt32(dgvAuxiliaryItemDetail.Rows[i].Cells["ItemCategoryID"].Value);//获取体检的类型                    if (ItemCategoryID == 1)//为类型为体检项目    体检套餐与体检项目之间的比较                    {                        //根据选择的体检套餐ID查询出里面存在的体检项目                        DataTable DtPhysicalExaminationSetMealDetail = myFRM_TiJianDengJi_MainClient.dgvPhysicalExaminationItem_CellClick_SelectPhysicalExaminationSetMealDetail(ItemID4).Tables[0];                        for (int j = 0; j < DtPhysicalExaminationSetMealDetail.Rows.Count; j++)//遍历体检套餐                        {                            int DetailItemID = Convert.ToInt32(DtPhysicalExaminationSetMealDetail.Rows[j]["ItemID"]);//获取体检套餐明细中的体检项目ID                            if (DetailItemID == ItemID)//如果选择的体检套餐明细中的体检项目ID与存在的体检项目ID相等,就说明已经存在该体检项目                            {                                MessageBox.Show("已添加了该体检套餐的明细单项,不能再添加该套餐!");                                return;//跳出循环                            }                        }                    }                    if (ItemCategoryID == 4)//体检套餐与体检套餐之间的比较                    {                        //根据选择的体检套餐ID查询体检套餐明细中的体检项目ID                        DataTable DtPhysicalExaminationSetMealDetail = myFRM_TiJianDengJi_MainClient.dgvPhysicalExaminationItem_CellClick_SelectPhysicalExaminationSetMealDetail(ItemID4).Tables[0];                        for (int j = 0; j < DtPhysicalExaminationSetMealDetail.Rows.Count; j++)//遍历循环体检套餐                        {                            int DetailItemID = Convert.ToInt32(DtPhysicalExaminationSetMealDetail.Rows[j]["ItemID"]);//获取体检套餐中的体检项目ID                            //根据已经存在的体检套餐ID查询体检套餐中的体检项目ID                            DataTable dtExitPhysicalExaminationSetMealDetail = myFRM_TiJianDengJi_MainClient.dgvPhysicalExaminationItem_CellClick_SelectPhysicalExaminationSetMealDetail(ItemID).Tables[0];                            for (int k = 0; k < dtExitPhysicalExaminationSetMealDetail.Rows.Count; k++)//遍历存在的体检套餐                            {                                if (Convert.ToInt32(dtExitPhysicalExaminationSetMealDetail.Rows[k]["ItemID"]) == DetailItemID)//如果存在的体检套餐明细中的体检项目ID与选择的体检套餐明细中的体检项目ID相等                                {                                    intCountPhysicalExaminationSetMeal++;//变量累加 > 0就不添加体检套餐                                }                            }                        }                    }                    if (ItemID == ItemID4 && ItemCategoryID == 4)//判断当新增的体检套餐ID的项目ID已存在;项目类别ItemCategoryID用来判断表,值为4时是体检套餐表。                    {                        PhysicalExaminationSetMeal = false;//开关为假                        MessageBox.Show("该项目已存在!");                        break;//跳出循环                    }                    else                    {                        PhysicalExaminationSetMeal = true;   //开关为真                                          }                }                if (intCountPhysicalExaminationSetMeal > 0)//选择的体检套餐与存在的体检套餐中中有体检项目重复                {                    MessageBox.Show("该套餐中已经有项目存在病人的体检信息中了,请选择其他体检套餐或者体检项目!");                    return;//跳出循环                }            }            else            {                PhysicalExaminationSetMeal = true; //开关为真              }            if (PhysicalExaminationSetMeal == true) //当开关为真时,新增项目            {                dgvAuxiliaryItemDetail.Rows.Add();//在病人需要的体检项目表格中添加条空白行                int rowsCount = dgvAuxiliaryItemDetail.Rows.Count - 1;//获取最后一行的数据                //把体检套餐中对应的值赋值给对应的列名                dgvAuxiliaryItemDetail.Rows[rowsCount].Cells["ID"].Value = Convert.ToInt32(dgvPhysicalExaminationSetMeal.CurrentRow.Cells["体检套餐ID"].Value);                dgvAuxiliaryItemDetail.Rows[rowsCount].Cells["编号"].Value = dgvPhysicalExaminationSetMeal.CurrentRow.Cells["套餐编号"].Value.ToString();                dgvAuxiliaryItemDetail.Rows[rowsCount].Cells["名称"].Value = dgvPhysicalExaminationSetMeal.CurrentRow.Cells["套餐名称"].Value.ToString();                dgvAuxiliaryItemDetail.Rows[rowsCount].Cells["价格"].Value = Convert.ToDecimal(dgvPhysicalExaminationSetMeal.CurrentRow.Cells["现金价格"].Value);                dgvAuxiliaryItemDetail.Rows[rowsCount].Cells["ItemCategoryID"].Value = 4;                //项目类别ItemCategoryID用来判断表,值为1时是体检项目表、值为2时是化验项目表、值为3时是治疗项目表、值为4时是体检套餐表、值为5时是化验检查组合表            }                    }        #endregion

对于已经添加好的体检项目或者体检套餐,还有移除该条体检项目获取体检套餐的作用:效果如图:


2.9.8(图55)

该过程不涉及数据库和BLL中的方法,其中涉及到的UIL中的代码有:

#region  移除        private void dgvAuxiliaryItemDetail_CellClick(object sender, DataGridViewCellEventArgs e)        {            if (e.ColumnIndex == 0)            {                string strItemName = dgvAuxiliaryItemDetail.CurrentRow.Cells["名称"].Value.ToString().Trim();                DialogResult dr = MessageBox.Show("是否移除  " + strItemName + "的体检项目?", "系统提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);//弹出确定对话框                if (dr == DialogResult.OK)//如果点了确定按钮                {                    dgvAuxiliaryItemDetail.Rows.RemoveAt(dgvAuxiliaryItemDetail.CurrentRow.Index);                }             }        }        #endregion

对病人设置好体检项目后,可以点击保存,然后病人的体检项目就设置好了。该过程涉及到的储存过程有:

新增辅助项目表:病人体检的项目ID保存进这张表中

--新增辅助项目IF(@Type ='btnSave_Click_InsertAuxiliaryItemDetail')BEGIN INSERT    PW_AuxiliaryItemDetailTable(OrdonnanceID , AllItemID, ItemCategoryID, WhetherEffective,AS_PhysicalExaminationRegisterID,WhetherOrdonnance,RegisterTime )VALUES   (@OrdonnanceID, @AllItemID, @ItemCategoryID, 1,362,0,GETDATE())select @@IDENTITYEND

新增体检登记病人表:用于保存不经过挂号和处方的表,标识该病人不经过挂号和处方

--新增体检登记病人表中的病人ID和辅助项目IDIF @Type = 'btnSave_Click_InsertPhysicalExaminationChargeBillPatient'BEGININSERT INTO PW_PhysicalExaminationChargeBillPatientTable                      (PatientID,ChargeBillID, AuxiliaryItemDetailID,WhetherCharge )VALUES     (@PatientID,0, @AuxiliaryItemDetailID,0)END

BLL中涉及到的储存过程有:

新增辅助项目表:

 [OperationContract]         #region 新增辅助检查项目信息         public int btnSave_Click_InsertAuxiliaryItemDetail(int intOrdonnanceID, int intAllItemID, int intItemCategoryID)         {             SqlParameter[] SQLCMDpas ={                                           new  SqlParameter ("@Type",SqlDbType.Char),                                           new  SqlParameter ("@OrdonnanceID",SqlDbType.Int),                                           new  SqlParameter ("@AllItemID",SqlDbType.Int),                                           new  SqlParameter ("@ItemCategoryID",SqlDbType.Int),                                        };             SQLCMDpas[0].Value = "btnSave_Click_InsertAuxiliaryItemDetail";             SQLCMDpas[1].Value = intOrdonnanceID;             SQLCMDpas[2].Value = intAllItemID;             SQLCMDpas[3].Value = intItemCategoryID;            DataTable dt  = myDALMethod.QueryDataTable("TiJianZhongXin_TiJianDengJi_Main", SQLCMDpas);            int intCount = Convert.ToInt32(dt.Rows[0][0]);            return intCount;         }         #endregion

新增体检病人登记表:

 #region 新增体检登记病人表中的病人ID和辅助项目ID         [OperationContract]         public int btnSave_Click_InsertPhysicalExaminationChargeBillPatient(int intPatientID, int intAuxiliaryItemDetailID)         {             SqlParameter[] SQLCMDpas ={                                           new  SqlParameter ("@Type",SqlDbType.Char),                                           new  SqlParameter ("@PatientID",SqlDbType.Int),                                           new  SqlParameter ("@AuxiliaryItemDetailID",SqlDbType.Int),                                       };             SQLCMDpas[0].Value = "btnSave_Click_InsertPhysicalExaminationChargeBillPatient";             SQLCMDpas[1].Value = intPatientID;             SQLCMDpas[2].Value = intAuxiliaryItemDetailID;             int count = myDALMethod.UpdateData("TiJianZhongXin_TiJianDengJi_Main", SQLCMDpas);             return count;         }         #endregion

UIL中涉及到的代码有:

点击保存按钮中涉及的代码:

#region 保存按钮        private void btnSave_Click(object sender, EventArgs e)        {            if (dgvAuxiliaryItemDetail.Rows.Count > 0)//如果添加体检中的数据不为空            {                int intAuxiliaryItemDetailID = 0//用于新增辅助项目表;                int intCount = 0;//用于新增体检登记病人表                if (intPatientID > 0)//如果病人不为空                {                    for (int i = 0; i < dgvAuxiliaryItemDetail.Rows.Count; i++)//遍历需要体检的体检项目                    {                        int intAllItemID = Convert.ToInt32(dgvAuxiliaryItemDetail.Rows[i].Cells["ID"].Value);//获取体检项目ID或者体检套餐ID                        int intItemCategoryID = Convert.ToInt32(dgvAuxiliaryItemDetail.Rows[i].Cells["ItemCategoryID"].Value);//获取体检类型ID                        //添加辅助项目表                        intAuxiliaryItemDetailID = myFRM_TiJianDengJi_MainClient.btnSave_Click_InsertAuxiliaryItemDetail(intPatientID, intAllItemID, intItemCategoryID);                        //添加体检登记病人表(就不经过挂号和处方的表)                        intCount += myFRM_TiJianDengJi_MainClient.btnSave_Click_InsertPhysicalExaminationChargeBillPatient(intPatientID, intAuxiliaryItemDetailID);                    }                }                if (intCount == dgvAuxiliaryItemDetail.Rows.Count)//如果intCount的变量等于dgvAuxiliaryItemDetail中行的集合                {                    MessageBox.Show("新增辅助检查项目成功,新增的单是:" + strPatientCardNumber);//新增的病人卡号                    this.Close ();                }            }            else            {                MessageBox.Show("请为该病人设置体检项目!");            }         }        #endregion

于已经设置好体检项目的病人,如果医生认为缺少体检项目,那么就可以对病人的体检项目进行修改,点击新增病人窗体中的,然后选择需要修改的体检病人,点击体检登记病人窗体中的会看到如下界面:


2.9.8(图56)

选择需要添加的体检项目或者体检套餐,也可以点击删除已经对病人保存好的体检项目或者体检套餐 。(删除的思路解析: 删除时,因为对病人设置体检项目或者套餐时是把体检项目中的ID与体检套餐的ID保存进行辅助项目明细表中,那么删除时就应该把辅助项目明细表删除,但如果病人来医院的流程只是体检,不经过挂号和处方那么他不经过处方流程的标识是在体检登记病人表中有该病人的病人ID和辅助项目明细ID,那么如果对病人删除体检项目时,也应该删除该体检登记病人表中的辅助项目明细ID

删除的体检项目或者体检套餐的储存过程为:

--删除辅助检查项目IF @Type = 'dgvAuxiliaryItemDetail_CellClick_DeleteAuxiliaryItemDetailID'BEGINDELETE PW_AuxiliaryItemDetailTable WHERE  PW_AuxiliaryItemDetailTable.AuxiliaryItemDetailID = @AuxiliaryItemDetailIDDELETE PW_PhysicalExaminationChargeBillPatientTable WHERE PW_PhysicalExaminationChargeBillPatientTable. AuxiliaryItemDetailID = @AuxiliaryItemDetailIDEND

BLL中的方法有:

 #region 删除辅助检查项目         [OperationContract]         public int dgvAuxiliaryItemDetail_CellClick_DeleteAuxiliaryItemDetailID(int intAuxiliaryItemDetailID)//获取界面中的辅助项目明细ID         {             SqlParameter[] SQLCMDpas ={                                           new  SqlParameter ("@Type",SqlDbType.Char),                                           new  SqlParameter ("@AuxiliaryItemDetailID",SqlDbType.Int),//根据传入的辅助项目明细ID进行删除                                       };             SQLCMDpas[0].Value = "dgvAuxiliaryItemDetail_CellClick_DeleteAuxiliaryItemDetailID";             SQLCMDpas[1].Value = intAuxiliaryItemDetailID;             int count = myDALMethod.UpdateData("TiJianZhongXin_TiJianDengJi_Main", SQLCMDpas);             return count;         }         #endregion

UIL中在病人体检项目的表格中找到表格的dgvAuxiliaryItemDetail_CellClick事件,表格如下:


涉及到的代码有:

private void dgvAuxiliaryItemDetail_CellClick(object sender, DataGridViewCellEventArgs e)        {            if (e.ColumnIndex == 0)//点击移除            {                if (dgvAuxiliaryItemDetail.CurrentRow.Cells["AuxiliaryItemDetailID"].Value == null)//如果辅助项目明细ID为空,即为修改中刚添加的体检项目(没有保存)                {                    string strItemName = dgvAuxiliaryItemDetail.CurrentRow.Cells["名称"].Value.ToString().Trim();                     if (MessageBox.Show("是否移除  " + strItemName + "的体检项目?", "系统提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) == DialogResult.OK)                    {                        dgvAuxiliaryItemDetail.Rows.Remove(dgvAuxiliaryItemDetail.CurrentRow);//移除当前行                    }                }                else                {                    //存在辅助项目明细ID就进行删除操作                    if (MessageBox.Show("是否删除该条选择?", "系统提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) == DialogResult.OK)                    {                        int intAuxiliaryItemDetailID = Convert.ToInt32(dgvAuxiliaryItemDetail.CurrentRow.Cells["AuxiliaryItemDetailID"].Value);//获取辅助项目明细ID                        int intItemCategoryID = Convert.ToInt32(dgvAuxiliaryItemDetail.CurrentRow.Cells["ItemCategoryID"].Value);//获取体检项目类型                        if (intItemCategoryID == 4)//如果为体检套餐                        {                             string strPhysicalExaminationSetMealName = "";//声明一个变量                            //根据体检套餐获取体检套餐明细                            DataTable dtPhysicalExaminationSetMeal = myFRM_TiJianDengJi_MainClient.dgvAuxiliaryItemDetail_CellClick_SelectPhysicalExaminationSetMealOnAuxiliaryItemDetailID(intAuxiliaryItemDetailID).Tables[0];                            string[] strPhysicalExaminationSetMeal = new string[dtPhysicalExaminationSetMeal.Rows.Count];//声明一个数组,长度为体检套餐明细中的总体检数                            if (dtPhysicalExaminationSetMeal.Rows.Count > 0)//如果体检套餐大于0                            {                                for (int i = 0; i < dtPhysicalExaminationSetMeal.Rows.Count; i++)//遍历体检套餐明细                                {                                    strPhysicalExaminationSetMeal[i] = dtPhysicalExaminationSetMeal.Rows[i]["ItemName"].ToString().Trim();//获取体检套餐明细中的体检项目                                    strPhysicalExaminationSetMealName +=  "  "+ strPhysicalExaminationSetMeal[i];//用变量累加体检套餐中的所有体检项目                                }                                if (strPhysicalExaminationSetMealName != "")//如果变量不为空                                {                                    //提示当前选择要进行删除的体检套餐中的体检项目                                    if (MessageBox.Show("你当前选择的是体检套餐,内有:" + strPhysicalExaminationSetMealName + "的体检项目,是否进行删除操作?", "系统提示!", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)                                    {                                        //进行删除辅助项目ID(里含体检套餐)                                        if (myFRM_TiJianDengJi_MainClient.dgvAuxiliaryItemDetail_CellClick_DeleteAuxiliaryItemDetailID(intAuxiliaryItemDetailID) > 0)                                        {                                            MessageBox.Show("删除体检项目成功!");                                            //删除体检套餐后,对应的体检项目在表格中移除                                            for (int k = dgvAuxiliaryItemDetail.Rows.Count - 1; k > 0; k--)                                            {                                                int intAuxiliaryItemDetailID1 = Convert.ToInt32(dgvAuxiliaryItemDetail.Rows[k].Cells["AuxiliaryItemDetailID"].Value);//获取表格中的辅助项目ID                                                if (intAuxiliaryItemDetailID1 == intAuxiliaryItemDetailID)//表格中的辅助项目ID与删除的体检项目ID相等                                                {                                                    dgvAuxiliaryItemDetail.Rows.RemoveAt(k);//进行移除                                                }                                            }                                        }                                    }                                    return;//跳出该方法                                }                            }                        }                        //选择的是体检项目,直接进行体检项目的删除                        if (myFRM_TiJianDengJi_MainClient.dgvAuxiliaryItemDetail_CellClick_DeleteAuxiliaryItemDetailID(intAuxiliaryItemDetailID) > 0)                        {                            MessageBox.Show("删除体检项目成功!");                            dgvAuxiliaryItemDetail.Rows.Remove(dgvAuxiliaryItemDetail.CurrentRow);                            //删除后,直接移除当前行的数据                        }                        else                        {                            MessageBox.Show("删除体检项目失败!");                        }                    }                 }            }        }

修改完成了病人的体检项目或者体检套餐,必须要点击保存按钮进行修改保存的操作:

涉及到的储存过程有:

-修改辅助项目IF(@Type ='btnSave_Click_UpdateAuxiliaryItemDetail')BEGIN UPDATE    PW_AuxiliaryItemDetailTableSET              OrdonnanceID =@OrdonnanceID, AllItemID =@AllItemID, ItemCategoryID =@ItemCategoryIDWHERE PW_AuxiliaryItemDetailTable.AuxiliaryItemDetailID = @AuxiliaryItemDetailIDEND

BLL中的方法有:

region 修改辅助检查项目信息         [OperationContract]         public int btnSave_Click_UpdateAuxiliaryItemDetail(int intPatientID, int intAllItemID, int intItemCategoryID, int intAuxiliaryItemDetailID1)//根据界面中传入的病人ID,体检项目(套餐)ID,体检类型ID,辅助项目明细ID         {             SqlParameter[] SQLCMDpas ={                                           new  SqlParameter ("@Type",SqlDbType.Char),                                           new  SqlParameter ("@PatientID",SqlDbType.Int),//把病人ID传入数据库中并保存下来                                           new  SqlParameter ("@AllItemID",SqlDbType.Int),//把体检项目(或套餐)ID传入数据库中并保存下来                                           new  SqlParameter ("@ItemCategoryID",SqlDbType.Int), //把体检类型ID传入数据库中并保存下来                                           new SqlParameter ("@AuxiliaryItemDetailID",SqlDbType .Int ),//根据某具体的辅助项目明细ID进行修改                                       };             SQLCMDpas[0].Value = "btnSave_Click_UpdateAuxiliaryItemDetail";             SQLCMDpas[1].Value = intPatientID;             SQLCMDpas[2].Value = intAllItemID;             SQLCMDpas[3].Value = intItemCategoryID;             SQLCMDpas[4].Value = intAuxiliaryItemDetailID1;             int count = myDALMethod.UpdateData("TiJianZhongXin_TiJianDengJi_Main", SQLCMDpas);             return count;         }         #endregion

UIL中的代码有:

#region 保存按钮        private void btnSave_Click(object sender, EventArgs e)        {            int intAuxiliaryItemDetailID = 0; //变量获取需要修改的辅助明细项目ID            int intCountUpdate = 0;//修改成功用到的变量            int intCountInsert = 0;//新增成功用到的变量            if (intPatientID > 0)//如果病人ID不为空            {                for (int i = 0; i < dgvAuxiliaryItemDetail.Rows.Count; i++)//遍历病人的体检项目明细表                {                    int intAllItemID = Convert.ToInt32(dgvAuxiliaryItemDetail.Rows[i].Cells["ID"].Value);//获取体检项目ID获取体检套餐ID                    int intItemCategoryID = Convert.ToInt32(dgvAuxiliaryItemDetail.Rows[i].Cells["ItemCategoryID"].Value);//获取体检类型ID                    if (dgvAuxiliaryItemDetail.Rows[i].Cells["AuxiliaryItemDetailID"].Value == null)//如果表格中的辅助项目明细ID为空,说明该条数据为刚刚添加的数据                    {                        //根据病人ID和体检项目(套餐)ID,体检类型ID进行新增辅助项目明细表                          intAuxiliaryItemDetailID = myFRM_TiJianDengJi_MainClient.btnSave_Click_InsertAuxiliaryItemDetail(intPatientID, intAllItemID, intItemCategoryID);                           //添加体检登记病人表(就不经过挂号和处方的表)把刚刚添加的病人ID和辅助项目明细ID保存进数据库中                          intCountInsert += myFRM_TiJianDengJi_MainClient.btnSave_Click_InsertPhysicalExaminationChargeBillPatient(intPatientID, intAuxiliaryItemDetailID);                     }                    else                     {                        //获取辅助项目明细ID                       int intAuxiliaryItemDetailID1 = Convert .ToInt32 (dgvAuxiliaryItemDetail .Rows[i].Cells["AuxiliaryItemDetailID"].Value );                        //根据辅助馪明细ID进行修改辅助项目明细表                       intCountUpdate += myFRM_TiJianDengJi_MainClient.btnSave_Click_UpdateAuxiliaryItemDetail(intPatientID, intAllItemID, intItemCategoryID, intAuxiliaryItemDetailID1);                    }                }                //如果存在新增变量>0 或者修改变量>0   或者新增和修改的变量都大于零,说明修改成功!                if (intCountInsert > 0 || intCountUpdate > 0 || intCountUpdate > 0 && intCountInsert > 0)                {                    MessageBox.Show ("修改该病人的体检项目成功!");                    this.Dispose ();//释放资源                    this.Close();//关闭窗体                }                else                 {                    MessageBox.Show ("修改改病人的体检项目失败!");                }            }            else            {                MessageBox.Show("请选择需要修改的体检病人!");            }          }        #endregion

这样对病人的设置体检项目就已经完成了,设置好了病人的体检项目后病人就必须到前台进行支付体检的相关费用,然后进行体检。。。





0 0
原创粉丝点击