病历管理系统设计_第1页
病历管理系统设计_第2页
病历管理系统设计_第3页
病历管理系统设计_第4页
病历管理系统设计_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

病历管理系统太原理工大学病历管理系统太原理工大学专业:计算机信息管理学生姓名:郭蕾指导教师:路老师完成时间:2015年8月22日病历管理系统摘要病历管理系统是医院管理系统的重要组成部分,该系统的开发主要包括后台数据库的建立以及前台应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的数据库,而对于后者则要求具有齐全完善的应用程序功能,友好人性化的操作界面。该系统采用现代的办公自动化理念,面向中小型医院,实现无纸化办公,确保医疗单位在病历保管实现高效办公,规范管理。本论文主要介绍了病理管理系统的设计开发与实现的全部过程。并运用功能结构图、数据库关系图和E-R图等对核心模块的设计过程进行了详细的说明。病历管理系统整体基于B/S(浏览器/服务器)模式,后台数据库选用SQLServer2000,使用ASP嵌入HTML语言来设计实现。实现了病历在保管中的周期过程,完成了从患者的注册到患者的出院等一系列病历流程。简化了繁琐的手工操作,规范化整个病历处理流程,使得病历的流转更方便快捷。关键字:管理信息系统;数据库;病历管理系统;系统源代码;数据流图。【英文摘要】Medicalrecordmanagementsystemisanimportantpartofhospitalmanagementsystem,whichmainlyincludestwoaspects:theestablishmentofthebackgrounddatabaseandthedevelopmentoftheforegroundapplicationprogram.Theformerrequirestheestablishmentofdataconsistencyandintegrity,datasecuritygooddatabase,andforthelatter,thelatterrequiresacompleteandperfectapplicationfunctions,user-friendlyinterface.Thesystemusesmodernofficeautomationconcept,forsmallandmediumhospitals,toachievepaperlessoffice,toensurethatmedicalunitsinthecaseofmedicalrecordstoachieveefficientoffice,standardizedmanagement.Thisthesismainlyintroducesthewholeprocessofthedesignanddevelopmentofthepathologymanagementsystem.Thedesignprocessofthecoremoduleisdescribedindetailbyusingthefunctionalstructurediagram,thedatabasediagramandtheE-Rdiagram.ThewholesystemisbasedonB/S(Browser/server)mode,andthebackgrounddatabaseisServerSQL2000,whichisembeddedinHTMLlanguagetodesignandimplement.Toachievethemedicalrecordsinthecustodyofthecycleprocess,completedfromthepatient'sregistrationtothepatient'sdischargeandaseriesofmedicalrecords.Simplifythecumbersomemanualoperation,thestandardizationofthewholeprocessofmedicalrecords,makingthetransferofmedicalrecordsmoreconvenientandquick.Keywords:managementinformationsystem;database;medicalrecordmanagementsystem;systemsourcecode;dataflowchart.目录摘要30495 1TOC\o"1-3"\u第一章引言 51.1背景 41.2研究思路和工作计划 5第二章系统开发环境与技术的分析 62.1系统需要解决的主要问题 62.2系统运行环境 72.3相关技术介绍 7第三章病历管理系统设计分析 93.1病历管理系统概述 93.2系统目标分析 103.3开发设计思想 103.4系统功能分析 103.5病历管理系统流程图 11第四章数据库设计 124.1病历管理系统E—R图 124.2病历管理系统数据库各表详细设计 134.3数据库SQLServer2000的连接 16第五章系统各功能模块的介绍 175.1用户登录 175.2管理员管理模块 185.2.1管理员添加模块 185.3患者管理模块 215.3.1患者基本信息的录入 215.3.2患者管理的删除和修改 22第六章医院病历管理系统的实现 256.1系统源代码 25结论 41参考文献 41致谢 42引言1.1背景近几年,随着医院的规模不断扩大,用原来的人工管理病历的方法已不合时宜。目前我国很多医院的信息处理还停留在手工方式,主要是记录在纸张和胶片上,劳动强度大且工作效率低,医务人员和管理人员的大量时间都消耗在事务性工作上;病案、临床检验、病理检查等许多宝贵的数据资料的检索十分费事甚至难以实现;对这些资料深入的统计分析手工方式无法进行,不能充分为医学科研利用。传统病历在使用中还有许多不足之处,如易变质、占地多、不易保管、查找和存取麻烦、不能几个人同时借阅同一份病历,实现信息共享等。电子病历由数字化的病人医疗信息及相关子系统组成,能有效地提高整个社会的医疗保障水平。目的充分利用有限的资源实现医院信息管理现代化,开发医院电子病案管理系统,提高“以患者为中心”的服务质量和水平。为贯彻落实《中共中央国务院关于深化医药卫生体制改革的意见》、《国务院关于印发医药卫生体制改革近期重点实施方案(2009-2011年)的通知》和《国务院办公厅关于印发医药卫生体制五项重点改革2010年度主要工作安排的通知》等文件精神,卫生部先后在2010,2011发布了关于电子病历系统的规范和通知文件。1.2010-03-04卫生部印发《电子病历基本规范(试行)》的通知。2.2010-10-14卫生部关于开展电子病历试点工作的通知。3.2011-01-04卫生部印发《电子病历系统功能规范(试行)》的通知。4.2011-05-24卫生部办公厅关于推进以电子病历为核心医院信息化建设试点工作的通知。开发医院电子病案管理系统的意义有如下几点:一是规范病历书写,提高病历质量,实现病历标准。二是病人信息异地共享,医务人员可以通过计算机远程存取病人病历。三是可以方便存储、检索和浏览。这些优点能够极大地提高管理的效率,也是管理行业的科学化、正规化管理,与世界接轨的重要条件。根据医院电子病案管理的特点,配置适当硬件,计算机专家和医院实际工作相结合,采取边使用边修改完善,突出实际运用。共同研发医院病案管理的网络化软件。提高医院病案管理水平和工作效率,为更好地服务患者创造有利条件。硬件系统先进,性能可靠;软件具有先进行、完善性、使用性、方便性和可靠性。总之,电子病历管理系统是专门面向医院的管理系统,其目标是使用高速、快捷的计算机技术及计算机网络技术设计一个可以实现网络连接的、可以提高医院信息化、自动化管理水平。最显著的优点就是对信息数据的共享和反复利用。病人看病不需要携带病历,只需提供自己的姓名、病历号或其他信息,医生通过计算机即可得到该病人所有信息。1.2研究思路和工作计划正如研究任何其它软件项目一样,我做的毕业设计也经历了从选题,调研,熟悉开发环境,实验关键技术,查找类似的相关系统的资料;系统概要设计,数据库结构设计,功能模块开发,功能模块测试,系统调试和系统试运行和修改。下面的流程图反映了我们的基本的思路和过程。在各阶段的时间安排上,选题和调研用了两周左右的时间;熟悉开发环境,实验关键技术,查找类似的相关系统的资料用了两周时间;系统概要设计用了一周的时间;数据库结构设计用了一周时间;功能模块开发和功能模块测试用了四周的时间;最后,系统调试和系统试运行和修改用了约三周的时间。完成全部工作大约用了3个月的时间。第二章系统开发环境与技术的分析该管理系统面向的主要对象是医院,所以系统管理方面,应该有添加不同等级的管理人员和医务人员并针对不同的用户设置不同的权限,密码管理员能添加医务人员并修改添加人员的密码,同时管理人员只能修改自己的密码。在病历管理页面中病历管理员可以查看所有医务人员的病历录入信息,但是不能修改其中的录入信息。普通医务人员可以通过管理员分配的用户名和密码登录系统,由于权限的设置他们可以看见管理设置栏目但是无法进行操作。医生录入的病历信息只能由自己所看见,并且可以修改,在列表中是无法看见其他医生所录入的病历信息,很好的保证了病人的隐私权利。2.1系统需要解决的主要问题本次病历管理系统设计存在的问题主要有如下三点:系统独立性差。原有系统一般使用的是数据库提供的开发工具编写的程序,因此受数据库的制约较大,编写出来的程序性能也不太好。模块性差。由于不是一个完整的编程语言,故不能做到代码的模块化,给功能的扩展带来了巨大的不便。系统运行效率不够高。由于系统采用的是跟数据库连接,而且系统没有提供数据清理功能,故系统运行长时间后,数据库过于庞大时,系统运行速度不够快,效率不够高。病历管理系统提出的解决方案本系统是以VisualBasic语言为前台的应用程序进行开发,后台使用SQLServer2000建立数据库。VisualBasic提供了可视化的开发环境,使用者可以很容易地构建界面,不需要编写代码来实现界面设计[13]。而且VisualBasic提供了丰富的控件组,ADO是VisualBasic6.0中新增的对象,是一个更简单的对象模型,ADO更好的集成了其它数据访问技术,并且对本地和远程数据库均有共同的界面,可以取代DAO和RDO,ADO更易于使用,本系统就是采用ADO控件来连接SQL数据库。2.2系统运行环境为了保证系统运行的效率和可靠性,系统服务器端应具有较高的软硬件配置,客户端的要求不是很高。此应用程序可广泛运行于国际互联网即英特网,也可适用于内部的局域网。其运行要求如下:服务器端配置硬件环境:CPU:Inter奔腾2.0GHZ以上内存:256MB以上硬盘:20G以上软件环境:Windows2000ServerSP4(含IIS5.1),MicrosoftSQLServer客户端配置硬件环境:CPU:Inter赛扬2.0GHZ以上内存:128MB以上硬盘:1G以上软件环境:Windows2000/NT/XP/2003,IE6.02.3相关技术介绍为了保证系统运行的效率和可靠性,系统服务器端应具有较高的软硬件配置,客户端的要求不是很高。此应用程序可广泛运行于国际互联网即英特网,也可适用于内部的局域网。其运行要求如下:服务器端配置硬件环境:CPU:Inter奔腾2.0GHZ以上内存:256MB以上硬盘:20G以上软件环境:Windows2000ServerSP4(含IIS5.1),MicrosoftSQLServer客户端配置硬件环境:CPU:Inter赛扬2.0GHZ以上内存:128MB以上硬盘:1G以上软件环境:Windows2000/NT/XP/2003,IE6.02.3相关技术介绍ASP:全称是Activeserverpages,是微软推出的应用与Web应用程序开发的技术,被描述为“一个服务器的脚本环境,在这里可以生成和运行动态的、交互的、高性能的Web服务应用程序”,他不是一种编程语言,也不是一种开发工具,而是一种强大的技术框架。JavaScript:是一种嵌入在HTML文件中的脚本语言,它是基于对象和事件驱动的,能对诸如鼠标单击、表单输入、页面浏览等用户事件做出反应并进行处理。SQL(StructuredQueryLanguage):结构化查询语言,是关系数据库的标准语言,通过几个命令,就可以实现定义、查询、更新和控制功能。在ASP中对后台数据库进行查询、添加、删除和更新等操作所采用的就是SQL语言。数据查询基本命令是SELECT,SELECT语句用于对数据库进行查询并返回符合查询条件的数据。在查询语句中使用SQL库函数,可以实现在查询的过程中同时对某属性上的值进行统计分析。在ASP中常用的就是表单数据的传输和接收,表单数据的传输有POST与GET两种方法,比较常用的是POST,例如常用表单头部为:窗体顶端这里的method说明了传输数据的方法,当表单提交时可以用<%Request.form(“表单元素名”)%>或<%Request(“表单元素名”)%>来获取数据;若把传输ASP的方法改成GET,那只需要将method改成GET即可,这时除了用上面的两种方法接受数据时,<%Request.QueryString(“表单元素名”)%>也可以接受GET方法传输的数据。POST和GET两者最大的差异在于,POST方法的数据传输较为隐蔽,不会将传输传递的信息显示在浏览的网址后,而GET方法则会将传递的信息显示在浏览的网址后。还较常用的有Session对象,该对象是建立WEB服务器同客户端的联系,并维持这一联系,其实是一个管理会话的对象,不仅可以保持管理会话,而且在此会话中可以为此次会话存储特定用户会话所需的属于自己的个性化信息,当用户在应用程序的Web页面跳转时,Session对象中的所有这些变量不会丢失直到会话过期或被放弃后,但是如果浏览器的Cookie被禁用,将不会发生作用。第三章病历管理系统设计分析3.1病历管理系统概述病历管理系统主要完成患者的信息输入和病历的查看等相关操作,并实现医生对患者信息的快速查看。本设计主要完成了以下三方面的内容,其作用如下:1)系统管理。根据管理员的权限的不同,不同的管理员可以执行不同的任务,病历管理员可以修改病例,而密码管理员只能修改用户的密码,并可以对其个人资料进行修改和操作,进行权限的设置,主要目的是为了是权利分散化。2)患者个人信息管理。医生首先看到的是已存在的且是该医生诊断过的患者信息,并可以查看,也可以进行修改当天的患者信息但是不能删除。医生通过这样的方式确定在以前的诊断中有无该患者,当录入完成后该病人的信息则进入病人信息库以供医生对其进一步的诊断。3)患者病历管理。当患者的个人信息进库后,即可以进行此步的操作,由医生详细填入该病人的病情,并根据病人以前的病史作出自己的判断并保存在服务器数据库,在完成录入后,会自动跳往病历管理首页,并显现出已被自己诊断过的病人。同样,医生在此步骤中不具有删除权限。3.2系统目标分析系统开发的总体任务是实现医疗信息管理的系统化、规范化和自动化,从而达到提高医院对医疗信息管理的效率的目的。3.3开发设计思想医疗信息管理的特点是信息处理量比较大,所管理的数据涉及的历史可能比较悠久,因此在管理上实现起来有一定的困难。在手工管理的时代或者数据库管理系统设计不科学的话就会造成管理数据混乱,数据库相关数据的没有很好的关联,造成数据的不一致性时有发生。在本系统的设计过程中,为了克服以上困难,满足计算机管理的需要,我们采取了下面的一些原则。本系统开发设计思想:●尽量采用医院现有的软硬件环境,及先进的管理系统开发方案,从而达到充分利用医院现有资源,提高系统开发水平和应用效果的目的。●系统应符合医院医疗信息管理的规定,满足对医院日常管理的需要,并达到操作过程中的直观、方便、实用、安全等要求。●系统采用模块化程序设计方法,既便于系统功能的各种组合和修改,又便于未参与开发的技术维护人员补充、维护。3.4系统功能分析系统开发的总体任务是实现医疗信息管理的系统化、规范化、自动化。系统功能分析是在系统开发的总体任务的基础上完成的。医疗信息管理系统需要完成的功能主要有:有关医务人员基本信息的录入。医务人员信息的查询。医务人员信息的修改。医务人员信息的打印。有关病人基本信息的录入。病人信息的查询。病人信息的修改。病人信息的打印。3.5病历管理系统流程图系统主要分为三个子系统:病人管理子系统,医生管理子系统,管理员管理子系统,病历管理流程图如图4-1所示:管理员管理管理员管理恢复病历系统登录首页系统用户系统管理病历管理患者管理密码修改添加用户患者管理患者删除患者添加病历添加病历添加病历管理图3-1病历管理系统流程图第四章数据库设计4.1病历管理系统E-R图 医生(工号,姓名,性别,出生年月,职称,科室,主治科目,电话,邮箱,身份证等)医生医生身份证工号性别职称科室主治科目电话邮箱联系电话姓名病人身份证ha病人身份证ha性别婚否电话出生年月姓名病人编号家庭住址管理员(工号,姓名,密码)管理员密码管理员密码姓名工号病历(序号,科别,姓名,病案编号,日期,主治医生,添加时间,操作等)添加时间添加时间病历日期编号姓名病案编号科别主治医生操作E-R(Eneity-RelationshipApproach)图是最常用的概念模型表示方法,也是数据库的核心和基础,它是按用户的观点来对数据和信息建模,依据概念模型设计应具的特点,真实性、易理解性、易修改性、易转换性。4.2病历管理系统数据库各表详细设计对于病历管理系统,要应用到的数据库表有:Disease患者病历表Manage_user在职人员信息表User患者个人信息表Disease患者病历表详细信息如下:表1患者病历表字段数据类型长度是否允许为空字段描述idInt1否自动编号ID(主键)Usernamenvarchar10否姓名Riqinvarchar50是住院日期Jibingnvarchar50是诊断疾病Chuyuannvarchar10是出院结果zidInt1是住院号bidInt1是病床号zhiliaontext16是治疗经过zhusunvarchar50是主诉xbsntext16是现病史jwsntext16是既往史xthgntext16是系统回顾hunyingnvarchar50是婚姻史tgjcntext16是体格检查fzjcntext16是辅助检查notentext16是其他nuthornvarchar20否医生IDshanchuint1是删除确认列(1为删除)在患者病历表中保存的是在所有在医院中看病的患者患病信息,其中用户编号是用户在病历中的唯一标识,是不重复的,同时用户名在该系统中也是不能重复的,这样在病历比较多的情况下仍然能通过编号迅速的查找到病历信息,并且将编号指定为主健。同时设置了用户名和医生ID不能为空,这是因为这些是病历当中最关键的部分,是病历存在的关键。Shanchu字段名是不会在该系统中显示出来的。表2在职人员信息表字段数据类型长度是否允许为空字段描述IDint4否自动编号(主键)Musernamevarchar50是登录名Mpasswordvarchar50是密码Mrealnamevarchar50是真实姓名Msexvarchar50是性别(1为男性)Mtelvarchar50是联系电话Memailvarchar50是电子邮件Maddressvarchar50是住址Mzipvarchar50是邮编Mpurviewint4是权限在职人员信息表中保存有本医院所有在职员工的基本信息,用户编号设置为主健。在该表中保存的有在职人员的个人基本信息和所拥有的权限。表3患者个人信息表字段数据类型长度是否允许为空字段描述idint4是自动编号(主键)Usernamenvarchar20是用户名Passwordint4否密码cnamenvarchar10是姓名Ageint4是年龄sexint4是性别zhiveNvarchar50是职业Hunyinint4是婚姻MinzuNvarchar5是民族JiguanNvarchar10是籍贯AddressNvarchar50是现住址PhoneNvarchar20是联系电话gupminNvarchar80是过敏史shengfengzhengvarchar50否身份证DisNvarchar50是重要疾病updatetimevarchar8是日期DisNvarchar50是其它authornvarchar20是输入病历的医生编号患者个人信息表是这个系统中的一个很关键的信息数据库表,因为病历的所有信息均是围绕着这张表展开,除了用户编号外,还有很关键的用户的身份证信息是不能为空的,因为用户真实姓名如果相同,只有用身份证确认病历的归属。Author字段名是不会在该系统中显示出来。表4管理员信息表字段名数据类型长度是否允许为空字段描述idInt4否自动编号(主键)DaimaInt4是职位代码shuomingvarchar50是职位说明该表主要说明系统中各登陆人员的级别以及所处的职位。同样设置Id为主健。4.3数据库SQLServer2000的连接根据系统功能的设计要求及功能模块的划分,本系统用SQLServer2000建立数据库,其中包括管理员数据表,病人信息数据表和病人患病情况信息表等数据表。在整个系统开发的过程中,数据库连接是必不可少的,是公用的,可以把这部分单独拿出来,做成一个函数,需要的时候调用这个函数就可以了。在ASP中同数据联系的主要是ADO,对数据库进行操作处理,要让ADO对象能够存取数据库,最重要的东西就是OLEDB驱动程序或ODBC驱动程序,ADO才能够进行存取。本设计采用了ODBC数据库连接方式,首先要建立同数据源的连接,利用了ADO的Connection建立同数据库的联系。建立ADODB.Connection,使用此对象的Open方法打开数据库。其主要代码如下所示:<%DimConnsubDB_Connect(sDBConnect)SetConn=Server.CreateObject("ADODB.Connection")Conn.OpensDBConnectendsub%><%conststrconn="DSN=biling_asp;uid=sa;pwd=;database=biling"%>我们将这段代码单独封装在一个名为config.Asp和_lib.asp的文件中,当某动态网页中需要向数据库读取或者存取数据时,将以下代码<!--#includefile=”lib.asp”--><!--#includefile=”conn.asp”-->包含在该页面的前面,既可以实现与数据库建立连接。第五章系统各模块的介绍按结构化的程序设计思想,在完成了系统分析、系统设计后,就可以进行系统实现阶段了,系统实现是每指把系统的物理模型转换成实际运行系统的全过程。其基本任务是:前期准备系统平台的安装与调试程序的编制与调试信息系统调试数据库与文件的建立系统转换试运行、验收与维护5.1用户登陆前面在数据库表创建时已经创建好了用户信息表,数据库中的m_username和m_password字段用来验证用户身份的,有了这两项就可以较容易的写出验证,用户登陆的程序了,首先看用户登陆的界面,6-1所示;图5-1用户登陆我们将这个页面命名为default.asp,页面中“用户名”和“密码”内容均为必填项目。验证用户身份的程序如下所示。CallDB_Connect(strconn)sql="select*from[Manage_User]wherem_UserName='"&sname&"'Andm_PassWord='"&spwd&"'"‘在表Manage_user中查询用户身份是否存在。Setrs=conn.Execute(sql)’执行这个SQL语句,同时返回一个包含了查询信息的记录集IfNotrs.EOF=TrueThenSession("Name")=rs("m_realName")Session("vip")=rs("m_purview")’读取权限判断值,并保存在session中rs.CloseSetrs=NothingCallDB_DisconnectResponse.Redirect"/bingli/manage.asp"Response.endElsemsg="您输入了错误的用户名或口令!"rs.CloseSetrs=NothingCallDB_DisconnectEndIfIfNotrs.EOF=TrueThen这一句判断用户信息是否存在,EOF和BOF是数据查询记录集的属性,他们分别表示最后一条记录和第一条记录的前面,在最后个纪录前是真的则该用户存在。5.2管理员管理模块在整个系统中,首先要写的是管理员模块,因为负责整个登陆权限的控制,管理员模块包含3个模块,其中有些功能是相辅相成的。5.2.1管理员添加用户涉及到用户的添加,会想到用户信息的验证。当用户以管理员身份登录后,点击“管理员管理”后,管理员即可以查看所有在职人员的信息,如删除和修改密码。如图6-2所示图5-2管理员添加用户界面在本设计中所用的Respone、Request、Sessio以及Server。以上都是ASP内建对象不必经过任何的设置就可以直接使用但除了这些对象以外,例如使用Server.CreateObject("adodb.recordset")对象则必须通过Server对象的CreateObject对象来建立使用。其语法格式为Server.CreateObject("ComponentName")来建立。但是通过这样的创建的对象具有页作用域,也就是说在当前ASP页处理完成后,服务器将破坏这些对象。如果要创建有会话或应用程序作用域的对象,可以使用<Object>标志并设置Session的属性,较常用的方法如下:<%setsession(“ad”)%=Server.CreateObject(“mswc.adrotator”)>需要注意的是不能创建与内建对象同名的对象实例,否则将返回错误。添加用户程序中最主要的是向据库中写入信息,在这里将用到与数据库有关的对象Recordset。在ADO中的Connection、Recordest及Command对象中以Recordest对象最重要是存取数据库中必不可少的部分把表单中的数据插入到数据库中有三种方法:1直接使用SQL语句。其优点是速度快、不消耗资源,缺点是字段较多时不易排错。2使用Recordest对象。其优点是代码容易阅读、容易排错,缺点是消耗系统资源。3先准备好“字段名称数组”及“字段值数组”然后利用AddNew字段名数组字段值数组将数据记录写入数据库。前两种方法在本设计中均被使用,其中第二种方法最直接的反映出数据库插入的数值比较容易排错。在第一种方法中的Values后面的值要一一对应如果该值为空可以不填写但表示分隔的“’”号不能省略。本设计中添加用户的核心程序如下所示:Ifmsg=””thenIfInstr(username,"=")>0orInstr(username,"%")>0orInstr(username,chr(32))>0orInstr(username,"?")>0Instr(username,",")>0Instr(username,chr(34))>0orInstr(username,chr(9))>0orInstr(username,"Instr(username,"$")>0ThenendIfsql="selectcount(*)from[manage_user]where(m_username='"&username&"'orm_email='"&email&"')"’连接数据库setrs=Conn.execute(sql)ifrs(0)>0then‘返回用户名或邮箱相同的记录个数以进行判断endifrs.close’最快的关闭Recordset对象setrs=nothing’将不用的对象进行释放ifmsg=""thenm_email,m_address,m_zip,m_purview)"ororInstr(username,"&")>0Instr(username,"'")>0ororInstr(username,";")>0Instr(username,",")>0oror")>0ormsg="用户名包含非法字符!"endifmsg="用户名或邮箱已存在!"sql="insertinto[manage_user](m_username,m_password,m_realname,m_Sex,m_tel,endif在添加用户的时候对用户名进行了一长窜的判断,用了Vbscript中的Conn.execute(sql)Instr()函数它的作用是返回某字符串在另一字符串中第一次出现的位子。如Instr(username,"%")在该表达式中username代表了接受搜索的字符串表达式“%”代表要搜索的字符串表达式。如果在username中找到了“%”则将会返回“%”的具体位于第几个字符上没有找到则返回0所以这里进行了判断是否大于0来确认用户名中是否包含有字符。其主要目的是判断的哪些字符不能在用户名中存在因为这些符号如果不能被数据库很好的处理数据库则会将有关的东西反馈到用户端危害系统的安全性。所以要避免一些特殊字符的输入。5.3患者管理模块患者管理模块基本功能时录入患者个人基本信息及有无患病史,为医生的近一步判断打下基础。该模块主要有三个部分组成。5.3.1患者基本信息的录入患者基本信息的录入患者在就医过程中,第一步应该是登记自己的个人信息,在这里称为注册。信息的录入对时间的准确性要求很搞,因为如果出现医疗纠纷,那么患者的就诊时间会直接影响到医院是否为该患者在指定的时间中诊断过。因为医院中的电脑属于统一配置,统一管理,不能用自己的电脑登录医院病历系统并且不能自行修改时间,所以所有的时间均是以本机时间作为为患者诊断时间进行登录的直接保存在user表中updatetime中。在医生和病人数量较多时,为了便于快速的区分患者是在哪位医生看病的,以及能只显示该医生的诊断记录,在添加患者个人基本信息时候把用户登录时的seisson<”name”>的值写入患者个人信息user表中的author字段,在管理患者界面中则可以显示该医生已诊断的人数和详细的资料。在医生输入病历时纪录病人所属医生添加患者信息时候,为了保证能迅速和准确的联系到患者本人,其个人基本信息是必须完全填写的,包括身份证信息,住址和电话等等,在这个页面医生可以填写病人的基本资料,如图6-3图5-3患者基本信息录入界面病历添加的代码如下所示:<%CallServer.CreateObject("ADODB.Recordset")sql="select*fromdisease"rs.opensql,conn,1,3rs.addnew’这一行为加入一个记录如果漏掉就会改以前的记录了。rs("username")=usernamers("riqi")=riqirs("jibing")=jibingrs("chuyuan")=chuyuan…………(省略代码)rs.update’将更新写入数据库中rs.close’关闭Recordest对象rsuser.opensqluser,conn,1,3%>looprsuser.closesetrsuser=nothing<%setre=nothing’将不用的对象从内存中释放response.redirect"Manage_dis.asp"endif%>为了保证数据的准确性,在添加患者信息时候先用javascript进行初步判断信息是否填写完和填写是否标准,比如电话、姓名、住址等。在后台用SQL语句保证用户名和身份证没有重复。后台程序如下所示:<%callDB_Connect(strconn)iffounderr=falsethendimsqlReg,rsReg,rssqlReg="select*from[User]whereshenfenzheng='"&shenfenzheng&"'orusername='"&username&"'"setrsReg=server.createobject("adodb.recordset")rsReg.opensqlReg,conn,1,3ifnot(rsReg.bofandrsReg.eof)then�6�8判断数据集中有无记录founderr=trueerrmsg=errmsg&"你注册的身份证已经存在!"elsesql="insertinto[user](username,password,cname,age,sex,zhiye,hunyin,minzu,jiguan,address,phone,guomin,dis,updatetime,note,author)"sql=sql&"values('"&username&"','"&password&"','"&cname&"','"&age&"','"&sex&"','"&zhiye&"','"&hunyin&"','"&minzu&"','"&jiguan&"','"&address&"','"&phone&"','"&guomin&"','"&shenfenzheng&"','"&dis&"','"&updatetime&"','"¬e&"','"&author&"')"Conn.execute(sql)founderr=falseendifrsReg.closesetrsReg=nothingendif%><%callDB_DisConnect%>5.3.2患者管理的删除和修改医生在患者管理页面可以看到经过自己诊断过的患者个人信息或是已经在医生那里登记过的患者信息医生可以查看患者的详细信息。如果该患者有病历的则可以直接转入病历页面部分所实现的主要功能是帮助医生统计当日患病信息以便于医院在药物采购时有依据。在该页面中如果是管理员查看则可以查看所有医生的病人信息若不是则只能查看当前医生添加的用户信息。在患者管理的页面可以看到病人的基本信息比如重要疾病和联系电话其主要目的是方便医生浏览以往的病人资料做到病人的回访如图6-4。图5-4病历的删除、修改界面图5-4病历的删除、修改界面,分页的代码如下。<%constMaxPerPage=20dimstrFileName,rs,sqltext,i,sqldimtotalPut,CurrentPage,TotalPagesstrFileName="manage_dis.asp"ifrequest("page")<>""thencurrentPage=cint(request("page"))elsecurrentPage=1endif%><%ifrs.eofandrs.bofthenelsetotalPut=rs.recordcountresponse.write"目前共有0个注册用户"ifcurrentpage<1thencurrentpage=1endifif(current1)*MaxPerPage>totalputthenendififcurrentPage=1thenshowpagestrFileName,totalput,MaxPerPage,true,true,"个用户"showContentshowpagestrFileName,totalput,MaxPerPage,true,true,"个用户"rs.move(current1)MaxPerPageshowContentshowpagestrFileName,totalput,MaxPerPage,true,true,"个用户"elseendif%>为了提高页面读取速度不能将所有的病历罗列在一页上显示而是将其分if(totalPutmodMaxPerPage)=0thenelsecurrentpage=totalPut\MaxPerPage+1endifcurrentpage=totalPut\MaxPerPageelseif(current1)*MaxPerPage<totalPutthendimbookmarkshowpagestrFileName,totalput,MaxPerPage,true,true,"个用户"bookmark=rs.bookmarkcurrentPage=1showpagestrFileName,totalput,MaxPerPage,true,true,"个用户"endifshowContentshowpagestrFileName,totalput,MaxPerPage,true,true,"个用户"多页显示每页显示一定数目的病历树分页主要有两种方法。1)将数据库中所有符合:查询条件的记录一次性读Recordest中并存放在内存中然后同过ADORecordest象所提供的专门分页处理的属性——PageSize页大小、PageCount页数目、AbsolutePage绝对页来管理分页处理。2)根据客户指示每次分别从符合查询条件的记录中将规定的记录数目显示出来。这里采用的是第一种方法。AbsolutePage属性指示当录数都等于PageSizeBookMark属性指示唯一标识Recordest对象中的当前记录的书签或者将Recordest对象的当前记录设置为有效书签标识的记录若要保存当前记录的书签将Bookmark属性的值分配给一个变量。MaxRecords属性指示由查询由查询返回给Recordet的最大记录数目该属性在Recordet关闭时为读写在Recordet打开是为只读。PageSize属性指示Recordet中一页包含的记录数目默认值为10可以一次查看一定数量的记录。病历的删除由于病历的特殊性所以病历的删除有着严格的权限管理在整个系统中病历的删除和恢复都是由专人负责,如果没有权限操作系统会有无权限的提示,且操作行为会被系统记录。无权限操作的提示信息其代码如下所示。<%Dimsql,id,msg,rs,sqltext,usernamemsg=""id=request("id")Ifsession("vip")<>3thenmsg="你没有删除的权限请与系统管理员联系"elsesql="update[disease]setshanchu=1Whereid="&idConn.execute(sql)msg="记录已被删除该行为已被系统记录。"callDB_DisConnectendif%>病历的删除必然有病历的恢复病例的恢复和删除是不同的人所执行的如CallDB_Connect(strconn)果删除和恢复在一起将在人事管理方面引起严重的后果。在病历查看页面管理员可以选择恢复病历或者是彻底的删除病历。第六章医院病历管理系统的实现按结构化的程序设计思想,在完成了系统分析、系统设计后,就可以进行系统实现阶段了,系统实现是每指把系统的物理模型转换成实际运行系统的全过程。其基本任务是:前期准备系统平台的安装与调试程序的编制与调试信息系统调试数据库与文件的建立系统转换试运行、验收与维护6.1系统源代码1.病人就诊情况表单1)表单构成相关控件和事件:新建一表单,保存在医院病历管理系统下,命名为病人就诊情况表单.scx,修改表单的Caption属性为“病人就诊情况表”;为表单引入病人就诊情况表数据表数据环境,拖放病人就诊情况表数据表字段到表单中,形成一个grd病人就诊情况表;在表单上放置两个命令铵钮组选项铵钮控件,并用它的生成器选项生成10个命令铵钮,分别修改命令铵钮的Caption属性为“第一条记录”、“下一条记录”、“前一条记录”、“最后一条记录”、“添加”、“编辑”、“删除”、“打印”、“查询”、“关闭”。2)表单构成相关源代码:第一条记录代码thisform.grd病人就诊情况表.setfocusgotopmessagebox('记录已经在第一条',0,'记录信息')thisform.refresh前一条记录代码:thisform.grd病人就诊情况表.setfocusifrecno()<>1skip-1thisform.refreshelsemessagebox('记录已经在第一条了',0,'记录信息')endif下一条记录代码:thisform.grd病人就诊情况表.setfocusifnoteof()skipthisform.refreshelsemessagebox('记录已经在未尾了',0,'记录信息')endif最后一条记录代码:thisform.grd病人就诊情况表.setfocusgobottomthisform.refreshmessagebox('记录在未尾了',0,'记录信息')添加铵钮代码:ifmand1.caption='添加'thisform.grd病人就诊情况表.readonly=.mand1.caption='保存'mand2.enabled=.mand3.enabled=.f.appemand1.caption='添加'thisform.grd病人就诊情况表.readonly=.mand2.enabled=.mand3.enabled=.t.endifthisform.grd病人就诊情况表.setfocusthisform.grd病人就诊情况表.refresh编辑铵钮代码:ifmand2.caption='编辑'thisform.grd病人就诊情况表.readonly=.mand2.caption='保存'mand1.enabled=.mand3.enabled=.mand2.caption='编辑'thisform.grd病人就诊情况表.readonly=.mand1.enabled=.mand3.enabled=.t.endifthisform.grd病人就诊情况表.setfocusthisform.grd病人就诊情况表.refresh删除铵钮代码:sele病人就诊情况表thisform.grd病人就诊情况表.setfocusifmessagebox("是否删除当前记录!",32+4+256,"删除记录")=6this.tag=thisform.grd病人就诊情况表.recordsourcedeletenext1packthisform.grd病人就诊情况表.recordsource=this.tagthisform.refreshendif打印铵钮代码:IFsys(102)!="OFF" ELSE=messagebox("打印机没有准备好!",0+48,"警告")ENDIF查询铵钮代码:doform医院病历管理系统\病人就诊情况查询表单.scxthisform.refresh关闭铵钮代码:thisform.release2、病人就诊情况查询表单1)表单构成相关控件和事件新建一表单,保存在医院病历管理系统\病人就诊情况查询表单.scx下,修改表单的caption属性为“病人情况查询表”;为表单引入病人就诊情况表数据表数据环境,拖放病人就诊情况表数据表字段到表单中,形成一个grd病人就诊情况表;在表单上放置一个选项按钮组控件,用它的生成器选项生成两个选项铵钮,修改其caption属性为“按姓名查找”、“按就诊科室查找”;在表单上放置一个标签控件,一个文本框控件,一个命令铵钮组控件生成的两个命令选项铵钮,分别修改其caption属性为“请输入就诊科室或姓名”,“查找”、“结束查找”。2)表单构成相关源代码:查找铵钮源代码:thisform.grd病人就诊情况表.setfocusdocasecasethisform.optiongroup1.value=1locateallforalltrim(病人就诊情况表.姓名)==alltrim(this.parent.parent.text1.value)iffound()y=recno()goymessagebox("病人已经找到!")elsemessagebox("未找到此病人,请确认!")endifcasethisform.optiongroup1.value=2locateallforalltrim(病人就诊情况表.就诊科室)==alltrim(this.parent.parent.text1.value)iffound()y=recno()goymessagebox("病人已经找到!")elsemessagebox("未找到此病人,请确认!")endifendcase结束查找铵钮代码:Thisform.release3、医务人员基本情况表1)表单构成相关事件和控件:新建一表单,保存在医院病历管理系统下,命名为医务人员基本情况表.scx,修改表单的Caption属性为“医务人员基本情况表”;为表单引入医务人员基本情况表数据表数据环境,拖放医务人员基本情况表数据表字段到表单中,形成一个grd医务人员基本情况表;在表单上放置两个命令铵钮组选项铵钮控件,并用它的生成器选项生成10个命令铵钮,分别修改命令铵钮的Caption属性为“第一条记录”、“下一条记录”、“前一条记录”、“最后一条记录”、“添加”、“编辑”、“删除”、“打印”、“查询”、“关闭”。2)表单构成相关源代码:第一条记录代码:thisform.grd医务人员基本情况表.setfocusgotopmessagebox('记录已经在第一条',0,'记录信息')thisform.refresh前一条记录代码:thisform.grd医务人员基本情况表.setfocusifrecno()<>1skip-1thisform.refreshelsemessagebox('记录已经在第一条了',0,'记录信息')endif下一条记录代码:thisform.grd医务人员基本情况表.setfocusifnoteof()skipthisform.refreshelsemessagebox('记录已经在未尾了',0,'记录信息')endif最后一条记录代码:thisform.grd医务人员基本情况表.setfocusgobottomthisform.refreshmessagebox('记录在未尾了',0,'记录信息')添加按钮代码:ifmand1.caption='添加'thisform.grd医务人员基本情况表.readonly=.mand1.caption='保存'mand2.enabled=.mand3.enabled=.f.appemand1.caption='添加'thisform.grd医务人员基本情况表.readonly=.mand2.enabled=.mand3.enabled=.t.endifthisform.grd医务人员基本情况表.setfocusthisform.grd医务人员基本情况表.refresh编辑铵钮代码:ifmand2.caption='编辑'thisform.grd医务人员基本情况表.readonly=.mand2.caption='保存'mand1.enabled=.mand3.enabled=.mand2.caption='编辑'thisform.grd医务人员基本情况表.readonly=.mand1.enabled=.mand3.enabled=.t.endifthisform.grd医务人员基本情况表.setfocusthisform.grd医务人员基本情况表.refresh删除铵钮代码:sele医务人员基本情况表thisform.grd医务人员基本情况表.setfocusifmessagebox("是否删除当前记录!",32+4+256,"删除记录")=6this.tag=thisform.grd医务人员基本情况表.recordsourcedeletenext1packthisform.grd医务人员基本情况表.recordsource=this.tagthisform.refreshendif删除铵钮代码:IFsys(102)!="OFF"ELSE=messagebox("打印机没有准备好!",0+48,"警告")ENDIF打印铵钮代码:IFsys(102)!="OFF" ELSE=messagebox("打印机没有准备好!",0+48,"警告")ENDIF查询铵钮代码:doform医院病历管理系统\医务人员查询表单.scxThisform.refresh关闭铵钮代码:thisform.release4、医务人员查询表单1)表单构成相关控件和事件新建一表单,保存在医院病历管理系统\医务人员查询表单.scx下,修改表单的caption属性为“医务人员查询表单”;为表单引入医务人员基本情况表数据表数据环境,拖放医务人员基本情况表数据表字段到表单中,形成一个grd医务人员基本情况表;在表单上放置一个选项按钮组控件,用它的生成器选项生成两个选项铵钮,修改其caption属性为“按姓名查找”、“按工号查找”;在表单上放置一个标签控件,一个文本框控件,一个命令铵钮组控件生成的两个命令选项铵钮,分别修改其caption属性为“请输入工号或姓名”,“查找”、“结束查找”。2)表单构成相关源代码:查找铵钮源代码:thisform.grd医务人员基本情况表.setfocusdocasecasethisform.optiongroup1.value=1locateallforalltrim(医务人员基本情况表.姓名)==alltrim(this.parent.parent.text1.value)iffound()y=recno()goymessagebox("医务人员已经找到!")elsemessagebox("未找到此医务人员,请确认!")endifcasethisform.optiongroup1.value=2locateallforalltrim(医务人员基本情况表.工号)==alltrim(this.parent.parent.text1.value)iffound()y=recno()goymessagebox("医务人员已经找到!")elsemessagebox("未找到此医务人员,请确认!")endifendcase结束查找铵钮代码:thisform.release5、系统主表单1)表单构成相关事件和控件:新建一表单,保存在医院病历管理系统\系统主表单.scx下,修改表单的caption属性为“医院病历管理系统”;在表单上放置一个标签控件,3个命令铵钮控件,分别修改其caption属性为“医务人员管理”、“病人管理”、“关闭”。2)表单构成相关源代码:医务人员管理系统铵钮代码:setpathto医院病历管理系统doform医务人员基本情况表单.scx病人管理铵钮代码:setpathto医院病历管理系统doform病人就诊情况表单.scx关闭铵钮代码:thisform.release()6、密码表单1)表单构成相关控件和事件:新建一表单,保存在医院病历管理系统\密码表单.scx下,修改表单的caption属性为“用户权限验证窗口”;为表单引入密码表数据表作为数据环境,在表单上放置两个标签控件,修改其Caption属性为“用户

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论