实现护士工作站的注射室管理功能的代码(十六)

来源:互联网 发布:淘宝上买淘宝小号 编辑:程序博客网 时间:2024/05/01 00:09

实现护士工作站的注射室管理功能的代码(十六)

3.3护士工作站

3.3.1注射室管理

所谓的注射室是病人领取药水时护士进行药水的注射。或者是一些如洗胃泪道冲洗等只能时护士做的都要到注射室。这里是根据用药方式判断每一种药品是否经过注射室,如果是口服、擦拭的药品处方明细信息不会显示,处方明细只显示需要护士帮忙的药品。一开始窗体显示的全是紫色的已收款带执行的单据。当点击“查询全部注射单”按钮是左边处方单中青色的处方单是已执行注射的单据,而紫色显示的处方单是已收款带执行的单据。右边显示全部单据的明细信息。但当点击左边每一条注射单时,右边会对应显示该单据的明细信息。选择已收款带执行的单据点击“执行”按钮该单据的状态会变成已执行注射的单据颜色会有紫色变为青色,而如果选择已执行注射的单据点击“执行”按钮会弹出一个提示框提示“该单已执行,无需再次执行”。这里还可以根据处方单号、收款状态、发药状态等多条件查询处方单据。

注射室管理截图:

 

3.3.1(图1

2、从界面上可以看到我们这里用到的控件有:

控件名称

说明

组装箱控件groupBox

   第一要设置每个控件的Text,第二设置控件Name;不同的是dataGridView右键进行编辑列。

标签控件lable

文本框控件textBox

下拉框控件comboBox

按钮控件button

复选框控件CheckBox

时间控件dateTimePicker

表格控件dataGridView

查询功能实现

第一步:数据库

1、  表与关系

 

3.3.1(图2

1:注射表(PW_InjectTable)

列名

数据类型

主键/外键

说明

InjectID

int - Identity

主键

注射ID

OrdonnanceID

int

外键

处方单明细ID

AS_InjectStatusID

int

外键

注射状态ID

InjectTime

datetime

 

注射时间

WhetherEffective

bit

 

有效否

 

2:处方单表(PW_OrdonnanceTable)

列名

数据类型

主键/外键

说明

OrdonnanceID

int - Identity

主键

处方单ID

OrdonnanceNumber

nchar (30)

 

处方单号

PatientID

int

外键

病人ID

PrescriptionDate

datetime

 

处方时间

ClinicTechnicalOffices_TechnicalOfficesID

int

外键

就诊科室_科室ID

TreatmentDoctor_StaffID

int

外键

就诊医生_员工ID

AS_ChargeStatusID

int

外键

收费状态ID

ChargeForPersonnel_StaffID

int

外键

收费人员_员工ID

ChargeTime

datetime

 

收费时间

AS_TakeMedicineStatusID

int

外键

发药状态ID

TakeMedicinePersonnel_StaffID

int

外键

发药人员_员工ID

TakeMedicineTime

datetime

 

发药时间

BedID

int

外键

床位ID

OutpatientMedicalRecordsTemplateID

int

外键

门诊病历模板ID

WhetherEffective

bit

 

有效否

 

表3:处方单明细表(PW_OrdonnanceDetailTable)

列名

数据类型

主键/外键

说明

OrdonnanceDetailID

int - Identity

主键

处方单明细ID

OrdonnanceID

int

外键

处方单ID

OrdonnanceDetailType

nchar (50)

 

处方单明细类型

OrdonnanceDetailEncoding

nchar (30)

 

处方单明细编码

DrugID

int

外键

药品ID

ItemID

int

外键

项目ID

TotalDrug

nchar (50)

 

用药总量

EachAgent

nchar (50)

 

每剂用量

AS_DrugUseMannerID

int

外键

用药方式ID

AS_DDDSID

int

外键

用药频率ID

Remarks

nchar (100)

 

备注

WhetherEffective

bit

 

有效否

4:药品表(BT_OutpatientMedicalRecordsTemplateTable)

列名

数据类型

主键/外键

说明

OutpatientMedicalRecordsTemplateID

int  - Identity

主键

门诊病历模板ID

TemplateNumber

nchar  (50)

 

模板编号

TemplateName

nchar  (50)

 

模板名称

WriteDoctor_StaffID

int

外键

撰写医生_员工ID

WriteTechnicalOfficesID

int

外键

撰写科室_科室ID

AS_TemplateTypeID

int

外键

模板类型ID

AS_InvokingJurisdictionID

int

外键

调用权限ID

WhetherOperation

bit

 

是否手术

TemplateRemarks

nchar  (200)

 

模板备注

SuitCase

nchar  (200)

 

适合情况

PatientActionInChief

nchar  (300)

 

病人主诉

PatientMedicalHistory

nchar  (300)

 

病人病史

PhysicalExaminationCase

nchar  (300)

 

体检情况

InitialDiagnosis

nchar  (300)

 

初步诊断

DisposeIdea

nchar  (300)

 

处理意见

WhetherEffective

bit

 

有效否

RegisterID

int

外键

挂号ID

表5:病人表(BT_PatientTable

列名

数据类型

主键/外键

说明

PatientID

int - Identity

主键

病人ID

PatientCardNumber

nchar (50)

 

病人卡号

PatientName

nchar (30)

 

病人名称

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

 

有效否

WhetherMember

bit

 

会员否

表6:员工表(BT_StaffTable

列名

数据类型

主键/外键

说明

StaffID

int - Identity

主键

员工ID

TechnicalOfficesID

int

外键

科室ID

StaffNumber

nchar (20)

 

员工编号

StaffName

nchar (20)

 

员工名称

WhetherOperator

bit

 

操作员否

AlphabeticBrevityCode

nchar (20)

 

拼音简码

WubiInCode

nchar (20)

 

五笔简码

AS_StaffPositionID

int

外键

员工职务ID

AS_MedicalTitlesID

int

外键

医务职称ID

AS_WorkingStatusID

int

外键

工作状态ID

AS_SexID

int

外键

性别ID

ContactTelephone

nchar (50)

 

联系电话

WhetherBuiltIn

bit

 

内置否

RegisteredSum

decimal (18, 2)

 

挂号金额

AS_IntoTheHobbyID

int

外键

录入爱好ID

StaffPhotos

char (200)

 

员工照片

Email

nchar (70)

 

电子邮件

IDCardNo

nchar (100)

 

身份证号

ContactAddress

nchar (100)

 

联系地址

Birthday

datetime

 

出生日期

WhetherBirthdayRemind

bit

 

生日提醒否

WorkDate

datetime

 

工作日期

TerminationDate

datetime

 

离职日期

AS_OfficialAcademicCredentialsID

int

外键

最高学历ID

StudySubject

nchar (70)

 

学习专业

AS_PoliticsStatusID

int

外键

政治面貌ID

Remarks

nchar (100)

 

员工备注

WhetherEffective

bit

 

有效否

表7:属性明细表(BT_AttributeDetailsTable

列名

数据类型

主键/外键

说明

AttributeDetailsID

int - Identity

主键

属性明细ID

AttributeDetailsID_F

int

外键

属性明细ID_父

AttributeSetID

int

外键

属性集合ID

AttributeDetailsName

nchar (30)

 

属性明细名称

Number

nchar (30)

 

编号

RetrievalInCode

nchar (30)

 

检索简码

BuiltInIdentifiers

bit

 

内置标识

Remarks

nchar (100)

 

备注

WhetherEffective

bit

 

有效否

 

第二步:功能代码实现

查询注射单

1)、存储过程代码:

--查询处方注射单IF(@Type = 'FRM_ZhuSheDanBaoGao_Load_SelectOrdonnance')BEGINSELECT     LTRIM(RTRIM(PW_OrdonnanceTable.OrdonnanceNumber)) AS OrdonnanceNumber, PW_OrdonnanceTable.PatientID, LTRIM(RTRIM(BT_PatientTable.PatientName)) AS PatientName, LTRIM(RTRIM(BT_AttributeDetailsTable.AttributeDetailsName)) AS TakeMedicineStatus, PW_OrdonnanceTable.AS_TakeMedicineStatusID, PW_OrdonnanceTable.TakeMedicinePersonnel_StaffID, LTRIM(RTRIM(BT_StaffTable.StaffName)) AS StaffName, PW_OrdonnanceTable.TakeMedicineTime, LTRIM(RTRIM(BT_PatientTable.Age)) AS Age, BT_PatientTable.AS_SexID, LTRIM(RTRIM(BT_AttributeDetailsTable_1.AttributeDetailsName)) AS Sex, PW_InjectTable.InjectID, PW_InjectTable.InjectTime, PW_InjectTable.AS_InjectStatusID,       PW_InjectTable.OrdonnanceID AS OrdonnanceIDFROM         PW_InjectTable INNER JOINPW_OrdonnanceTable INNER JOINBT_AttributeDetailsTable ON PW_OrdonnanceTable.AS_TakeMedicineStatusID = BT_AttributeDetailsTable.AttributeDetailsID INNER JOINBT_StaffTable ON PW_OrdonnanceTable.TakeMedicinePersonnel_StaffID = BT_StaffTable.StaffID ON PW_InjectTable.OrdonnanceID = PW_OrdonnanceTable.OrdonnanceID LEFT OUTER JOINBT_AttributeDetailsTable AS BT_AttributeDetailsTable_1 INNER JOINBT_PatientTable ON BT_AttributeDetailsTable_1.AttributeDetailsID = BT_PatientTable.AS_SexID ON PW_OrdonnanceTable.PatientID = BT_PatientTable.PatientID    WHERE PW_OrdonnanceTable.AS_TakeMedicineStatusID=162 AND PW_OrdonnanceTable.WhetherEffective=1 AND PW_OrdonnanceTable.OrdonnanceID NOT IN(SELECT PW_InjectTable .OrdonnanceID FROM PW_InjectTable)END--查询注射明细BEGINSELECT     LTRIM(RTRIM(PW_OrdonnanceDetailTable.OrdonnanceDetailID))AS OrdonnanceDetailID, LTRIM(RTRIM(PW_OrdonnanceDetailTable.OrdonnanceID))AS OrdonnanceID, LTRIM(RTRIM(PW_OrdonnanceDetailTable.OrdonnanceDetailType))AS OrdonnanceDetailType, LTRIM(RTRIM(PW_OrdonnanceDetailTable.OrdonnanceDetailEncoding))AS OrdonnanceDetailEncoding, LTRIM(RTRIM(PW_OrdonnanceDetailTable.DrugID))AS DrugID, LTRIM(RTRIM(BT_DrugTable.DrugEncoding))AS DrugEncoding, LTRIM(RTRIM(BT_DrugTable.DrugName))AS DrugName, LTRIM(RTRIM(BT_DrugTable.DrugSpecification))AS DrugSpecification, LTRIM(RTRIM(PW_OrdonnanceDetailTable.TotalDrug))AS TotalDrug, LTRIM(RTRIM(PW_OrdonnanceDetailTable.EachAgent))AS EachAgent, LTRIM(RTRIM(PW_OrdonnanceDetailTable.AS_DrugUseMannerID))AS AS_DrugUseMannerID, LTRIM(RTRIM(BT_AttributeDetailsTable.AttributeDetailsName)) AS DrugUseManner, LTRIM(RTRIM(PW_OrdonnanceDetailTable.AS_DDDSID))AS AS_DDDSID, LTRIM(RTRIM(BT_AttributeDetailsTable_1.AttributeDetailsName)) AS DDDS, LTRIM(RTRIM(PW_OrdonnanceDetailTable.Remarks))AS RemarksFROM         PW_OrdonnanceDetailTable INNER JOINBT_DrugTable ON PW_OrdonnanceDetailTable.DrugID = BT_DrugTable.DrugID INNER JOINBT_AttributeDetailsTable ON PW_OrdonnanceDetailTable.AS_DrugUseMannerID = BT_AttributeDetailsTable.AttributeDetailsID INNER JOINBT_AttributeDetailsTable AS BT_AttributeDetailsTable_1 ON PW_OrdonnanceDetailTable.AS_DDDSID = BT_AttributeDetailsTable_1.AttributeDetailsIDWHERE      AS_DrugUseMannerID=163 or AS_DrugUseMannerID=165or AS_DrugUseMannerID=166 or AS_DrugUseMannerID=167or AS_DrugUseMannerID=168 or AS_DrugUseMannerID=169 or AS_DrugUseMannerID=170or AS_DrugUseMannerID=171 or AS_DrugUseMannerID=172 or AS_DrugUseMannerID=173 or AS_DrugUseMannerID=174 or AS_DrugUseMannerID=175or AS_DrugUseMannerID=176 or AS_DrugUseMannerID=177 or AS_DrugUseMannerID=179 or AS_DrugUseMannerID=180 or AS_DrugUseMannerID=181or AS_DrugUseMannerID=182 or AS_DrugUseMannerID=183 or AS_DrugUseMannerID=184 or AS_DrugUseMannerID=185 or AS_DrugUseMannerID=186or AS_DrugUseMannerID=187 or AS_DrugUseMannerID=188 or AS_DrugUseMannerID=189 or AS_DrugUseMannerID=190 or AS_DrugUseMannerID=192or AS_DrugUseMannerID=194 or AS_DrugUseMannerID=196 or AS_DrugUseMannerID=197 or AS_DrugUseMannerID=198 or AS_DrugUseMannerID=200or AS_DrugUseMannerID=201 or AS_DrugUseMannerID=202 AND PW_OrdonnanceDetailTable.OrdonnanceID =@OrdonnanceIDEND

2)、逻辑层代码:

[OperationContract]        #region 查询处方注射单        public DataSet FRM_ZhuSheDanBaoGao_Load_SelectOrdonnance()        {            SqlParameter[] SQLCMDpas ={                                          new  SqlParameter ("@Type",SqlDbType.Char),                                              };            SQLCMDpas[0].Value = "FRM_ZhuSheDanBaoGao_Load_SelectOrdonnance";            DataTable myDataTable = myDALMethod.QueryDataTable("HuShiGongZuoZhan_FRM_ZhuSheDanBaoGao", SQLCMDpas);            DataSet myDataSet = new DataSet();            myDataSet.Tables.Add(myDataTable);            return myDataSet;        }        #endregion        [OperationContract]        #region 查询注射明细        public DataSet dgvOrdonnance_SelectionChanged_SelectOrdonnanceDetai(int intOrdonnanceID)        {            SqlParameter[] SQLCMDpas ={                                          new  SqlParameter ("@Type",SqlDbType.Char),                                          new  SqlParameter ("@OrdonnanceID",SqlDbType.Int),                                              };            SQLCMDpas[0].Value = "dgvOrdonnance_SelectionChanged_SelectOrdonnanceDetai";            SQLCMDpas[1].Value = intOrdonnanceID;            DataTable myDataTable = myDALMethod.QueryDataTable("HuShiGongZuoZhan_FRM_ZhuSheDanBaoGao", SQLCMDpas);            DataSet myDataSet = new DataSet();            myDataSet.Tables.Add(myDataTable);            return myDataSet;        }        #endregion

 

3)、界面层代码:

#region Load事件        private void FRM_ZhuSheDanBaoGao_Load(object sender, EventArgs e)        {            dgvOrdonnance.DataSource = myFRM_ZhuSheDanBaoGaoClient.FRM_ZhuSheDanBaoGao_Load_SelectOrdonnance().Tables[0];//查询处方注射单             dgvOrdonnance.ClearSelection();//清空默认选行                      }        #endregion#region dgvOrdonnance_CellClick事件        private void dgvOrdonnance_CellClick(object sender, DataGridViewCellEventArgs e)        {            if (dgvOrdonnance.CurrentRow != null)//判断处方注射单的当前行不为空            {                intOrdonnanceID = Convert.ToInt32(dgvOrdonnance.CurrentRow.Cells["OrdonnanceID"].Value);//获取点击的行的OrdonnanceID                if (intOrdonnanceID != 0)//如果OrdonnanceID不为0                {                    dgvOrdonnanceDetail.DataSource = myFRM_ZhuSheDanBaoGaoClient.dgvOrdonnance_SelectionChanged_SelectOrdonnanceDetai(intOrdonnanceID).Tables[0];//执行查询处方注射单明细                }            }            else            {                MessageBox.Show("请选择要查询的处方单!");            }        }        #endregion

执行注射

1)、存储过程代码:

--执行注射IF(@Type='btnExecute_Click_UpdateOrdonnance')BEGINUPDATE PW_OrdonnanceTableSET    AS_ChargeStatusID=361      WHERE    PW_OrdonnanceTable.OrdonnanceID =@OrdonnanceIDEND--修改注射状态INSERT     PW_InjectTable(OrdonnanceID, AS_InjectStatusID, InjectTime, WhetherEffective)VALUES       (@OrdonnanceID, 297, @InjectTime, 1) <span style="font-size:14px;"> </span>

2)、逻辑层代码:

