




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于三层C/S的药品管理系统的设计与实现PAGE64基于三层C/S的药品管理系统的设计与实现目录摘要第1章绪论 11.1医院信息系统概述及特点 11.2课题的研究背景和意义 11.3国内外情况和发展趋势 31.4本文主要工作 4第2章关键技术分析 52.1PB开发三层分布式C/S系统 52.1.1分布式PowerBuilder结构 52.1.2PowerBui1der三层分布式C/S体系的基本构架 72.2本系统中三层C/S结构的应用 92.2.1三层体系结构运行机制 92.2.2三层C/S结构在本系统中的优势 102.2.3三层C/S结构在药品管理系统中的应用 122.3SQLServer2000简介 132.4统一建模语言UML 132.4.1UML产生的技术背景 132.4.2UML的主要思想 152.4.3标准建模语言UML 17第3章系统需求和功能分析 203.1系统需求分析 203.2系统组织结构分析 203.2.1HIS组织分析 203.2.2药品管理系统组织分析 213.3系统实现的功能 213.4医院药品管理业务流程 22第4章医院药品管理系统功能设计 234.1药库管理系统设计 244.2门诊药房管理系统设计 244.2.1功能设计 244.2.2功能实现 254.3住院药房管理系统设计 274.3.1功能设计 274.3.2功能实现 27第5章系统数据库设计 295.1数据库设计原则 295.2SQLServer2000关系数据库的约束 295.3药品管理部分数据表格的设计 315.4系统数据分析 325.4.1数据流程分析 325.4.2数据存储分析 325.5数据窗口技术在系统实现中的使用 335.5.1数据窗口介绍 335.5.2数据窗口的构造和使用 34第6章医院信息系统中药品管理系统的具体实现 366.1药库系统菜单功能介绍 366.2系统主要功能模块的实现 376.2.1系统维护功能的实现 376.2.2药品入库功能的实现 406.2.3药品出库功能的实现 456.2.4药品调整功能的实现 466.2.5数据查询功能的实现 476.2.6报表统计功能的实现 486.2.7药品批量调价功能实现 49第七章数据库性能优化和系统安全管理 507.1数据库性能优化 507.1.1数据库备份 507.1.2数据备份设备 547.1.3海量数据查询优化 557.2本系统的安全管理 567.2.1操作系统的安全维护 577.2.2数据的安全管理 587.2.3网络的安全管理 597.2.4系统管理制度的健全 60第八章结论与展望 618.1结论 618.2展望 62文献 64摘要医院信息系统(HospitalInformationSystem,简称HIS)是计算机技术、通信技术和管理科学在医院信息管理中的应用,是计算机技术对医院管理、临床医学、医院信息管理长期影响、渗透以及相互结合的产物。对于一个应用系统首先要考虑软件的体系结构模式,它对于应用系统的成本、性能、灵活性、安全、维护等各方面都有着决定性的影响。随着系统的大型化、复杂化,传统的“主机/终端”模式或两层c/s模式已不能满足人们的要求,于是就产生了新的分布式应用系统:三层结构系统在建设医院信息平台的过程中,药品管理部分的设计和实现是尤为重要的一环。药品管理部分主要包括药库管理,门诊药房管理和住院药房管理三大部分,通过对功能模块的操作实现药品、制剂的入库、出库、调价、盘点、退货、退库、报废、单据审核,统计核算等功能。该部分确保了全院药品的正常使用,以及药品信息在整个医院信息系统中的顺利流通。本文首先介绍了医院信息系统的相关背景和国内外现状,分析和结合行业特点,得出了系统体系结构和开发环境。本系统采用C/S(客户机/服务器)体系结构,PowerBuilder:作为开发工具,SQLserve:2000为后台数据库。药品流通是患者就诊和医院日常工作中重要的一环,系统采用了自顶向下逐层分解的结构化分析方法,从郑州大学第一附属医院日常业务和对软件系统需求出发结合药房、药库工作的特点确定了系统的功能模块和各模块的具体实现.在此基础上,本文还详细介绍了医院信息系统中药品管理部分的功能和作用,并着重分析了该部分中各个子系统间的相互关系和各自特点,由浅入深的给出了药库管理子系统、门诊药房管理子系统、住院药房管理子系统的设计方案,设计包括系统功能设计和数据库表格的设计。考虑到用户需求和实际情况,并结合设计方案,子系统的实现具有多样性,本文对于每一个子系统的相关功能都给予了重点说明和示例。关键词:药品管理;药库;医院信息系统;三层结构第1章绪论1.1医院信息系统概述及特点医院信息系统(HIS)是电子学领域中医学信息学(MedicalInformatics)的重要分支。HIS利用电子计算机和网络通信设备,以患者就医流程为线索,实现患者从挂号、们诊、药局取药到入院登记、医生诊断、护士护理等全面的计算机管理,为医院及其所属部门提供医疗信息、财务核算分析、行政管理信息和决策分析以及统计信息的收集、存储、处理、提取和通讯,并满足所有授权用户对信息的各种功能需求[1]。从整体上划分,医院信息系统一般包括临床诊疗管理、药品管理、经济管理、综合管理和统计等部分。从功能上划分,HIS可以划分为门诊管理系统、住院管理系统、药品管理系统、物理诊断系统、财务管理系统、医生系统、行政管理系统、网上医院及中心数据库几个部分。从技术讲HIS具有四大优势:HIS能基本实现全院信息的彻底数字化,改变传统的依靠文件、胶片、等发送信息的传递方式、实现无纸化办公、无胶片化办公,达到管理费用降低,甚至机构的减员增效;加快信息流通速度,有利于医院决策层及时、准确的把握医院的营运状况和发展趋势,及时调整经营策略,合理制定医院的发展计划:HIS可以借助于IC卡这一先进的工具,实现挂号、电子货币等功能,并可与医保结合,实现真正的“一卡通”[2];HIS的软件设计采用先进合理的体系结构,其优点如下:界面友好,易于管理和维护;开发率高、周期短;开放性好,Irtranet/1nternet完全兼容;拓展性好,根据医院发展需要,可对系统随时进行扩展,将来也极易成为社会医疗系统的一部分。由于医院信息系统(HIS)是一个信息综合系统,既包括业务信息又涵盖办公信息,所以它具有以下几个特点:(1)信息系统具有多重性、实时性、多任务等特点。(2)医院办公部门之间即具有相关性又具有独立性。(3)医院办公部门和业务部门紧密相连。(4)具有相当数量的数据共享。(5)数据具有一定的实时性,数据更新频繁。1.2课题的研究背景和意义郑州大学第一附属医院于2001年8月投入使用医院信息管理系统(HIS)后,在网络结构上采用的是C/S结构,HIS系统在最初几年运转良好。但是随着医院信息化的快速发展,医院的网络规模在不断扩大,终端也在不断的增加,现在数量已经超过了600台,原先工作在C/S结构下HIS系统已显得力不从心。作为医院的关键部门—药剂科也受到了较大的影响。我国医院的信息处理基本上还停留在手工方式,劳动强度大且工作效率低,医师护士和管理人员的大量时间都消耗在事务性工作上,致使“人不能尽其才”;病人排队等候时间长,辗转过程多,影响医院的秩序;病案、临床检验、病理检查等许多宝贵的数据资料的检索十分费事甚至难以实现;对这些资料深入的统计分析手工方式无法进行,不能充分为医学科研利用;在经济管理上也因而存在漏、跑、错等现象;医院物资管理由于信息不准确,家底不明,积压浪费,以致“物不能尽其用”。开发HIS是解决上述问题的有效途径。HIS系统的有效运行,将提高医院各项工作的效率和质量,促进医学科研、教学,减轻各类事务性工作的劳动强度,使他们腾出更多的精力和时间来服务于病人,改善经营管理,堵塞漏洞,保证病人和医院的经济利益为医院创造经济效益。完整的HIS系统实现了信息的全过程追踪和动态管理,从而做到简化患者的诊疗过程,优化就诊环境,改变目前排队多、等候时间长、秩序混乱的局面。如目前多数医院就诊必须经过挂号、等候病历、划价、收费、取药或治疗一系列过程,一个患者少则排3次队,多则5、6次,用于过程性的时间最少在1个小时以上,若实施HIS以后,每个病人用于诊疗的中间过程性时间会大幅度减少;假定一家医院门诊人次为2000人次/天,年门诊250天,每人少花费半小时,则日节约1000小时,一年节约36万小时,其产生的社会效益和间接经济效益是明显的。同时HIS的实施也强化了医院内部管理,降低了医护人员的工作强度和时间,伪、冒、漏现象可以解决,也加速了资金周转和减少药品、器械等物资积压。据估计如果全国有2000家医院应用HIS,每年每所医院增收节支、加速资金回笼和周转、堵漏、减少物资积压的回收资金方面的效益按20万元估计的话(实际比这高),则年效益估计为40亿元,十分可观。但这往往不被人所认识。当然建立HIS更主要的还在于它对医院管理、医疗质量和医学研究的长期效应带来的综合效益[3-5].药品是防病治病的特殊商品,是医院重要的经济收入来源,是医疗活动中必不可少的基础物资,兼具物资和医疗双重属性,是医院医疗和经济活动中的重要组成部分,在医院的运营成本中占有很大比重。药房、药库是医院药品供应基地,是加强医院药品管理的重要环节之一。由于药品种类繁多,流通环节繁杂,强化对药库管理尤为重要,它既要保障对临床各科室的供应.又要控制药品品种、数量、质量,防止过期失效,减少浪费,达到增收节支的目的。对药房、药库实行计算机管理,可使药房、药库的工作人员可及时了解库房药品进、出、存的动态变化,既做到为临床及时提供所需药品不使药品供应中断,又有效减少盲目进货造成药品积压现象,药品的信息化管理不仅可加快药品周转,而且可大大提高工作人员的工作效率和管理质量,也更加有利于及时、安全、优质地的保证临床用药。因此医院管理者历来都十分重视药品信息管理的开发应用。1.3国内外情况和发展趋势电子计算机在医院的应用已有三十多年的历史,60年代初,美国便开始了HIS的研究。著名的麻省总医院<MGH>开发的COSTAR系统是60年代初开始并发展到今天成为大规模的临床病人信息系统。随着计算机技术的发展,70年代,HIS进入大发展时期,美、日、欧各国的医院,特别是大学医院及医学中心纷纷开发HIS,成为医药信息学的形成和发展的基础。70-80年代,美国的HIS产业已有很大发展。1985年美国全国医院数据处理工作调查表明,100张床位以上的医院,80%实现了计算机财务收费管理,70%的医院可支持病人挂号登记和行政事务管理。25%的医院有了较完整的HIS,即实现了病房医护人员直接用计算机处理医嘱和查询实验室的检验结果。10%的医院(2530)有全面计算机管理的HIS。日本的HIS开发和应用从70年代初开始。多数日本医院是80年代以后开始进行HIS工作的,但发展十分迅猛,规模相当大,是以大型机为中心的医院计算机系统[6]。如北里大学医院的IBM/3090双机系统。当前日本的HIS总的趋势是系统化、网络化、综合性,开始走自上而下的开发路线,一般都有大型机作为中心、支撑整个系统工作,并尽量采用微机和网络技术,投资规模大,正在实现“。ordering”工作方式,即数据从发生源直接输入计算机。到1991年统计有近10家实现或基本实现此种方式。支持诊疗的功能在不断加强,系统24小时运行。不少软件是医院和计算机公司联合开发的,一些大公司也开发了一些通用的医院信息管理软件包,也有些医院自己开发。如北里大学,开发了综合的HIS,开发费用(机器设备除外)为3亿4千万日元(约合人民币1300万元)。日常运行费用支出为一年5亿1千万日元(约合人民币2000多万元)。欧洲的HIS发展比美国稍晚,大多数是70年代中期和80年代开始。欧洲HIS的特点是实现了一些区域信息系统。如丹麦的RedSystem,管理76所医院和诊所。法国第八医疗保健中心实现了能管理三所大医院和三所医药学院的一体化信息系统-GrenobleIntegratedHIS。随着初级卫生保健工作的发展,欧洲各国区域性医院计算机网络将实现。目前欧共体的SHINE工程<StrategicHealthInformaticsNetworkforEurope>已经开始,英法意德许多公司都参与了此项工程。在分布式数据库系统和开放网工程方面己做了大量工作[7]。计算机70年代末期就进入了我国医疗行业,当时以IBM的M340小型机为主只有少数几家大型的部属综合医院和教学医院拥有,主要应用于科研和教学,还没有应用于HIS的管理。80年代初期,随着苹果PC机的出现和BASIC语言的普及,一些医院开始开发一些小型的管理软件,如工资软件等;80年代中期,随着XT286的出现和国产化,以及DBASEⅢ和UNIX网络操作系统的出现,一些医院开始建立小型的局域网络,并开发出基于部门管理的小型网络管理系统,如住院管理,药房管理等。进入90年代,NOVELL网和FOXBASE、FOXPRO数据库日益盛行,完整的医院网络管理系统的实现已经成为可能,于是一些有计算机技术力量的医院开始开发适合自己医院的医院管理系统。进入21世纪,特别是2003年SARS灾难过后,我国的医疗卫生系统开始真正意识到医院信息系统的重要性,并开始着手进行系统的深入研究和推广应用。国家主管部门也给予了医院前所未有的引导和支持[8,9]。当今的中小型医院,一般还没有全面采用信息技术来进行管理,其录入、核算和分析等工序依然繁琐复杂主要依靠人力,没有充分发挥计算机速度快、处理效率高和能及时进行数据传输的特点。流通领域中的医院录入数据大副增加,核算指标与过去的系统也相去甚远。在先进的、现代化的经营管理体制上建立一套高效的计算机辅助经营管理系统势在必行。1.4本文主要工作医院信息系统(HIS)是一个融计算机技术、医院信息管理、组织行为和运作方式于一体的综合性、先进性科学体系。本次课题的任务就是设计并开发出一套完整有效的医院信息系统。本文在基于医院信息系统的整体设计和实际开发之上对其下属的药品管理部分中的药库管理系统、门诊药房管理系统、住院药房管理系统做出了详细的阐述并给出一套完整的设计方案(包括系统功能设计和数据库表格设计),成功地将该方案应用到实际系统的开发中,建立了物理药库、药房、采购中心、药库财务及药品核算的网络体系,实现信息资源共享。集中存储药品管理的大量的明细信息,便于查询及统计。第2章关键技术分析2.1PB开发三层分布式C/S系统2.1.1分布式PowerBuilder结构所谓分布PowerBuilder的实现就是在客户端远程地初始化一个在服务器端的用户自定义对象,并且调用这一对象的属性和函数。下面是分布式PowerBuilder结构图:图2-1分布式PowerBuilder结构从上图我们可以看出,分布式应用主要由数据库服务器、应用服务器(远程对象、服务器接口)和客户端程序(远程对象代理、客户端接口、用户界面)组成,下面分别介绍各部份。数据库服务器:数据库服务器的主要工作是进行数据的管理工作,包括数据库、数据存储过程、触发器等等其它数据库对象。目前流行的数据库服务器管理系统主要有ORACLE,MSSQLSERVER,SYBASESQLSERVER等大中型数据库,以及SYBASEANYWHERE,DBF,BTRIEVE等小型及桌面型数据库[10-14]。服务器应用(中间层应用):在以往PowerBuilder版本中,PowerBuilder应用是作为客户机/服务器体系结构中的客户端应用提交的,在分布式PowerBuilder中引入了服务器应用这个概念。这个应用包括了不可视的用户对象,并被客户端应用调用,这些用户对象被称作远程对象,这种调用可以是跨进程或跨硬件平台的。分布PowerBuilder在服务器端有一个PowerScript对象Transport来监听客户端对过程调用的需求,而这个服务器端的应用也可以同一般传统的客户机/服务器应用的客户端或远程的客户端应用一样来调用另外的PowerBuilder服务器应用。远程对象:与其他的不可视用户对象类同。一个远程对象包含了用Powerscript编写的商业逻辑,放在服务器端,作为不可视用户对象的特例,远程对象可以引用各种不可视的函数和数据库的指令,如使用DataWindow的不可视形式DataStore来实现对数据库访问的封装等。远程对象像是一个过程或函数的调用,并支持参数传递和返回结果,支持除对象数据类型以外的其他所有类型。传输对象:是服务器端用以接收客户请求的特殊连接对象。当使createtransport命令创建一个传输实例后,该对象以对象的属性中所定义的议监听接收客户的请求。这个对象的属性包括通讯驱动名称、通讯协类型、超时协议等,得到和设定这些属性的方法同PowerBui1der的其他象如transaction等一样。客户应用:PowerBuilder客户应用是用以调用远端对象的部分。分布PowerBuilder应用包括了一个新的对象,称Connection,用以连PowerBuilder服务器应用。当同服务器建立连接后,客户应用将像调用本的不可视用户对象一样调用远程对象。连接对象:是客户端发送请求的客户端的对象。当使用createtransport创建一个连接对象时,本对象的ConnectToServer函数执行服务器的连接,通讯方式如通讯名称、协议等由连接对象的属性来决定。远程对象代理:实际上就是远程对象的一个定义,客户端程序通过此代理来正确的对应用服务器发送请求并正确的接收返回结果。即客户端程序过远程对象代理来获知应用服务器上所提供的服务的类型,从而正确使用用服务器。它运行在客户端,在客户端似乎不存在,对客户是透明的。编程时就当它不存在,这是由系统生成的用于访问远程对象所用,一般只括:类的属性、方法的接口等,不含方法的实现,与远程对象一一对应。用户界面:主要存在于客户端程序中,主要是用于与用户的交互。客户端程序通过用户界面接收用户的请求,执行相应的操作,然后将结果通过用户界面以一定方式展示给用户。2.1.2PowerBui1der三层分布式C/S体系的基本构架1.非可视化用户对象在三层分布式C/S体系中的应用PowerBuilder是利用面向对象编程的方式来设计应用程序。在面向对象程序设计当中,有三个比较重要的特性:继承(Inheritance)、封装(Encapsulation)与多型多型即多态,自己可以查一下(Polymorphism)。在传统的两层C/S体系当中,许多的商业规则被分散到客户端,造成程序在维护上面的困难。所以在三层C/S体系当中将这一些商业运算规则另外独立出来,并且将这一些逻辑运算规则经过整理之后,将性质相同的商业运算规则封装在同一个对象当中。而PowerBuilder的非可视化类用户对象(CCUO)正是扮演着封装各种商业运算规则的重要角色,我们利用CCUO的用户对象建立放置在主机应用程序的远程对象[15]。多型即多态,自己可以查一下2.代理对象(ProxyObject)的应用基本上利用CCUO建立的封装对象只是放置在应用程序主机上面,客户端的程序并没有这样的对象。这样,客户端的程序将如何知道主机应用程序上面有哪些封装对象的函数可以使用呢?为解决客户端程序不认得主机端应用程序封装对象内函数的困扰,就从主机端的CCUO对象衍生出来一种代理对象(ProxyObject)放置在每一个客户端。这个对象当中存在与主机应用程序端的CCUO对象一样的函数定义(包括函数名称,传回数值,传递参数),但是却不包括函数内的程序代码。3.三层分布式C/S体系的数据处理方式在三层C/S体系当中,因为每一个客户端程序不再直接连接数据库,所以不能够直接将数据窗口对象放置在客户端程序[16]。这时我们必须把数据窗口对象统一放置在应用程序主机上面(因为只有主机应用程序与数据库做连接),然后再由主机应用程序将数据窗口的数据传递到客户端如图2-2.图2-2三层的数据处理方式在三层C/S体系当中,通常会在主机应用程序中建立一个数据存储(DataStore)后,将数据窗口对象所读取的数据放置在数据存储当中,最后再将整个数据存储的数据传递到客户端的程序,而放置在客户端的数据窗口控件当中[17]。下面是PowerBuilder提供的用来做数据传递的函数:GetFullState():将数据窗口或数据存储完整的状态(包括数据窗口的定义和读取的数据)保存到blob当中。一般格式:数据窗口控件.GetFullstate(REFblob)。SetFullstate():将保存完整数据窗口(或数据存储)状态的blob重新指定给其它的数据窗口(或数据存储)。一般格式:数据窗口控件.SetFullstate(REFblob)。GetChanges():将数据窗口或数据存储变动的状态(包含变动的数据和数据状态)保存到blob当中。一般格式:数据窗口控件.GetChanges(REFblob)。SetChanges():将保存更改数据状态的blob重新指定给其它的数据窗口(或数据存储)。一般格式:数据窗口控件.SetChanges(REFblob)。2.1.3PowerBui1der与数据库的连接PowerBuilder提供了与底层数据库系统紧密的连接。PowerBuilder支持不同的关系数据库管理系统并充分发挥每一个数据库的特长。开发人员利用内置的高性能数据库引擎一SYBASESQLAnywhere生成独立或脱离服务器运行的服务应用,在开发该药品管理系统时,就是使用该种数据库引擎。PowerBuilder存取数据库的方式有两种:(1)通过使用PowerSoft的DBMS接口。(ODBC<开放数据库连接>是微软公司的数据库连接标准)(2)通过使用由PowerBuilder提供的专用的直接与数据库相连的接口。值得一提的是PowerBuilder拥有数据窗口对象(DATAWINDOW)。它是一个智能对象是POWERSOFT公司的一项专利技术。它能操纵关系数据库的数据而无需编写SQL语言。利用该对象可以修改、更新、插入、删除、滚页、打印或以N种文件格式中的任何一种方式保留数据。数据窗口直接管理数据库的交互与控制。在本系统开发过程中大多数报表均使用此对象生成,使用其操纵关系数据库的数据十分方便、快捷。它是一个支持数据操纵的封装性很好对象[18,19]。PowerBuilder与数据库的连接可以通过各自专有的接口进行连接,各自的连接情况如图2.3所示:图2-3PowerBuilder与数据库的连接2.2本系统中三层C/S结构的应用2.2.1三层体系结构运行机制三层结构,顾名思义它是将数据处理过程分为三部分:第一层是客户(用户界面),提供用户与系统的友好访问,即用户服务层,和传统的应用序没有什么区别(除了业务逻辑的减少);第二层是应用服务器:主要用大批量事务处理、事务支持、大型配置、信息传递和网络通信。在这一把复杂的业务关系细分为多项功能单一的服务,每项服务都执行一项特任务,这些服务可以用相对独立的服务组件来实现其功能。通过分布这组件,可以平衡数据处理负载,协调逻辑关系,调整业务规模和业务规则。这一层可以部署在网络的任何地方,即业务服务层或称为事务逻辑层;三层是数据服务器,负责数据信息的存储、访问及其优化,即数据服务。在这种体系结构下,传统的表现层和数据层的业务逻辑,都将集中到业务层管理。这样增加了客户端应用程序的通用性、独立性,也避免了数层臃肿的存储过程和触发器。另外,也减少了软件配置和版本更新的困难。只需要配置和更新业务层就够了,大大降低了客户端的负担,因此也为瘦客户(ThinClient)结构。以下为用户服务层,业务服务层以及数据服务层之间的通讯运行过程。1、用户提交数据存取请求,客户端创建组件实例,启动业务处理,发送数据存取请求到业务服务层。2、业务服务层启动数据请求过程,对用户服务层的请求进行相应处理后直接发送SQL请求到数据服务层,执行数据存取操作。3、数据服务层接收业务服务层的SQL请求,DBMS执行SQL语句,SQL语句执行完成后,将结果(读取数据等操作)或状态(修改,删除数据等操作)返送到业务服务层。4、业务服务层接收到数据服务层返回的结果,对此结果或状态进行相应的处理后或者直接返回到用户服务层,完成数据请求过程。5、用户服务层接收到业务服务层返回的结果或状态,进行相应的处理或判断,显示到用户界面,完成数据库存取请求。通过前面的介绍我们知道三层体结构的解决方案是:对用户服务层,业务服务层,数据服务层三层进行明确分割,并在逻辑上使其相互独立。原来的数据层作为数据库管理系统已经独立出来,所以,关键是要将用户服务层和业务服务层分离成各自独立的程序,并且还要使这两层间的接口简洁明了。三层体系结构不需要客户端有很强的处理能力,原有的低性能的PC在新系统中仍然能够得到很好的利用,避免了重复投资,降低了应用成本。三层结构中的三层,只是逻辑上的概念。具体实现时,物理结构上的差异可能会很大。三层可以在一台计算机上,也可以在两台、三台,甚至更多的计算机上,只要它们在体系上遵循三层C/S结构即可。系统从一台扩展为两台、三台甚至更多计算机时,对应用没有任何修改。2.2.2三层C/S结构在本系统中的优势三层结构的软件体系结构是如今药品管理系统开发中被大家应用的很广的一种系统架构设计方法,其层间低藕合、层内高内聚的特点使得系统的可扩展性、易维护性都大大提高。由于药品管理系统日益增长的整体复杂度和其自身的特殊性,造成了系统开发过程中各个环节的复杂度和开发成本都在增加,从数据分析、业务分析、流程分析到系统建模,其间都充满了不确定性。三层架构的应用对于有效控制开发成本和提高开发成功率都有着重要的作用。原系统与本系统的结构在性能上的比较如表2-1所示。表2-1两层C/S结构和三层C/S结构的性能比较比较内容两层C/S结构三层C/S结构开发平台与开发平台无关与开发平台有关界面界面不统一界面统一开发逻辑关系复杂结构清晰,开发较为简单扩展扩展难,基本上是重新开发扩展方便,甚至只需要对个别组件更改安全性不安全,对数据直接操作安全,通过调用应用层组件间接访问数据网络通信时时连接数据库,对网络资源占用严重只有需要时,经过应用层访问数据库,网络资源占用率低可操作性由于逻辑结构复杂,操作不方便逻辑结构清晰,分工明确,操作简单从比较归纳得出三层C/S结构具有以下优点:1、安全性加强。应用程序服务器把客户与数据库服务器分开了,客户端不能直接访问数据库服务器。应用程序服务器可控制哪些数据被改变和被访问,以及数据更改和访问方式。另外,对应用和数据的存储权限可以分层进行设定,这样,即使外部的入侵者突破了客户端的安全防线,若在应用服务器和数据库服务器中备有另外的安全机构,系统也可以阻止入侵者进入其他部分。2、效率提高。三层C/S结构中,客户端和应用服务之间的链接实际上只是一些简单的通信协议,而和数据库服务器打交道所需要的设置或驱动程序,均由应用服务来承担,这既减轻了客户端的负担,也降低了数据库服务器的链接代价,使数据库服务器专心于数据服务而不是频繁地和客户端的应用程序交流。各层的逻辑关系清晰明了,真正做到了“瘦客户”[20-22]。3、易于维护。由于应用逻辑被封装到了应用程序服务器中,因此,当应用逻辑发生变化时,仅需修改应用程序服务器中的程序,客户端的应用程序不必更新,维护的代价大大降低。4、可伸缩性。三层结构是进行明确分割的,逻辑上各自独立,并且能单独实现。由于它们是逻辑划分的,与物理位置不一定相对应,因此它们的硬件系统构成是很灵活的,各部分可以选择与其处理负荷和处理特性相适应的硬件。三层既可以在一台计算机上,也可以在两台甚至更多的计算机上,只要它们在体系上遵循三层C/S结构就可以了。5、可共享性。单个应用程序服务器可以为处于不同位置的客户应用程序提供服务,即应用系统只写一次就可以用于各个环境。6、开放性。由于应用程序服务器的每个组件都有标准的接口,用户可以重写自己的客户端程序和自己的浏览器程序。2.2.3三层C/S结构在药品管理系统中的应用本药品管理系统各成员之间数据交换量很大,对安全性要求高,同时系统要求数据库开放性要好,医疗改革的迫切性也要求在短期内开发出稳定可靠、符合要求的系统。根据以上分析,三层结构的C/S模式在本系统的结构形式如图2-4所示。图2-4三层结构的C/S模式应用结构图表示层:也称为客户端,为最终用户提供操作界面,实现与用户的交互,以丰富、多样、形象的形式表现系统信息。而最终的客户是制定的GUI用户,这类用户对信息的表现形式有比较高的要求,交互式操作比较繁琐,他们所使用的用户界面是定制开发的,操作请求直接由应用层的业务逻辑组件响应。应用层:也称中间层,主要包括医院业务逻辑、外部系统接口等。该层以组件的形式分布于网络中的多台计算机中,通过负载均衡机制,为表示层提供有效、安全的服务。在这一层也包括了数据库ADO组件。数据层:以数据库系统为主体,实现各类业务数据存贮、计算、析取、事务联机分析等,为应用层的数据访问提供服务。2.3SQLServer2000简介SQLServer2000是建立在SQLServer7.0在可伸缩性、可用性、可管理性和数据仓库成功的基础上开发的。在高性能和企业级可伸缩性领域,SQLServer2000设计成利用WindowS2000对更多处理器、更大的系统内存的支持,最终达到支持64位硬件平台。在不断提升可用性的努力过程中,SQLServer2000采用WindowS2000四路群集,提供了大大改进的群集支持。SQLServer2000在可管理性和易用性方面在行业内领先[23-25]。而且,SQLServer2000还包含对现有管理工具和实用程序的重大改进,并引入更具自我调节和自我管理的引擎功能。通过与OLAP服务、数据转换服务、存储库和英文查询的紧密结合,SQLServer2000代表了行业内最全面的数据仓库和决策支持平台。特别重要的是,SQLServer2000关系引擎增加了实质化的视图,改善了在特大型数据库环境中执行复杂查询的性能。同时,SQLServer2000引入了新的数据挖掘功能,可自动发现在大量数据之间隐藏的关系并可基于历史数据做出预测。这些数据挖掘功能将要实施,以向最终用户隐藏这种尖端技术的复杂性,并允许开发人员将第三方的数据挖掘产品轻松集成进客户的应用程序中。SQLServer2000按照设计可以为部署和维护强大的、易于管理的性能。2.4统一建模语言UML2.4.1UML概述软件工程领域在1995年至1997年取得了前所未有的进展,其成果超过软件工程领域过去十五年的成就总和。其中最重要的、具有划时代重大意义的成果之一就是统一建模语言(UML:UnifiedModelingLanguage)的出现。目前,UML已经成为面向对象技术领域内占主导地位的标准建模语言[26]。统一建模语言UML是为软件系统的制品进行详述(Specifying)、形象化(visualizing)、构建(constructing)、文档化(documenting)的一种语言。对于商业模块和其他非软件系统,UML规范是一个能够成功提供大而复杂模板的工程实现的集合。UML是一种标准的图形化建模语言,它是面向对象分析与设计的一种标准表示。UML不是一种可视化的程序设计语言,而是一种可视化的建模语言;UML不是工具或者是知识库的规格说明,而是一种语言规格说明,是一种表示的标准;UML不是过程和方法,但是允许任何一种过程和方法使用它[27]。它溶入了软件工程领域的新思想、新方法和新技术。它的作用域不限于支持面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程。公认的面向对象建模语言出现于70年代中期。从1989年到1994年,其数量从不到十种增加到了五十多种[28]。到90年代中,一批新方法出现了,其中最引人注目的是Booch1993、OOSE和OMT-2等。但促使UML出现的最终原因有:(1)面对众多的建模语言,用户由于没有能力区别不同语言之间的差别,因此很难找到一种比较适合其应用特点的语言;(2)虽然不同的建模语言大多类同,但仍存在某些细微的差别,极大地妨碍了用户之间的交流。因此在客观上,极有必要在精心比较不同的建模语言优缺点及总结面向对象技术应用实践的基础上,组织联合设计小组,根据应用需求,取其精华,去其糟粕,求同存异,统一建模语言。1994年10月,GradyBooch和JimRumbaugh开始致力于这一工作。他们首先将Booch93和OMT-2统一起来,并于1995年10月发布了第一个公开版本,称之为统一方法UM0.8(UnitizedMethod)。1995年秋,OOSE的创始人IvarJacobson加盟到这一工作。经过Booch、Rumbuagh和Jacobson三人的共同努力,于1996年6月和10月分别发布了两个新的版本,即UML0.9和UML0.91,并将UM重新命名为UML(unifiedModelingLanguage)。1996年,成立了UML成员协会,以完善、加强和促进UML的定义工作。这一机构对UML1.0(1997年1月)及UML1.1(1997年11月17日)的定义和发布起了重要的促进作用。OMG(ObjectManagementGroup)于1997年11月正式采纳UML1.1作为建模语言规范,然后成立任务组进行不断的修订,并产生了UML1.2、1.3和1.4版本,其中UML1.3是较为重要的修订版。目前已对UML进行了重大修订,并于2003年6月正式通过了UML2.0。UML2.0的推出是为了帮助简化模型驱动的开发,其中增强了语义部分,可帮助模型更好地生成代码。此外,UML.20还包括增强的组件处理、对商业过程模型的支持,并更好地支持元数据交换,这一切的目的在于使UML成为一种胜过大多数文本语言的高层次语言,能直接生成代码和进行逆向工程,甚至直接生成某些可执行的UML模型。2.4.2UML的内容客观世界是一个复杂的系统,需要从不同的角度来考察,才能真正理解这个系统。为了能支持从不同角度来考察系统,标准建模语言UML定义了下列5类、共9种模型图:第一类是用例图,从用户角度描述系统功能,并指出各功能的操作者[29]。第二类是静态图(Staticdiagram),包括类图、对象图和包图。其中类图描述系统中类的静态结构。不仅定义系统中的类,表示类之间的联系如关联、依赖、聚合等,也包括类的内部结构(类的属性和操作)。类图描述的是一种静态关系,在系统的整个生命周期都是有效的。对象图是类图的实例,几乎使用与类图完全相同的标识。它们的不同点在于对象图显示类的多个对象实例,而不是实际的类。一个对象图是类图的一个实例。由于对象存在生命周期,因此对象图只能在系统的某一时段存在。包由包或类组成,表示包与包之间的关系。包图可描述系统的分层结构。第三类是行为图(Behaviordiagram),描述系统的动态模型和组成对象间的交互关系。其中状态图描述类的对象所有可能的状态以及事件发生时状态的转移条件。通常,状态图是对类图的补充。在实用上并不需要为所有的类画状态图,仅为那些有多个状态其行为受外界环境的影响并且发生改变的类画状态图。而活动图描述满足用例要求所要进行的活动以及活动间的约束关系,有利于识别并行活动。第四类是交互图(Interactivediagram),描述对象间的交互关系。其中顺序图显示对象之间的动态合作关系,它强调对象之间消息发送的顺序,同时显示对象之间的交互;合作图描述对象间的协作关系,合作图同顺序图相似,显示对象间的动态合作关系。除显示信息交换外,合作图还显示对象以及它们之间的关系。如果强调时间和顺序,则使用顺序图;如果强调上下级关系,则选择合作图。这两种图合称为交互图。第五类是实现图(Implementationdiagram)。其中构件图描述代码部件的物理结构及各部件之间的依赖关系。一个部件可能是一个资源代码部件、一个二进制部件或一个可执行部件。它包含逻辑类或实现类的有关信息。部件图有助于分析和理解部件之间的相互影响程度。配置图定义系统中软硬件的物理体系结构。它可以显示实际的计算机和设备(用节点表示)以及它们之间的连接关系,也可显示连接的类型及部件之间的依赖性。在节点内部,放置可执行部件和对象以显示节点与可执行软件单元的对应关系。从应用的角度看,当采用面向对象技术设计系统时,首先是描述需求;其次根据需求建立系统的静态模型,以构造系统的结构;第三步是描述系统的行为。其中在第一步与第二步中所建立的模型都是静态的,包括用例图、类图(包含包)、对象图、组件图和配置图等五个图形,是标准建模语言UML的静态建模机制。其中第三步中所建立的模型或者可以执行,或者表示执行时的时序状态或交互关系。它包括状态图、活动图、顺序图和合作图等四个图形,是标准建模语言UML的动态建模机制。因此,标准建模语言UML的主要内容也可以归纳为静态建模机制和动态建模机制两大类。2.4.3UML的应用领域UML在各个行业都得到了广泛的应用,并迅速成为了一个事实上的工业标准,它成为人们用来为各种系统建模、描述系统架构、商业架构和商业过程的统一工具。UML之所以得到普及的主要原因不外乎以下几点:①UML是国际统一的标准,用它表示的产品符合国际标准,产品能够得到广泛的认可。②作为国际标准,国际软件业和商业对UML的支持也相当普遍,因而采用它将可以得到最广泛的技术支持和工具支持。③UML采用图的形式来表述系统的视图,图形化易于理解的优势使得不同知识背景的客户用户、领域专家、系统分析以及开发人员可以方便的交流。④UML是一种标准的表示方法,任何方或者过程都可以采用UML,它与具体的方法和过程无关,具有通用性。⑤UML具有良好的可扩展性,可适用到不同的领域,在具有通用性的同时还具有使自身专用化的能力。⑥UML与最好的软件实践经验集成,其自身虽然没有表述任何方法或过程,但是却要求使用它的过程具有以下的特征:以架构为中心、用例驱动、支持迭代和递增地开发。这些特征体现了软件开发的成功经验。⑦UML对软件设计和分析实践中涌现出来的新思想和新方法提供了很好的支持,它支持模式、框架和组件等概念,提供从“概念模型到当前代码”的可跟踪性。第3章系统需求和功能分析3.1系统需求分析医院原来使用的是传统的二层的C/S模式,系统分为客户端和服务器端部分,这种结构带来了“胖客户端”现象及随之而来的管理、维护困难等缺点,工作内容繁琐、工作量大,容易出现差错;不能及时的对药品的流动进行管理,并且不能为会计核算、管理决策等提供精确的有价值的统计数据。老式的管理己不能满足现在的形式,计算机管理的适时出现有效的缓解了这一矛盾。特别是在大型医院的管理中,计算机管理己显示出它的及时高效性,使其在激烈的竞争中把握更多的机遇,争取更多的利润[30,31]。对软件的需求是具有基本的浏览功能(能提供用户浏览所需的信息)、查询功能(可以根据输入条件查询与其相关的记录)、插入功能(实现新记录插入)、修改功能(对错误记录进行更正)和删除功能。对于用户界面,采用人机交互方式,多功能窗口运行。正常使用时不应出错,当用户的输入错误时应给出适当的更正提示。若运行时遇到不可恢复的系统错误,也必须保证数据库完好无损。系统要求具有严密的安全体系,以相应的权限来管理不同的用户,登录时使用相应的用户名和密码,严格控制对数据和程序的访问和修改,以保证数据的不必要删除和篡改。能够根据采购、出库和调价准确地处理药品的账目。同时由于严格的计算机管理,排除了人为的浪费问题。药品进货查询,药品销货查询,贵重药品查询等,以图表的形式给出药品在一定时期内的进出情况。3.2系统组织结构分析3.2.1HIS组织分析HIS涉及医院的方方面面,涵盖病人来院就诊的各个环节。各部分之间的信息联系错综复杂,它们各自的功能也是相互依存[32]。郑州大学第一附属医院有着完善的组织结构,每一个组织结构都有其必要的职能,药品管理在整个医院的信息管理系统中扮演着不可缺少的角色。主要组织结构如图3-1所示:图3-1HIS系统组织结构3.2.2药品管理系统组织分析药品的管理主要是在药房管理系统和药库管理系统间进行的,这里统称为药品管理系统。药库管理分为西药库、中药库,药房管理分为:门诊药房管理系统、住院药房管理系统。系统组织结构如图3-2所示:图3-2药品管理系统组织结构3.3系统实现的功能药品管理系统主要涉及药库和各类药房(药房分门诊中、西药房和住院病区住院药房)之间药品的进、销、存等业务,并且和门诊计价、收费等有着密切的关系。药库和药房之间虽有联系,但又相互独立,药品管理系统主要管理医院所有药品的出入和内部统计计算,为药品会计提供基础数据,同时包括对所有药品有效期的管理。药品管理系统应具备以下功能:(1)实时动态数据处理,对全院药房提供动态的药品数据。(2)网络数据共享,药品管理系统并入医院网络系统后,使药品管理系统与其他相关系统进行数据共享。(3)对药品的有效期实施了真正行之有效的报警管理和报废管理。(4)优化管理,可以使药品库存得到最优化的管理,使库存损耗降低到最小程度,实现库存自动报警。(5)丰富的查询功能输出,可以及时得到有关药品的大量信息。(6)一条龙管理,从最初的采购入库到发药到药房到卖给病人,实现自动监控调价等处理。3.4医院药品管理业务流程医院本着为患者服务的精神,就诊环节中以患者方便为前提,在医院管理系统的设计中也充分体现了以病人为中心的意图,各功能子模块之间良好的衔接,为患者提供了方便、快捷的就诊环境。药品管理是医院管理系统不可分割的一部分,涉及就诊的很多环节,药品管理系统在HIS系统中的所处的重要地位在图3-3中体现:图3-3药品管理系统在HIS中的位置图
第4章医院药品管理系统功能设计医院信息系统中的药品管理部分主要包括药库管理,门诊药房管理和住院药房管理三大部分,通过对功能模块的操作实现药品、制剂的入库,出库,调价,盘点,退药,退库,报损,单据审核,查询与统计等功能;药品管理系统与住院系统,门诊系统互联,做到全院共享药品代码,并定期对药品、制剂进行综合作价处理,实现全院药品价格的中央控制。药品管理功能设计示意图如下:图4-1药品管理系统功能设计示意图药品管理部分负责全院药品的进出以及使用等情况,该部分要确保药品信息在整个HIS体系中的流通顺畅,因此,设计时要更多地从整体上来把握该部分。4.1药库管理系统设计药库管理子系统主要用于中、西药库药品管理,建立全院共享的药品字典、目录;药品入库,药品出库,药房退药,药品退库,药品计划等,单据查询、药品信息查询,统计报表等。该部分与药房管理子系统以及医院中涉及到药品进出的各个科室紧密联系。设计时,要兼顾到全院药品信息的统一,以及药品数据的完整性。药库系统包括3种用户,分别是药库保管员、药库财务人员和系统管理员。药库系统还承担着与药房之间的通信,主要是接受药房的领药单并在确认后返还给药房。下面为药库部分需求分析用例图:图4-2药库部分需求分析用例图4.2门诊药房管理系统设计4.2.1功能设计门诊药房管理子系统主要用于门诊中西药房药品管理,主要包括药品领药管理,药品发药管理,药品盘点管理,窗口配药管理,药品损耗管理,处方统计分析等。该子系统功能设计如下:(1)系统维护:提供用户密码修改,以及系统管理员管理用户和设置用户角色等功能。提供药房系统的基本编码维护。(2)门诊处方取药:实现药房发药,病人退药等功能。(3)病区处方取药:主要实现病区领药、出院带药、病区退药。(4)药品管理:包括药品调拨请求、药品报损、药品退还药库、接受药品调拨、药品借药录入。(4)药品查询:可以对药房管理的基本操作按指定条件查询,并可对药品销售以及处方进行查询,统计医生所开处方量。(5)统计报表:按指定需求生成药品相关的当班取药报表、药房日取药报表、药品出入库报表、病区用药金额统计报表、药品申请调拨计划单等并在数据库中生成相应数据的汇总记录。(6)系统工具:主要提供整个系统的各菜单功能及操作说明的联机帮助。4.2.2功能实现药房药品入库:当药房通过库存报警辅助功能或使用库存查询功能发现某种药品的库存量小,希望进行入库操作时,使用请领入库功能的新建单据部分,手工录入请领入库单,并通过计算机网络传递给药库管理系统。当药库接收到药房请领,并依据药库库存情况形成出库单后,药房可以通过计算机网络在领药确认功能中找到相应的出库单信息,并通过该功能进行确认,一旦确认入库后,将不能再进行更改操作。并且药房药库的库存将发生改变。药房药品出库:处方确认是药房最主要的工作,处方分门诊处方和住院处方,门诊处方用于门诊药品管理系统的发药确认,因我院采用的是后台人员按后台计算机自动打印处方取药、前台人员叫名核对发药的模式,门诊药品管理系统处方分后台计算机取药模快和前台计算机核对发药模块,处方在系统中显示,只有核对发药后才减库存;住院处方为根据不同住院医嘱产生的各种药品单,分为统领单、口服长期摆药单、临时药品单、退药单、首次摆药单、基数药单、出院处方单、毒麻药品单等,前两者分别指长期医嘱的非口服药和口服药。病区、医技科室、手术室等提交的各类药品单在住院药房可于系统的处方确认模块中显示,药房按处方号或药品单号确认发药,确认后自动减库存。对于已经确认发药的药品单,用户也可以进行查询。以查询待发药处方为例,说明一下三层C/S结构在药品管理系统中的应用。其对应类图如图4-3所示,对应的序列图如图4.4所示。在图4.3中,发药窗口类属于表示层的客户端窗口类,负责提供操作界面,用以显示相关信息、执行发药操作等;发药窗口类因为需要访问待发药处方数据而关联到待发药处方表类;待发药处方表类的对象中包含由处方类对象组成的数组,用以保存查询结果;“待发药处方”类中的“查询发药处方”方法使用“待发药处方查询”类中的方法访问数据库。图4-3查询待发药处方类图图4-4查询待发药处方序列图从图4-3、图4-4可以看出,表示层的发药窗口对象调用业务实体层的待发药处方表对象的查询待发药处方函数;在查询待发药处方函数中,调用数据访问层的待发药处方查询对象的执行查询函数;在发摆药处方查询对象的执行查询函数中,根据对象的存储过程私有属性调用对应的数据库储存过程,并将查询结果转化为处方数组返回。4.3住院药房管理系统设计4.3.1功能设计住院药房管理子系统主要用于病区药房药品管理,药品出入库管理,领药管理,药品库存与盘点管理,接收病区传来的药品医嘱、并进行摆药管理(生成摆药单,支持按日期、病区、药品类别、医嘱类别等多种摆药方式),药品费用信息自动传送到住院收费子系统,自动扣除住院押金,还可进行药品消耗管理,医嘱处方用药统计分析等。该子系统功能设计如下:(1)系统维护:提供用户密码修改,以及系统管理员管理用户以及设置角色等功能。(2)药房管理:包括申请药品、进药计划、药品入库、药品退库、药品调拨、药品盘点、药品报损、库存报警、有效期报警。(3)病区管理:主要实现病区领药、出院带药、病区退药。(4)查询统计:包括库存查询、入库查询、退库查询、调拨查询、损耗查询、病区领药查询、病区退药查询、药品申请查询、患者领药查询、患者押金查询。(5)财务报表:按指定需求生成药品相关的日报、月报、年报以及任意时间段中的药品报表,并在数据库中生成相应数据的汇总记录。(6)系统维护:提供药库系统的基本编码维护。(7)系统帮助:主要提供整个系统的各菜单功能及操作说明的联机帮助。4.3.2功能实现通过对医院的实际调查分析,理顺了医院药房药库工作的业务流程和具体内容。根据药房药库的工作特点和具体的工作需求,将药房药库管理系统的业务流程分析如下:(l)日常工作中,当药房药品发生短缺时,药房一般要通过请领入库功能向药库申请领药,并将申请领药药品品种和数量等信息通过计算机网络传送到药库,药库根据库存情况确定向药房发放药品的品种和数量等信息,药房查收药品后,使用领药确认功能对收到药品进行入库确认,计入药房库存数量,使能在窗口发放。(2)当从医院内部其他药房或科室调入药品时,查收药品后手工录入药品品种和数量等信息使用调入确认功能确认入库,计入药房库存数量,使能在窗口发放。(3)由于某些原因需要将药房的部分药品退返药库时,药房先向药库提出退药申请,当药库通过退药功能模块手工录入退药单后,药房通过退药确认模块可以获得相关退药信息,并且把退药信息与现实生活中退还给药库的信息进行核对,核对无误后进行退药确认。确认后库存信息发生改变,增加药库的库存,冲减药房的库存。确认以后,本次退药的药品数量,收款处不能再用于计价收费。(4)当从药房往其他药房或科室调拨药品时,使用调出功能录入调出药品信息。(5)当库存盘点发现实际库存与帐面库存不符,允许做盘盈和盈亏处理时,使用盘盈或盘亏功能将药品盘盈或盈亏信息录入计算机,增加或冲减药房库存。(6)当药房的药品发生损坏需做报废处理时,使用报废功能,冲减药房库存。(7)当由于其他特殊原因引起药房药品库存数量发生变化(例如借、还)时,使用其他入库或其他出库功能进行其他入出库处理,从而增加或冲减药房库存。(8)所有药品的入库、出库、盈亏、报废数据等都由计算机记帐,平时可以查询各种记帐单据和药品库存,定期打印各种帐页和统计报表。可以通过库存查询功能来确定药品是否需要请领入库,并且可以使用库存报警功能列出药房中当前库存数量小于预先设置的库存警戒数量的药品信息,起到警示作用。可以将列出的报警信息打印输出来。可以使用药品变质查询功能,对变质药品或将变质药品提高警惕,作出相应的处理。药品的进货、储存、销售主要是在药库和药房之间发生的,之间涉及多种出入库形式为了能更直观的理解,将其以图表的形式表达。药房药品的出入库业务流程如图4-5所示:图4-5住院药房药品出入库流程第5章系统数据库设计5.1数据库设计原则数据库的设计是指数据库中各个表结构的设计,包括信息保存在哪些表格中、各个表的结构如何及各个表之间的关系。数据库设计是信息系统开发的关键,不同的设计方案将影响数据的访问方式及编程效率,数据库设计要遵循以下原则[33-36]:(1)一致性原则:对数据进行系统、统一的分析与设计,协调好各数据源,做到“数出一门”、“算法统一”、“度量一致”,保证系统数据的一致性和有效性。(2)完整性原则:数据库的完整性是指数据的正确性和相容性。要防止合法用户使用数据库时向数据库加入不合语义的数据。对输入到数据库中的数据要有审核和约束机制。(3)安全性原则:数据库的安全性是指保户数据,防止非法用户使用数据库或合法用户非法使用数据库造成数据泄露、更改或破坏,要有认证和授权机制。(4)可伸缩性原则:数据库结构的设计应充分考虑发展的需要、移植的需要、具有良好的扩展性、伸缩性和适度冗余。(5)规范化原则:数据库的设计应遵循规范化理论,规范化程度过低的关系,可能会存在插入、删除异常、修改复杂、数据冗余等问题,解决的方法就是对关系模式进行分解或合并(规范化),转换成高级范式。5.2SQLServer2000关系数据库的约束在数据库管理系统中,建立和使用约束的目的是确保数据的完整性,约束是SQLSeverer强制实行的应用规则[37-38]。它能够限制用户存放到表中数据的格式和可能值,约束作为数据库定义的一部分在CREATETABEL语句中声明,所以又称作声明完整性约束。约束独立于表结构,可以在不改变表结构情况下,通过ALTERTABLE语句来添加或者删除。在删除一个表时,该表所带的所有约束定义也随之被删除。在SQLSeverer中约束主要包括以下几种:(1)PRIMARYKEY:主键约束(2)FOREIGNKEY:外键约束(3)UNIQUE:惟一约束(4)CHECK:检查约束(5)DEFAUL:DEFAULT约束PRIMARYKEY(主键)约束:主键约束用来强制数据的实体完整性,它是在表中定义一个主键来唯一标识表中的每行记录。主键约束有如下特点:每个表中只能有一个主键,主键可以是一列,也可以是多列的组合;主键值必须唯一并且不能为空,对于多列组合的主键,某列值可以重复,但列的组合值必须唯一。FOREIGNKEY(外健)约束:外键是指一个表中的一列或列组合,它虽不是该表的主键,但却是另一个表的主键。通过外键约束可以为相关联的两个表建立联系,实现数据的引用完整性,维护两表之间数据的一致性关系。UNIQUE(惟一)约束:唯一约束用来强制数据的实体完整性,它主要用来限制表的非主键列中不允许输入重复值。唯一约束有如下特点:一个表中可以定义多个唯一约束;每个唯一约束可以定义到一列上,也可以定义到多列上;空值可以出现在某列中一次。CHECK(检查)约束:检查约束用来强制数据的域完整性,它使用逻辑表达式来限制表中的列可以接受哪些数据值。DEFAULT(默认)约束:默认约束用来强制数据的域完整性,它为表中某列建立一个默认值,当用户插入记录时,如果没有为该列提供输入值,则系统会自动将默认值赋给该列。默认值可以是常量、内置函数或表达式。使用默认约束可以提高输入记录的速度。5.3药品管理部分数据表格的设计按照上文提出的数据库设计原则,医院药品管理系统的数据表设计严格遵守了关系数据库表的约束以及规范化设计等要求,尽可能的采用了三范式标准。限于篇幅原因,药品管理部分只给出以下一个数据表的设计:表5-1药品存储信息表(Drug_base_info)字段中文名称字段名属性说明药品代码Drug_codechar药品名的唯一标识药品名称Drug_namechar药品的标准名称药品规格Drug_specchar药品的含量信息单位Unitschar对应剂型及规格的最小单位如片支等剂型Drug_formchar如针剂、片剂等毒理分类Toxi_propritychar如普通、毒麻、精神等最小剂量单位Dose_per_unitdouble每一最小不可分的包装单位剂量单位Dose_unitschar剂量的单位如ml、mg等生产日期Drug_product_dateint失效日期Drug_fail_dateint库存量Storageint药库或药房现有的药品数量批发价Wholesale_pricedouble零售价Retail_pricedouble有效期报警天数Available_limitint药品存储信息表用于记录全院各个药房(包括涉及到药品流通的部门)药品储备的相关基本信息.表5-2药品库存表Drug_storage_profile字段中文名称字段名属性说明库房Storagechar库房代码药品代码Drug_codechar由药品字典定义的代码规格Drug_specchar由药品字典定义的规格单位Unitschar对应剂型及规格常规包装数量Amount_pre_packageint使用规范名称常规包装单位Package_unitschar计量单位字典高位水平Upper_evelint库存水平限制,达到该限制时停止采购低位水平Low_levelint库存水平限制,低于该限制时开始采购库房存放Sub_storageint该药品对应的库存管理单位内的存放5.4系统数据分析5.4.1数据流程分析数据流程图是一种能全面地描述信息系统逻辑模型的主要工具,它可以用少数几种符号综合地反映出信息在系统中的流动、处理和存储情况。数据流程图具有抽象性和概括性。通过调研绘制出系统的数据流程图,系统数据流程图如下:图5-1管理系统数据流程图5.4.2数据存储分析系统设计的开始,首先考虑的是如何用数据模型把现实世界的实体和其间的各种关系抽象出来。目前广泛使用的数据模型可分为两种类型,一种是独立于计算机系统的“概念数据模型”,如“实体联系模型(EntityRelationship,E-R)”;另一种是直接面向数据库逻辑结构的“结构数据模型”。在本系统中采用“实体联系模型”(E-R模型)来描述数据库的结构与语义,以对现实世界进行第一次抽象。E-R模型直接从现实世界抽象出实体类型及实体间联系,然后用E-R图来表示数据模型。它有两个明显的优点:接近于人的思维,容易理解;与计算机无关,用户容易接受。但E-R模型只能说明实体间语义的联系,不能进一步说明详细的数据结构,它只是数据库设计的第一步,药品管理系统的E-R图如图所示:图5-2药品管理系统E-R图5.5窗口界面设计为了充分满足用户对界面的需求,我们为软件设计了友好的界面,统一的风格更为用户的使用此软件更加自然、方便。下面将具体说明界面设计的特点。本系统统一使用的界面风格包括作业对象确定区(select区)、作业对象编辑区(edit区)和控制区(control区)。作业对象确定区,又称Select区,该区用于确定本次作业对象,一般是通过输入或选择作业对象的关键字来确定作业对象。关键字应允许直接输入和选择两种方式并存。本区活动时,允许输入选择作业对象,作业对象编辑区应处于休眠状态,即不允许输入数据或输入数据无效。作业对象编辑区(edit区)用于编辑作业对象。Select区选择确定一个工作对象后,select区休眠(不再允许数据改动),edit区活动,工作人员在该区进行数据编辑等工作。工作完成后,使用控制区”保存”按钮,将edit区休眠,select区重新活动。控制区,又称control区,该区提供各种按钮,控制程序运行,一般的,程序应提供如下标准按钮,另根据需要可以增加其他按钮。在系统色彩方面,程序(不含图形查询程序),均以灰色(Gray)作底色,文字使用黑色(Black)显示。此色彩搭配可以尽可能减轻操作员长期在计算机前工作时眼睛疲劳状况。Graphics图形程序,以图形反映数据情况,目的在于观察数据时直观、方便,此类程序以灰色作底色,图形使用鲜艳色彩,突出直观效果。此外,窗口、数据窗口以及各种控件都继承超类,以保证其统一性。数据窗口既是数据库操作工具,又是界面的重要组成部分。数据窗口PowerBuilder提供给开发人员的快速建立应用程序的强有力的工具,也是PowerBuilder与其他面向对象的数据库应用前端开发工具的最主要区别。它以自动化的用户/数据库接口为开发人员最大限度的节省了时间和精力,但这种自动化并不限制开发人员的主观能动性,开发者能够以独具特色的方式灵活运用数据窗口。数据窗口包括两方面的内容:数据窗口对象和数据窗口控件。数据窗口对象主要用于展示数据并允许用户增删改数据,数据窗口控件则把数据窗口对象放置到窗口上并呈现在用户面前。药品管理部分的各个子系统实现大量的使用到数据窗口技术,通过数据窗口,药品信息管理系统完成数据库中药品信息的表格数据的显示和变更。在需要显示数据库数据源的窗口中可以方便的定制各种数据窗口对象显示风格来满足不同用户需求,从而进行数据行的增加、删除和更改:此外,在不需要显示数据库中数据的时候,还可以利用数据窗口对象和数据存储对象,在应用程序中实现对数据的检索、删除和更改等操作。一个数据窗口对象可以封装复杂的SQL语句,因此使程序的编写更加方便和容易。
第6章医院信息系统中药品管理系统的具体实现药品管理部分的实现主要包括药库管理子系统、门诊药房管理子系统、住院药房管理子系统的实现。这三个管理子系统既为独立完整的子系统又相互关联相互影响,从而确保药品信息在全院各个部门的顺利通信。本文以西药库管理系统为例详细讲述药品管理系统的实现。6.1药库系统菜单功能介绍菜单项关联系统的各个子功能,是每个功能模块的接口。菜单项示意图如下所示:图6-1西药库管理系统菜单示意图①系统维护:有药典设置,淘汰药典设置,淘汰药典信息查询,药品价格修改等等。用于登陆用户修改密码,系统管理员可以通过该项对用户信息进行修改、删除、添加,以及为每一个用户重新分配角色。②药品入库:有药品库存录入,核对入库单据,核对单据查询、药品退还厂家药品借出退还,药品入库同时填写药品的相应基本信息。③药品出库:有药房药品调拨单录入,其它部门调拨单录入、药房药品调拨等,办理药品从库房开出到医院各个药房。④药品调整:有药品信息修改,药品信息修改记录查询等等,办理药品在医院各个部门间的调整。⑤数据查询:有药品说明录入,药品供货单位名片、单位库存查询、效期药品查询等等,提供各种有关药品的相关查询。⑥报表统计:有药品入库统计表,药品出库统计表,药品领取出库汇总表、药品调价记录、金额汇总帐表等,统计所有有关药品出入的信息。⑦批量调价:对大批的药品进行统一调价。6.2系统主要功能模块的实现6.2.1系统维护功能的实现1、系统权限设置系统登录主要用于对登录药房药库管理系统的用户进行安全性检查,以防止非法用户登录该系统。根据给用户分配的权限,登录用户可以根据自己所具有的权限操作系统中相应的功能。在登录系统时,要求用户输入密码进行身份验证,并且只允许进行三次密码输入尝试,如果三次都输入错误,则关闭登录窗口,不允许用户登录。该部分中,系统管理员可以为系统添加、删除、修改用户信息,并可通过双击某一用户信息为用户添加不同的角色信息,用户可以拥有同一系统下的一个或多个角色。图为是药剂科操作员权限设置,操作员可以对图中复选框中的多个选项进行修改。图6-2用户操作权限示意图2、药典设置设置入库药品的所有信息,包括药品名,药品编码、最小单位规格、药理作用、进价、零售价、生产厂商等等。其中注意事项为:药品的通用(化学)名称、类别、剂型不能为空。编写药品名称时药品名称采用国家统一的药品化学名称,在化学名称下编写不同厂家生产的商品名。系统涉及到许多需要输入药品的地方,为了简化药品的输入,必须给每种药品编码,本文将编码分为三部分,第一部分为药品名称拼音码,即药品名称的每个汉语拼音的每一个字母;第二部分为分类码,即可以根据使用的实际情况分类,例如以剂型分类,用法分类。以上两部分编码可能会存在重复,为了确保编码的唯一性可以在以上编码的基础上加第三部分为识别码,识别码可用阿拉伯数字。以下为药品编码设置界面:图6-3药品编码设置示意图3、药品最低库存设置药库库存查询除了可以按指定条件进行查询外,还可以逐项或统一编辑每种药品的库存上下限,从而控制药品的库存数量在一定范围之内。以下是药品最低库存设置窗口:图6-4药品最低库存设置示意图6.2.2药品入库功能的实现药库对于医院中药品存放的单位,可以将其分解成不同的库房,例如中药库西药库等;每个药库均使用自己独立的单据系列(单据号的设置可以在库房配置中设置)。其主要作用是对外向药品厂家或药品供应商购药;对内向其他药库药房及科室发放药品,并对其所有的出入库统计计帐。正常入库:作为药库正入库是指采购入库,曾予入库,科室退库三种方式的药品入库方式。正常入库药库从供货商获得药品的主要业务,是医院药品的仓库。调拨入库:调拨入库要是指药库与药房之间的药品出入库。入库上帐:对所有的入库帐单据进行上药品入库的相关的操作。本文拿西药库为例简单介绍一下入库:该模块包括药品库存录入、核对入库单句、核对单句查询、药品退回厂家、药品借出退还五个功能。选择入库类别,打开正常入库窗口按空格或回车就可录入“入库方”字段,可通过提示栏信息按数字键或选择上下键进行选择。入库日期,根据入库的时间进行设置,系统默认的是当前的系统时间。空格或鼠标左键单击按钮调出药品名称输入法按拼音词头录入。系统接受到新的药品名称之后,将在多个药品规格中作出选择。如果该药品只有一种规格,且只有一个厂家,则系统默认该规格,否则将出现一个规格厂家的选择窗口让用户选择,其中药品库存录入窗口如图所示:图6-5药品库存录入示意图之后用户需要手工输入药品的批号及药品的有效期。系统接受到药品名称、规格、厂家信息后,将查看药品的库存,如果药品的库存中没有该药品的信息,将提示库存没有该药品的记录,此次操作不能完成,用户可以按ESC键取消或修改输入的信息,或者按放弃按钮放弃该单据录入的所有信息。当所有录入的信息完成并且没有错误是可以按保存按钮保存该单据。增加按钮是对于刚保存过一张入库单据又想再开一张新的入库单据时,不用再次打开正常入库窗口就可以直接录入下一张单据。保存,如果保存成功的话,入库单据就保存到了服务器上。放弃,是取消本次单据的录入不保存。退出,则退出本窗口。注意:操作过程中如果要取消某条信息的录入直接按ESC即可取消,对于药品信息的录入如
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 专题3.1 导数的概念及其意义、导数的运算(原卷版)-2024年高考数学一轮复习精讲精练宝典(新高考专用)
- 2020-2021深圳华南中英文学校小学三年级数学下期末一模试卷及答案
- 《跨境电子商务基础》高职全套教学课件
- 内墙脚手架施工方案
- 历史与社会人教版九年级第三单元第二课第一框《欧洲战争策源地的形成》教学设计
- 江西省景德镇市2025届中考考前最后一卷生物试卷含解析
- 安徽省宣城市培训校2025届中考生物模拟预测题含解析
- 农场员工合同范例
- 供电施工合同范例
- 企业产权房出租合同范例
- 2024年支气管哮喘临床诊疗指南:课件精讲
- 模具费支付合同模板
- 餐饮部总监述职报告
- 辽宁省沈阳市第七中学2024-2025学年九年级上学期期中英语试题
- 小学金融普及
- 2024电力建设工程绿色建造评价规范
- 安宁疗护课件
- 中小学-珍爱生命拒绝毒品-课件
- 价值观考核评定表
- 振动筛施工技术方案
- 急救药品课件教学课件
评论
0/150
提交评论