基于Access的医学生数据库语言学习探讨 参考论文
摘要:本文基于医学生的数据库语言教学要求,探讨了基于Access语言的课程任务设计与实现。
关键词:数据库语言教学;Access
中图分类号:G434 文献标识码:A 论文编号:1674-2117(2015)21-0128-04
随着计算机技术的不断发展及普及,计算机已经成为人们工作中不可缺少的工具,与此同时,信息技术在医院也被全面应用,医院信息化管理为医院的各项业务管理带来了极大的方便。在医学领域,医院信息管理系统、医学专家系统、数字人体分析以及大量医学数据分析管理等都毫不例外地是以数据库技术为基础的。
数据库语言是高校非计算机专业计算机教学普遍开设的课程,在医学院校开设数据库语言是医学生掌握计算机知识、熟悉数据库操作最切实可行的途径。数据库语言Access是功能较强、易于掌握的数据库管理软件,也是医学生今后工作和科研所必须掌握的一门计算机编程语言。该课程的学习以培养医学生面向对象程序设计的理念为宗旨,通过教学,从基础到实践,使学生掌握数据库语言Access的基本功能,培养初步开发信息系统的能力,基本具备解决实际应用问题的能力,更为培养医学生具有数字技术与医学结合的思维方式打下良好的基础。
Microsoft公司开发的数据库管理系统软件Access作为Office的重要组件之一,是一个面向对象的、采用事件驱动的关系型数据库环境。Access在关系数据模型的理论基础上结合了先进的面向对象思想,同时提供了大量适用于面向对象开发思想和方法的各种软件工具,为用户开发基于Windows环境的数据库应用软件系统创造了条件。本课程所采用的数据库系统是Access2010。
系统结构与设计
教育模式是“做中学”和“基于项目教育和学习”的集中概括和抽象表达,按照学科交叉渗透、理论结合实践的教学理念,按照“基础知识—应用提高—能力创新”三个阶段来改善学生的学习效果,提高学生的学习能力。所以,我们采用项目开发为任务,具体实现要手段的方式来综合学习Access。
1.确定所需要的表
本系统有4个实体,即医生、患者、床位和住院管理信息。系统的维护需要明确使用者的身份,因此,在系统登录时对使用者要进行身份的确认,通过一个表来存储系统所有的用户名及密码。
2.确定表的结构及主键
关系模型如下:①医生(编号、姓名、性别、出生日期、职称、所属科室、擅长诊断、个人简介),见表1。②患者(病历号、姓名、性别、出生日期、身份证号、联系方式、病史),见下页表2。③床位(床位号、类别、所属科室名、说明),见下页表3。④出入院信息(编号、主管医生编号、患者病历号、床位号、住院日期、出院日期、病由),见下页表4。
3. 转换并规范
将E-R图转换成关系模型并对关系模式进行规范化,至少达到3NF。医院住院管理信息系统E-R图如图1所示。
4.功能模块
根据需求分析,系统功能设计包括以下特点,即分层管理、业务功能模块化管理、业务流程严格控制等。
住院管理信息系统主要由两大功能模块构成。一类功能模块是基于基本信息管理,包括医生基本信息管理模块、患者基本信息管理模块和床位基本信息管理模块,另一类是基于出入院登记管理,包括入院登记管理、出院登记管理和住院情况统计。系统功能模块如图2所示。
关键技术举例
虽然Access的六大对象为表、窗体、查询、报表、宏和模块(VBA编程),有些简单的功能可以通过向导直接完成,但是有些数据关联着比较复杂的功能,就需要借助VBA代码实现。本文以“入院登记”窗体实现为例。
“入院登记”窗体的操作过程是:打开窗体后可看到患者的信息,通过“患者信息区域”的记录选择器可以查看第一条/上一条/下一条/最后一条记录,通过“查找患者”可以找到相应的患者。找到患者后最下面的“住院信息”子窗体中会显示该患者以往的住院记录,如“住院日期”有值,而“出院日期”没有值,则说明该患者已住院,不能再办理入院手续了。
如患者没有正在住院,在“1.选择科室”的列表中选择科室后,系统就会将该科室的出诊医生和空闲床位分别显示在对应的列表框中。单击选择医生和空闲床位后,这时“生成入院信息”的按钮才被激活。填写“住院病由”后,单击“生成入院信息”按钮,则可以办理该患者的住院手续,下方的“住院信息”子窗体里会显示当前加入的住院记录,此时“住院日期”为当前日期及时间,而“出院日期”为空。“入院登记”的运行界面如图3所示。
1.技术要点分析
(1)选择科室后,要自动显示“医生”和“空床位”列表信息。建立自动关联是一技术要点。
(2)“医生”和“空床位”两个列表信息,采用了多列方式来展示相关信息。多列的列表的赋值和读取是一难点。
(3)只有“医生”和“空床位”两个列表都进行了选择后,“生成入院信息”的按钮才被激活。要记录这两个列表的选择状态,就要采用全局变量来做标志。
(4)从界面上获取患者的HID、医生的DID、床位的CID和病由后,将相关信息添加到“住院”表中,并刷新界面,从而最终完成入院登记。
(5)数据库操作前,先要进行连接,操作完成后要释放数据库连接。
2.关键技术的VBA代码实现
(1)“查看信息”按钮单击事件中的VBA代码。
Private Sub ckxx_Click()
'--进行列表框初始化--
Me.ys.ColumnCount = 3
Me.cw.ColumnCount = 2
For i = 0 To Me.ys.ListCount - 1
Me.ys.RemoveItem (0)
Next i
For i = 0 To Me.cw.ListCount - 1
Me.cw.RemoveItem (0)
Next i
Dim con As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim fiel As ADODB.Field
Dim strsql, a, b, c, d As String
'--建立数据库连接--
Set con = CurrentProject.Connection
Set rs = New ADODB.Recordset
'-- 将符合条件的医生信息加入列表框 --
strsql = "select * from 医生 where 所属科室='" & Me.keshi & "' "
rs.Open strsql, CurrentProject.AccessConnection, adOpenKeyset
If rs.EOF Then
MsgBox "此类型号源已用完"
Me.keshi.SetFocus
Else
rs.MoveFirst
Do While Not rs.EOF
a = rs("DID")
b = rs("姓名")
c = rs("职称")
d = a & ", " & b & ", " & c '将符合条件的医生姓名加入列表框
ys.AddItem d
rs.MoveNext
Loop
End If
'-- 将符合条件的空床位名加入列表框 --
rs.Close
Set rs = Nothing
strsql = "(SELECT 床位.CID, 类别 FROM 床位, 住院 WHERE 床位.CID=住院.CID and 出院日期<=now() and 所属科室='" & Me.keshi & "' ) UNION (SELECT CID, 类别 FROM 床位 WHERE 所属科室='" & Me.keshi & "' and CID not in (select CID from 住院)) "
'MsgBox ("strsql=") & strsql
rs.Open strsql, CurrentProject.AccessConnection, adOpenKeyset
If rs.EOF Then
MsgBox "无空床位"
Me.keshi.SetFocus
Else
rs.MoveFirst
Do While Not rs.EOF
a = rs("CID")
b = rs("类别")
d = a & ", " & b '将符合条件的医生姓名加入列表框
cw.AddItem d
rs.MoveNext
Loop
End If
'--关闭数据库连接--
rs.Close
con.Close
Set rs = Nothing
Set con = Nothing
End Sub
(2)“生成入院信息”按钮单击事件中的VBA代码。
Private Sub ruyuan_Click()
If IsNull(Me.bingyou) Or Me.bingyou = "" Then
DoCmd.Beep
MsgBox "请输入入院病由!"
Me.bingyou.SetFocus
Exit Sub
End If
Dim con As New ADODB.Connection
Dim rs As New ADODB.Recordset
'--建立数据库连接--
Set con = CurrentProject.Connection
Set rs = New ADODB.Recordset
Dim strsql As String
strsql = "select * from 住院"
rs.Open strsql, CurrentProject.AccessConnection, adOpenKeyset, adLockOptimistic, adCmdText
'--添加新记录--
rs.AddNew '准备添加新记录
rs("HID") = Me.HID
rs("DID") = Me.ys.ItemData(Me.ys.ListIndex)
rs("CID") = Me.cw.Column(0)
rs("住院日期") = Now
rs("病由") = Me.bingyou 参考论文
rs.Update '记录集更新
Me.Refresh '--刷新窗体--
rs.Close '--关闭数据库连接--
con.Close
Set rs = Nothing
Set con = Nothing
End Sub
结论
数据库在现今各领域中都是必不可少的基础工具,数据库的高效便捷也是管理庞大数据的一大优势。数据库的学习与建立在一定程度上让医学生掌握了基本的数据库设计与实现的具体方法,为将来在医疗卫生岗位上的工作打下了坚实的基础。
参考资料;http://zimeitichuangzuo.com/index.php?c=show&id=3652