[OperationContract]        #region 执行注射、修改收费状态        public int btnExecute_Click_UpdateOrdonnance(int intOrdonnanceID,DateTime  dtmInjectTime)        {            SqlParameter[] SQLCMDpas = {                                            new SqlParameter("@Type", SqlDbType.Char),                                           new SqlParameter("@OrdonnanceID", SqlDbType.Int),                                           new SqlParameter("@InjectTime", SqlDbType.DateTime),                                       };            SQLCMDpas[0].Value = "btnExecute_Click_UpdateOrdonnance";            SQLCMDpas[1].Value = intOrdonnanceID;            SQLCMDpas[2].Value = dtmInjectTime;            int myop = myDALMethod.UpdateData("HuShiGongZuoZhan_FRM_ZhuSheDanBaoGao", SQLCMDpas);            return myop;        }        #endregion

3)、界面层代码:

#region DGV根据执行状态改变背景色        void SheZhiZhiXingAnNiu()        {            for (int i = 0; i < dgvOrdonnance.Rows.Count; i++)  //循环处方注射单行数            {                string strTakeMedicineStatus = dgvOrdonnance.Rows[i].Cells["TakeMedicineStatus"].Value.ToString().Trim();//声明注射状态strTakeMedicineStatus字符串变量用来获取每行注射单的注射状态                if (strTakeMedicineStatus == "已注射")//注射状态为已发药                {                    dgvOrdonnance.Rows[i].DefaultCellStyle.BackColor = Color.Thistle;//以执行的处方注射单颜色为青色                }                else                {                    dgvOrdonnance.Rows[i].DefaultCellStyle.BackColor = Color.LightCyan;//已收款待执行的处方注射单颜色为紫色                }            }        }        #endregion#region 执行事件        private void btnExecute_Click(object sender, EventArgs e)        {            if (dgvOrdonnance.CurrentRow != null)//判断点击的行不为空            {                intOrdonnanceID = Convert.ToInt32(dgvOrdonnance.CurrentRow.Cells["OrdonnanceID"].Value);//获取点击的行的OrdonnanceID                if (intOrdonnanceID != 0)//如果OrdonnanceID不为0                {                    DateTime dtmInjectTime = DateTime.Now;                     int count= myFRM_ZhuSheDanBaoGaoClient.btnExecute_Click_UpdateOrdonnance(intOrdonnanceID, dtmInjectTime);                   if (count > 0)                   {                       MessageBox.Show("执行输液成功!");                   }                    dgvOrdonnance.DataSource = myFRM_ZhuSheDanBaoGaoClient.FRM_ZhuSheDanBaoGao_Load_SelectOrdonnance().Tables[0];//刷新注射单界面                    SheZhiZhiXingAnNiu();//DGV根据执行状态改变背景色                }                else                {                    MessageBox.Show("执行输液失败!");                }            }            else            {                MessageBox.Show("请选择要查询的处方注射单!");            }                    }        #endregion


仅供学习,禁止用于商业用途。

不要询问世界需要什么。问问什么事情可以使你活跃,然后付诸实践。因为世界需要活跃的人。----霍华德·瑟曼

 



1 0
原创粉丝点击