实现护士工作站的注射室管理功能的代码(十六)
来源:互联网 发布:淘宝上买淘宝小号 编辑:程序博客网 时间: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)
联系手机
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)
员工照片
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
仅供学习,禁止用于商业用途。
不要询问世界需要什么。问问什么事情可以使你活跃,然后付诸实践。因为世界需要活跃的人。----霍华德·瑟曼
- 实现护士工作站的注射室管理功能的代码(十六)
- 实现医生工作站的辅助检查功能的代码(七)
- 实现医生工作站的历次处方功能的代码(八)
- 实现医生工作站的病历模板功能的代码(十)
- 实现医生工作站的处方模板功能的代码(十一)
- 实现医生工作站的病程模板功能的代码(十二)
- 实现医生工作站的医技模板功能的代码(十三)
- 实现医生工作站的检查模板功能的代码(十四)
- 实现医生工作站的疾病档案功能的代码(十五)
- 实现医生工作站中书写病历功能的代码(五)
- 实现医生工作站中处方录入功能的代码(六)
- 护士工作站
- 护士工作站执行签名颜色不同的意思------运维日志18
- 注射的一个完整代码
- 不做护士的理由
- 十六.增加一个项目协作留言板功能(二)----- 建立一个任务管理的列表页面
- 救灾现场的美女护士
- Python做的眼睛护士
- STM32 Flash模拟E2prom
- Android-Canvas&Drawable
- Java反射(一)
- 图像处理 频域滤波函数
- [Vijos 1137] 组合数 · 数学
- 实现护士工作站的注射室管理功能的代码(十六)
- 完整Debian7配置LAMP(Apache/MySQL/PHP)环境及搭建建站
- JSTL 核心标签库 使用
- 面试题之求二叉树的深度
- Microsoft TPL Dataflow 并行处理枚举,输出等
- 从哪里开始
- 智力题 诚实国和说谎国
- 图像处理 灰度图像直方图
- Deep Learning源代码收集-持续更新…