中医电子病历系统的设计与实现

中医电子病历系统的设计与实现

ID:32223942

大小:2.50 MB

页数:130页

时间:2019-02-01

上传者:U-10915
中医电子病历系统的设计与实现_第1页
中医电子病历系统的设计与实现_第2页
中医电子病历系统的设计与实现_第3页
中医电子病历系统的设计与实现_第4页
中医电子病历系统的设计与实现_第5页
资源描述:

《中医电子病历系统的设计与实现》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

摘要developmentofmedicalinformation.Promotetheapplicationofelectronicmedicalrecordshasbecomeaninevitabletrend,andhasbroadprospectsfordevelopment.Electronicmedicalrecordssystemisthecoreofhospitalinformation.InChina,thedevelopmentandapplicationofelectronicmedicalrecordshasbeentenyears.Inthisdecade,theresearchandpromotionofelectronicmedicalrecordsintheprocessaccumulatedalotofvaluableexperienceindomestic,butalsotakealotofdetours,butoverallisaforwardstepwiseadvancing.Thetestshowedthattheprojectdevelopedelectronicmedicalrecordsystemwhichhasmettheneedsoftheuserrequirements,andpassedthebasictest.Theentiresystemcanbedevelopedforfutureelectronicmedicalrecordssystemtoprovidereferenceresearchingvalue.Keywords:.NET,ElectronicMedicalRecord,ClinicalInformationTechnology,HISⅢ万方数据 目录目录第一章引言.................................................................................................................11.1课题研究背景..................................................................................................................11.2课题研究目的与意义......................................................................................................11.3国内外研究动态及水平..................................................................................................21.4课题研究内容..................................................................................................................31.5论文结构安排..................................................................................................................4第二章电子病历概述..................................................................................................52.1电子病历的基本概念......................................................................................................52.1.1电子病历的定义....................................................................................................52.2电子病历与其它系统的关系..........................................................................................52.2.1电子病历与HIS的关系........................................................................................52.2.2电子病历系统通常涉及到的其他系统以及接口............................................62.3电子病历的主要特点......................................................................................................62.4电子病历比传统病历的优势..........................................................................................72.4.1主动的.....................................................................................................................72.4.2完整和准确............................................................................................................82.4.3知识关联................................................................................................................92.4.4及时获取................................................................................................................92.5IT系统建设重点.............................................................................................................11第三章电子病历系统分析.........................................................................................133.1课题背景........................................................................................................................13IV万方数据 目录3.2课题的目标和原则.......................................................................................................133.2.1课题的目标........................................................................................................133.2.2课题建设原则....................................................................................................143.3可行性分析....................................................................................................................143.4客户需求分析...............................................................................................................153.4.1主体要求.............................................................................................................153.4.2系统功能模块图.................................................................................................163.4.3前台系统功能....................................................................................................163.4.4后台管理系统....................................................................................................173.5核心技术需求分析.......................................................................................................183.5.1平台选择............................................................................................................183.5.2技术架构设计....................................................................................................183.5.3安全性技术设计................................................................................................203.5.4病历编辑器技术设计........................................................................................203.6电子病历系统的非功能需求分析...............................................................................213.6.1数据备份............................................................................................................213.6.2数据恢复............................................................................................................22第四章相关技术介绍................................................................................................234.1技术路线........................................................................................................................234.1.1开发语言C#.......................................................................................................234.1.2WCF......................................................................................................................244.1.3.NETFramework...................................................................................................274.1.4MSSQLServer2008.............................................................................................294.2系统关键技术的实现....................................................................................................324.2.1数据实体映射(使用ADO.NETEntityFramework)......................................324.2.2XML类型数据存储技术.....................................................................................334.2.3连接池技术........................................................................................................35V万方数据 目录4.2.4微软企业库(EnterpriseLibrary)...................................................................354.2.5TXTextControl控件............................................................................................36第五章系统详细设计与实现.....................................................................................415.1系统数据库设计...........................................................................................................415.1.1数据字典分析....................................................................................................415.1.2系统流程图........................................................................................................655.2系统后台架构................................................................................................................655.2.1系统整体框架.....................................................................................................655.2.2表现层设计.........................................................................................................665.2.3服务层(Service)和业务逻辑层设计..................................................................665.2.4数据层(DAO层)设计....................................................................................695.2.5持久化对象和表映射........................................................................................705.3系统前台具体实现.......................................................................................................705.3.1主窗体的实现....................................................................................................705.3.2文档书写界面....................................................................................................715.3.3数据元维护界面................................................................................................755.3.4住院病案首页....................................................................................................775.3.5体温单界面........................................................................................................78第六章系统功能测试................................................................................................796.1用例测试........................................................................................................................796.1.1主窗体测试.........................................................................................................796.1.2病历文档书写测试............................................................................................816.2测试结论........................................................................................................................84第七章总结与展望....................................................................................................857.1总结................................................................................................................................857.2展望................................................................................................................................86VI万方数据 目录致谢.........................................................................................................................87参考文献.....................................................................................................................88附录一:app.config和服务配置文件.........................................................................92附录二:SQL实体对象源代码....................................................................................98附录三:病历信息表部分源代码.............................................................................103附录四:病案首页源代码.........................................................................................112附录五:体温单部分源代码.....................................................................................127VII万方数据 第一章引言第一章引言1.1课题研究背景随着我国医疗改革的推进和信息化水平的提高,数字化医院是我国现代医疗发展的新趋势,数字化医院系统是医院业务软件、数字化医疗设备、计算机网络平台所组成的三位一体的综合信息系统,数字化医院工程有助于医院实现资源整合、流程优化,降低运行成本,提高服务质量、工作效率和管理水平。数字化医院的业务软件中电子病历系统是所有业务系统的核心模块。1.2课题研究目的与意义电子病历绝不仅是病历的电子存储,它实质上是医疗过程的全面信息化。取代纸张病历也不是发展电子病历的唯一目标甚至不是主要目标,更不能用这一目标来衡量电子病历的意义所在。按照前述的电子病历概念,它已不是静态的病历本身,而是动态的智能的信息源。它的意义可以从如下几个方面来认识:(一)建立电子病历系统是计算机应用向临床发展的需要提高医疗工作效率。电子病历系统为医生护士的日常工作提供了有力支持。辅助医生书写病历,通过方便的编辑工具,典型病历模板,可以极大地提高病历书写效率,将医生从繁重的医疗文书工作中解放出来;计算机自动处理医嘱,同样可以减少护士不必要的转抄工作,降低差错概率;检查申请与结果的无纸化传递,可以加快结果的回报速度;病历电子化可以实现病人信息随时随地可得,医生不仅在病房,可以在家里,甚至在医院外的任何地方,通过网络访问病人信息。提高医疗工作质量。医生对病人进行诊断并作出治疗决定的过程,实质上是依据他所掌握的信息作出判断的过程。计算机虽然不能取代医生作出判断,但却可以发挥计算机和网络的优势,为这一过程主动智能地提供充分有效的信息,辅助医生作出判断。这方面的服务包括:同类疾病的病历查阅,帮助医生选择最佳医疗方案;智能知识库,辅助医生确立医疗方案;医疗违规警告,象药品相互作用配伍禁忌等,避免医疗错误;联机专业数据库,象药品数据库,供医生查询。另一方面,电子病1万方数据 电子科技大学硕士学位论文历有助于规范医疗行为。比如:通过病历模板,可以提示医生进行必要的检查,避免遗漏;医嘱模板可以规范医疗操作。这些都有助于提高医疗质量。(二)为医院管理服务强环节管理。传统的医疗管理主要是终末式管理,也就是各种医疗指标在事后统计出来,然后再反馈回医疗过程管理,象三日确诊率、平均住院日等。这样的管理滞后于医疗过程。实现了电子病历系统,各种原始数据可以在医疗过程中及时地采集,形成管理指标并及时反馈,达到环节控制的目标。象对三日确诊、术前住院日限制的实时监控,根据病人的用药情况,自动判断是否发生了感染等等。(三)病人信息的异地共享远程医疗最近得到较快地发展。远程医疗的基础是病人信息的异地共享。实现电子病历,为远程病人信息共享和传递提供了有力支持。当病人转诊时,电子病历可以随病人转入新就诊医院的电子病历系统中。电子病历发展的下一步,是实现个人健康记录,可以伴随病人流动。(四)为宏观医疗管理服务电子病历也为国家医疗宏观管理提供了丰富的原始数据库。管理部门可以从中提取各种分析数据,用于指导管理政策的制定。象疾病的发生及治疗状况、用药统计、医疗消耗等。当前正在实施的社会医疗保险制度,不仅在运行过程中,需要病历信息实施对供需双方的制约,而且在医保政策及方案的制定上,也需要大样本病历作为依据。1.3国内外研究动态及水平20多年来,欧、美一些大医院开始建立医院内部的医院信息系统(HIS),随之电子病历在美国、英国、荷兰、日本、香港等地区有了相当程度的研究和应用。美国政府已在大力推广、普及EMR的应用工作,印第安那大学医学分校利用EMR预测癌症早期病人的死亡率,波士顿EMR协会正在研究通过Internet传输急救病人的EMR问题。英国已将EMR的IC卡应用于孕妇孕期信息、产程启示及跟踪观察。香港医院管理局的患者卡(PatientCard)记录了病人完整的医疗过程,包括医生检查、检验结果、X片、CT片MTI片及处方等。同时,这些国家和地区已经成立了专门的研究机构,把EMR作为一个重点课题研究,组织医疗单位实施和普及。经过近20年的发展,我国医院信息系统已初具规模,许多医院相继建立起医院范围的信息系2万方数据 第一章引言统,以大连汇源电子系统工程有限公司的汇源医院管理信息系统为代表,为我国电子病历的研究和应用奠定了坚实的基础。国家卫生部监制的金卫卡将向全社会推出,可保存持卡人终生的医疗保健信息,持卡人可通过计算机网络直接和银行、医疗保险中心和保险机构联网,使医疗活动变得简单、方便、快捷。解放军总医院开展了EMR的研究和应用。这仅仅是EMR研究及应用的起步,相关的研究内容将会随着EMR的发展而深入。为贯彻落实《中共中央国务院关于深化医药卫生体制改革的意见》、《国务院关于印发医药卫生体制改革近期重点实施方案(2009-2011年)的通知》和《国务院办公厅关于印发医药卫生体制五项重点改革2010年度主要工作安排的通知》等文件精神,卫生部先后在2010,2011发布了关于电子病历系统的规范和通知文件。1.2010-03-04卫生部印发《电子病历基本规范(试行)》的通知。2.2010-10-14卫生部关于开展电子病历试点工作的通知。3.2011-01-04卫生部印发《电子病历系统功能规范(试行)》的通知。4.2011-05-24卫生部办公厅关于推进以电子病历为核心医院信息化建设试点工作的通知。自国家卫生部推荐最新规范以来,大部分厂家为了应对市场的变化及快速需求,一般是采购电子病历控件再进行开发,少部分公司能及时投入大量研发力量及时更新核心控件,满足国家最新规范。目前同时拥有核心控件及全套电子病历系统的品牌有金大夫电子病历,是一家专注于电子病历系统的深圳科技公司研发。系统完全结构化,仿WORD风格非常有特点。网上有大量的免费下载使用,令客户零风险购买。1.4课题研究内容本课题是四川省计算机研究院BD-HRP系统的子系统,研究前期,拟结合软件工程中面向对象软件开发方法,以及面向对象的软件建模方法与语言,在基于.NET平台的基础上,对课题进行深入的分析与研究,主要研究点与完成工作如下:1、电子病历系统的具体需求调研工作,并整理成为相关文档。2、参与整个HRP系统分析工作,以及系统建模工作。3、将前期的分析设计模型转换为设计模型,同时参与数据库的设计工作。4、负责HRP主界面、电子病历子系统、医生站子系统、护士站子系统、等相关子系统的代码编写、测试和集成工作。3万方数据 电子科技大学硕士学位论文5、整理电子病历系统的资料,并撰写论文。1.5论文结构安排本论文一共有六章,下面分别介绍各个章节的大概内容。第1章是引言部分,介绍了课题背景,课题的研究目的和意义,以此引入了本课题的概念、国内外研究现状和发展趋势,并阐述了本课题的具体研究内容。第2章电子商务概述。主要介绍了电子病历的基本概念,然后分析了电子病历的主要特点及其优势,阐述了电子病历的发展对相关行业的影响,最后展望了医疗信息化与电子病历的发展。第3章基于BD-HRP系统的基础,对本课题的电子病历系统进行了需求分析,确定了其业务流程,分析了其功能性需求和非功能性需求。第4章介绍了该系统开发中应用到的技术,并对开发过程中的重点和难点进行了概括和分析。第5章是对整个系统设计的详细介绍,首先介绍了该系统所用到的数据字典和数据模型,然后对整个系统的基于WCF的分布式系统框架的搭建和界面设计进行详细的层次介绍和代码说明。第6章系统测试部分,采用了不同的模块测试方法,对系统的整体功能模块进行了详细测试,并加以了修改,以尽可能提高本商务平台的稳定性。最后,对本课题所做的研究工作进行了总结与展望,同时指出了下一步需要开展的工作。4万方数据 第二章电子病历概述第二章电子病历概述2.1电子病历的基本概念电子病历(EMR,ElectronicMedicalRecord)也叫计算机化的病案系统或称基于计算机的病人记录(CPR,Computer-BasedPatientRecord)。它是用电子设备(计算机、健康卡等)保存、管理、传输和重现的数字化的病人的医疗记录,取代手写纸张病历。它的内容包括纸张病历的所有信息。美国国立医学研究所将定义为:EMR是基于一个特定系统的电子化病人记录,该系统提供用户访问完整准确的数据、警示、提示和临床决策支持系统的能力。2.1.1电子病历的定义究竟什么是电子病历,学术界至今仍缺乏统一的认识。根据目前的研究,理想的电子病历应当具有两方面功能:1.医生、患者或其它获得授权的人,在需要了解一个个体的任何健康资料或相关信息时,在任何情况下都可完整、准确、及时获得它们,并可得到准确的释义,在需要时可以最大限度地得到详细、准确、全面的相关知识。2.电子病历可以根据自身掌握的信息和知识,主动进行判断,在个体健康状态需要调整时,做出及时、准确的提示,并给出最优方案和实施计划。之所以称做理想的电子病历是因为这两方面功能看似简单,但含义深刻,数十年内很难完全实现。3.卫生部《电子病历基本架构与数据标准(试行)》给出的定义:电子病历是由医疗机构以电子化方式创建、保存和使用的,重点针对门诊、住院患者(或保健对象)临床诊疗和指导干预信息的数据集成系统。是居民个人在医疗机构历次就诊过程中产生和被记录的完整、详细的临床信息资源。2.2电子病历与其它系统的关系2.2.1电子病历与HIS的关系5万方数据 电子科技大学硕士学位论文1、电子病历依附于HIS。电子病历系统不是一个独立于HIS的新系统,因为病人信息来源于HIS中的各个业务子系统中。比如:病案首页来源于住院登记、入出转、病案编目等系统中。各个业务系统在完成自身的功能、管理自身业务数据的同时,也在收集着病人信息。因此,脱离了HIS,也就不存在电子病历系统。可以说,电子病历渗透于HIS中。2.电子病历系统与传统的HIS的不同。从电子病历的角度看病人信息,是完整的、集成的;而从传统的HIS的每个子系统来看病人信息,是局部的、离散的,相互之间信息有冗余、有遗漏,它们往往没有按照一个统一的原则进行设计和管理。在内容上,有不同的侧重和要求。比如:以统计和检索为目的的病案首页管理对病人的诊断只要录入保存ICD码即可,而从电子病历的角度则必须要完整地保留医生的诊断描述,诊断描述与ICD分类码不能相互取代。电子病历强调病人信息的原始性和完整性。电子病历是随着医院计算机管理网络化、信息存储介质--光盘和IC卡等的应用及Internet的全球化而产生的。电子病历是信息技术和网络技术在医疗领域的必然产物,是医院病历现代化管理的必然趋势,其在临床的初步应用,极大地提高了医院的工作效率和医疗质量,但这还仅仅是电子病历应用的起步。2.2.2电子病历系统通常涉及到的其他系统以及接口住院电子病历需与HIS系统实现ADT(入出转)接口;与HIS系统实现医嘱接口;与LIS系统实现检验报告接口,电子检验申请接口;与PACS系统实现检查报告接口,电子检查申请接口;与病案系统实现病案统计接口;如果是门诊电子病历还需与分诊叫号实现叫号接口;根据具体情况,还可能与手麻系统,ICU系统等有相应接口。2.3电子病历的主要特点6万方数据 第二章电子病历概述1.传送速度快。医务人员通过计算机网络可以远程存取病人病历,在几分钟甚至几秒钟内就能把数据传往需要的地方。在急诊时,电子病历中的资料可以及时地查出并显示在医师的面前。2.共享性好。现在使用的常规病历有很大的封闭性。医院诊治病人的记录只保存在本医院,如果病人到其它医院就诊则需要重新进行检查,这不仅浪费了宝贵的医疗资源也使病人增加了不少不必要的痛苦。而采用电子病历后,则能够克服这些不足。病人在各个医院的诊治结果可以通过医院之间的计算机网络或病人随身携带的健康卡(光卡和IC卡)来传输。病历的共享将给医疗带来极大的方便。3.存贮容量大。由于计算机存贮技术尤其是光盘技术的进步,电子病历系统数据库的存贮容量可以是相当巨大的,而且病人随身携带的健康卡(光卡或IC卡),其容量也是可观的。4.使用方便。医务人员使用电子病历系统可以方便地存贮、检索和浏览病历,复制也很方便,可以方便、迅速、准确地开展各种科学研究和统计分析工作,大大减少人工收集和录入数据的工作量,极大地提高临床科研水平。5.成本低。电子病历系统一次性投资建成后,使用中可以减低病人的费用和医院的开支。目前,电子病历也存在一些缺点。例如,需要大量的计算机软硬件投资和人员培训,有些医务人员甚至很难适应计算机操作。计算机一旦发生故障,将造成系统停顿,无法进行工作,因此,经常需要保存手工的原始记录。还有在将病历数据输入计算机时经常会出现各种错误(主要是操作失误),需要严格的检查,以防止发生差错和事故。2.4电子病历比传统病历的优势2.4.1主动的1.传统病历是被动的、静态的、孤立的,电子病历是主动的、动态的、关联的。传统病历完全不具有电子病历的第二方面功能,即没有主动性和智能,不能关联相关知识。纸病历放在那里,可以被阅读,也可补充新内容,但其内容与内容之间无法建立有机联系,病历内容与患者的实际状态完全脱节,病历内容与其相关知识没有连接,病历只能完成顺序不变的记载作用。电子病历的革命性,在于其储存的信息不再是孤立的、静态的,而是关联的、动态的,不再仅是块状信息,而是知识的集合。新补充的信息会与已存在的所有信息建立必要的联系,变换结构,根据7万方数据 电子科技大学硕士学位论文现有的知识、规律、规则、先例,对患者的状态进行综合分析判断,主动提示相关医生或病人;提出检查、治疗计划等。例如:一个管理肾透析的电子病历系统,可以记载患者的全部相关生理指标及既往全部透析情况等资料,这些资料在进入系统时已经被加工整理,当某位患者完成一次透析治疗后,系统会根据仪器的即刻检测和医生输入的新检查结果,综合既往情况立即提出一套详细的下一阶段治疗计划或相关建议,包括是否需要增加检查项目,是否需要辅助用药,用药的计量等。医生参考系统提供的方案给出自己的方案后,电子病历系统会根据其存储的知识进行判断,如果发现有矛盾或不符合一般规律或违反特殊原则之处则提醒医生。医生可以询问有哪些矛盾,其原理及文献如何。如果医生坚持自己的方案,予以实施,并最终证明方案有效,则电子病历系统将学习这一方案,并作为先例保存。由此例可见传统病历的记录功能在电子病历中只是诸多功能的一个方面。2.4.2完整和准确传统病历无法保证数据完整,电子病历则可保证完整、准确、及时获得信息资料。传统病历的这种缺陷源自诸多方面。首先,检查、治疗、监护等技术的发展,甚至于包括管理技术的发展都在否定传统病历。按照病案管理的初衷,所有患者相关资料最后都应集中到病案中进行统一保管。X线片最先脱离病案而单独管理,病理切片、涂片更是从来没有归入病案,CT、B超、核磁等各种成象造影检查,围手术监护、透析治疗、康复治疗等等种种检查治疗获得的大量的信息均被保存在病案之外,进入病案的只是简短的报告或是部分简略的影象资料,有的除了医嘱和病程日志外甚至什么具体资料都没有留到病案中,这些信息资料被分散保管在各专业部门或被丢弃。另一方面,由于传统病历纸介质条件的限制,既便有些资料,如一段多普勒超声录象,希望与病案一同保管,也是不可能的。信息系统投入使用后,医嘱等信息被存入计算机,尽管仍有打印页装订到病案中,但查看纸面信息的人越来越少。综合上述情况,从总趋势上不难看出,通过病案保管的患者信息占患者总信息的比例正在迅速变小,在一个不太久的未来,纸病历必然会失去其存在意义。其次,交通的发达,使人们的地域观念减弱。医疗体制改革,使患者可以选择多家医院就诊。一个人可以在北京的东城或西城的不同医院看病,也可能在深圳、西安的医院看病。采用纸病历,任何一家医院想全面得到其它医院关于某个病人的8万方数据 第二章电子病历概述病历资料都是十分困难的。这种困难不仅限于形式,不同医院的检查结果、习惯用语、质控标准等,其它医院的医生基本上无从获知。电子病历可以全面管理各种信息资料。可以集中管理,也可以分散管理并在理论上收集完整的各种分散管理的资料。例如一位患者做CT检查,他在做检查时,放射科的医生可以即刻看到其影象,主管医生则可以通过电子病历系统在病房同时观看,但此时由于放射科医生尚未给出诊断报告,相关影象资料主要保管在放射科。当诊断做出后,相关资料通过计算机网络自动传入电子病案室永久保存,此时主管医生能体会的只是内容的不同,具体资料位于何处,不需要也不必关心。不同医院的电子病历可以通过网络和必要的协议、标准在医院间完成数据传输交换,医生则可得到全面的资料,同样是不必关心病历的保存位置。2.4.3知识关联传统病历无法得到必要的释义,无法进行知识关联。所谓释义,就是解释含义。对于病案,释义包括两方面内容:一是不同医院不同医生或工作人员使用的术语或检查仪器记录的信息,其实际含义需要解释,以使不同的人能够正确获知其准确含义。例如一家医院的病案在另一家医院中被阅读时就需要做必要的释义。患者或保险公司人员等非医疗人员阅读病历更需要随时释义。二是对于由于专业、资力或新进展造成的生疏术语或新概念或新的检查、治疗项目、新药等,需要解释说明理论根据、含义、正常值、适应症等等。释义功能需要借助人工智能技术,特别是知识工程。知识关联对于医学实习生、进修医及低年资医生具有重要意义。知识关联也利于解决由于专科细化造成的病历阅读困难,利于低级别医院的医生共享应用高级别医院的病历资料。这类功能纸病案完全无能为力。2.4.4及时获取传统病历不能保证及时获取、不能共享。除了前述由于病案属于不同医院而造成的取用不便外,同一家医院内部也会由于病案正被借用、尚未归档、丢失等原因造成病历不能及时到位。采用电子病历则可彻底改变这一局面,一位患者的病历不仅可以多人同时获取,而且可以异地,不9万方数据 电子科技大学硕士学位论文同医院获取。如果接入无线网,则医生可在任何时候,如在旅途或在会议中,获取病历。以上介绍了理想电子病历与传统纸病历间的一些主要差别。但是,目前现实存在的电子病历,由于种种原因,还达不到理想效果。电子病历的现实概念是一个发展的概念,变化的概念,或者说电子病历有许多现实版本。目前广为接受的电子病历定义由美国医学研究所(IOM)1991年提出,原文如下:"„„anelectronicpatientrecordthatresidesinasystemspecificallydesignedtosupportusersthroughavailabilityofcompleteandaccuratedata,practitionerremindersandalerts,clinicaldecisionsupportsystems,linkstobodiesofmedicalknowledgeandotheraids."其译文大致为:电子病历存在于一个特殊系统中,借助这个系统,电子病历可以支持其使用者获得:完整、准确的资料;提示和警示医疗人员;各种医疗决策支持系统;连接医疗知识源;其它帮助。这个定义提到一个概念叫电子病历系统。传统病历需要医护人员借助纸张、油墨记录信息,通过一组专业人员手工加工、整理、保管病案。一份病案通常是一叠记有信息的纸。电子病历需要借助计算机设备转变成可与人交互的信息形式,结合数据采集、记录、加工、存储、管理、传送等工作完成电子病历功能。这些工作是通过一套计算机系统来完成的,这个系统就是电子病历系统。电子病历系统是电子病历依附存在的一种计算机系统,电子病历是电子病历系统的功能形式或功能统称。由于比起"系统"概念,医护人员更关心病历的内容,而且愿意具体化、形象化,所以通常模糊使用电子病历系统概念,不管是"系统"还是电子病历本身,都笼统称为电子病历。在电子病历的有关文献中,有一个词叫虚拟病历(VMRVirtualMedicalRecord)。这个词有助于理解电子病历。所谓虚拟病历是指计算机系统中管理了足够数量和种类的病历信息,在需要时,可以完全再现纸病历的全部内容,但其数据保存方式不囿于传统病历形式。需要注意的是,虚拟病历强调的是计算机化管理的病历数据对传统病历从形式到内容的再现能力。对电子病历而言,做到再现传统病历的内容和形式是完全可以的,但电子病历并不拘泥于再现,也不追求再现,而是追求更合理、更高效的形式。这是使用虚拟病历和电子病历概念时需要注意的。10万方数据 第二章电子病历概述2.5IT系统建设重点(1)电子病历的IT系统概述以电子病历为核心的医疗信息化系统,是构建一个资源共享、安全高效、方便使用的信息化模型结构。系统通常采用三层体系架构,底层是电子病历数据库服务器,用于存储和管理病历等数据;中间层是应用服务器和web服务器,其中应用服务器用于实现系统的业务逻辑(例如病历管理、病历归档、病历查询、统计报表等),完成各种复杂的管理操作和数据存取,web服务器用于提供系统的web服务(例如病历查询、信息公告、电子邮件、网上挂号等),还可以通过网管与外部系统进行数据交换和信息传递;最上层是客户端,如位于门诊大厅、挂号部、住院部等处的医护工作站和查询工作站,windows用户通过专用程序完成相关操作。电子病历系统,是医院的关键应用,关联到病历重要数据、病人隐私等,一旦出现隐患将出现无法挽回的损失,因此电子病历的IT系统建设,必须考虑安全性、稳定性、可靠性。电子病历系统为结构化、模块化结构设计,多采用双机热备方案,并通过密码控制、文件存储传输加密等设置,确保数据安全。(2)电子病历的IT系统性能要点电子病历系统为数据库应用,包含上万乃至10万级别的电子病历在线建档;多用户在线数据搜索与调用,如同类疾病的病历查阅,帮助医生选择最佳医疗方案;智能知识库,辅助医生确立医疗方案;医疗违规警告,象药品相互作用配伍禁忌等,避免医疗错误;联机专业数据库,如药品数据库,供医生查询。以一个大型三甲医院为例,平均门诊量高达7000—10000人次/天,这样算下来,一年的门诊量高达240万—250万人次/年,电子病历系统里存放大量的病历数据,当患者就诊时,医生通过电子病历系统从200多万份数据中快速、准确的找到该患者的数据。从上可以应用可以看出,建设一个简化、高效的电子病历信息系统需要一个强大的计算平台。浪潮集团具有IT业内唯一一个“高效能服务器存储技术”国家重点实验室,是在8路及8路以上小型机市场,唯一具备核心技术,底层研发能力及方案服务能力的中国品牌。其自主研发的8路高效能容错TS850服务器具备强大的计算性能,同时提供20多项RAS技术,系统可靠性达99.999%,能够有效满足医院电子病历系统计算平台的需求。(3)电子病历信息的安全机制11万方数据 电子科技大学硕士学位论文电子病历是已执行的病人医疗过程的记录,也是将要执行的医疗操作的依据;病历内容不管是患者医疗信息还是患者个人的隐私都具有法律效力。因此使用电子病历系统必须要建立一套安全机制。这一机制要覆盖病人信息不同表示形式的各组成部分,要控制到具体的病人。它要实现对信息的使用者进行授权,哪些人对哪些信息可以修改,哪些人对哪些信息可以阅读;同时对一些重要的操作要进行追踪记录。在信息系统建设中,关于接入层安全、网络层安全、数据层安全都会有相应的方案,但系统层往往被忽略掉。浪潮集团研制的安全服务器根据国家相关标准,结合浪潮多年来在服务器安全领域的技术积累,从服务器安全自身特点出发,从主板、安全专用芯片等底层硬件,到操作系统、上层应用软件,集成化构建符合标准三级要求的软硬件一体化安全服务器产品,浪潮安全服务器有机整合了服务器运行状态监控、网络状态监控、强制访问控制、安全管理、安全审计等多项信息安全技术,从设备安全、运行安全和数据安全三个方面,为服务器用户提供全方位的安全功能,解决了医院用户面临的日益严峻的安全威胁。(4)存储体系及备份方案病人的电子病历信息需要长期保存。但电子病历信息数据量大,不可能所有病人信息长期联机保存。作为电子病历系统,不仅要实现病人信息的长期保存,而且在发生故障时,病人的信息都不能丢失,在需要时还要能提取出来。为此,要建立分级存储结构,实现海量存储和实时存取的统一;对过期病人的病历,实现自动备份;对需要提取的病历,提供恢复联机状态工具;在发生故障后,能将数据恢复到断点状态。(5)供应商现状自国家卫生部推荐最新规范以来,大部分厂家为了应对市场的变化及快速需求,一般是采购电子病历控件再进行开发,少部分公司能及时投入大量研发力量及时更新核心控件,满足国家最新规范。系统完全结构化,仿WORD风格非常有特点。网上有大量的免费下载使用,令客户零风险购买。12万方数据 第三章电子病历系统分析第三章电子病历系统分析3.1课题背景结合BDHRP医院信息化系统,本项目将基于已有系统架构和技术手段实现以诊疗为核心的医院电子病历系统。为此,系统需要运用各种信息技术手段妥善解决病历书写、病例三级审核、病历结构化存储、结构化查询、病历质量控制等技术难题。提高病历书写效率,提高病历存储交互安全性,降低病历管理成本、检索成本,完成病历数字化管理。3.2课题的目标和原则3.2.1课题的目标在多年医院信息化研究的基础上,总结多年来卫生行政部门、各省市级医院、行业专家的研究和积累,根据《医院信息系统基本功规范》、《病历书写基本规范》、《中华人民共和国执业医师法》、《中华人民共和国护士管理办法》、《中华人民共和国计算机信息系统安全保护条例》、《中华人民共和国保密法》、《中华人民共和国电子签名法》等法律规范,遵循HL7、SNOMED、ICD10、DICOM3.0等国际标准,结合广大医学专家的经,完成结构化电子病历控件、结构化模版编辑器,实现可全院应用电子病历系统。系统以“病人为中心,紧贴临床实践、紧贴病历质量控制”为指导思想,以“提高临床工作者和医院管理人员的工作效率和工作质量”为目标,全面集成各种医疗信息系统为手段,在医院医疗活动全面信息化的基础上采集、存储、传输、提取和处理医疗卫生信息,内容包括:首页、医嘱、大病历、病程记录、各种检查检验申请与结果、手术记录、影像、护理信息等等。并建立完善的知识库向用户提供完整的、准确的、主动的、智能化的数据、警告、提示和临床决策支持能力,从而帮助医院提高整个医疗活动的效率和质量。内置常用模板,常用项目可直接元素(包括护理记录项目管理、病历文件管理、病历元素目录、病历标记图形管理、麻醉记录项目管理、病历段落范例、个人文件管理)或者直接选择,调用病历方便医13万方数据 电子科技大学硕士学位论文生书写住院病历,提高医生的工作效率。软件编辑器类似word操作,可方便的自定义模板。3.2.2课题建设原则1、安全性提供良好的安全机制和访问规则,防止重要的数据不被非法用户获取。2、先进性设计方案应立足于先进技术,优化服务器和网络方面通信流量,提高系统安全性为重点,并尽量采用行业内较为领先、成熟的技术,对未来的发展有良好的适应性。3、易用性系统应具有一致的、友好的客户化界面,易于使用和推广,并具有实际可操作性,使用户能够快速地掌握系统的使用。类Word的编辑界面。4、可管理易维护性电子病历系统立足医院日常业务,系统稳定性要求高,因此系统平台还必须具有良好的可管理和易于维护的特点。5、可扩展性系统要具有良好的扩展功能,兼容国际国内多种医疗信息化标准,能够根据实际应用需求,实现动态、无缝、平滑的扩展,以满足不断扩展的需求。3.3可行性分析1、技术可行性本系统是基于.NetWCF框架进行开发的,界面使用WinForm,.NET技术目前被广泛应用在信息系统的开发中,技术的稳定性和可复用性都接受了实践的考验。后台数据管理所用到的MSSQLServer2008数据库是大型关系型数据库,具有安全、稳定、管理简单等特点,非常适合开发的实际需要。数据库管理中用到的连接池技术是微软企业类库提供的,效率和稳定性都很高。除此之外系统中用到分布式架构、XML等技术也都已广泛应用于各种类型的信息系统开发过程中。2、运行可行性14万方数据 第三章电子病历系统分析当前许多医院已经建立起较为完善的信息化系统,且运行良好,本系统在参考这些已成熟的信息化系统基础上,实现具有结构化存储等自身特色的电子病历系统平台。3、社会因素可行性本系统将建立结构化存储、类Word编辑的电子病历系统,为构建以诊疗为核心的医疗信息化提供方案和技术支持,可极大的推进以诊疗为核心的医疗信息化的推广和普及,促进社会的和谐发展。3.4客户需求分析3.4.1主体要求(1)产品功能1.结构化存储2.病历模板库3.必填项检查4.支持各种医学专用表达式(例如月经史、胎心、龋齿位置的公式表述)。5.支持病历文档三级检诊(三级审核)功能6.支持修改痕迹保留,保留各级医生的修改痕迹7.时效控制机制,采用工作流主推模式,任务自动提示,及时提醒和催促医务人员,按时、按质、按量完成病历书写工作,有效的避免病历文档的缺写、漏写、延时书写.8.支持数据元素绑定、实现了多文档同步刷新技术9.表格处理能力(可以方便的制作表格病历),支持表格嵌套、合并单元格、拆分单元格、删除行、删除列、添加行、添加列、表格内插入元素、表格宽度手动或自动调整10.支持输入数值合法性检(1)用户特征该系统的用户主要是医生、护士和系统管理员。医生分为主任医师、医师、实习医师。实习医生和医师只能书写病历;主任医师除书写病历外,还要进行病历审核;护士主要书写护理记录;系统管理员进行用户、权限等相关管理。此外,质控部门如医务科进行病历的质量控制等工作。15万方数据 电子科技大学硕士学位论文(2)约束前台操作系统需要WINDOWSXP版本以上。系统涉及的全部信息存放在数据库服务器内,数据库服务器运行在独立的服务器上,操作系统为WINDOWS2003或2008,数据库管理系统为MSSQLServer2008。(43)性能要求系统性能要求:用户打开界面时间控制在5秒内;查询响应时间控制在5秒内。3.4.2系统功能模块图图3-1功能管理模块图3.4.3前台系统功能1)用户登录:合法用户输入自己的用户编码和密码可登录系统,登录后能对自己管理的患者进行病历查看与病历书写等操作。2)查看消息:用户登录系统后,能够查看与自己相关的病历审核和质控等上级医师反馈消息。16万方数据 第三章电子病历系统分析3)创建病历:选择某或者后可为其创建病历文档,创建病历文档时需选择一个病历模板,该模板可以是私有模板,也可以是公共或可是模板。4)浏览/查看病历:可以通过患者列表了解患者基本情况,也可以通过双击病历查看病历的详细信息,同时,可以根据患者姓名、住院号、床位号等条件进行查询。5)病历书写:双击打开病历文档后,可根据实际情况对该份病历文档进行书写,书写时可选择标准值也可进行自由文本输入或插入其它结构化信息。6)删除/修改病历:医师可选择删除某份文档或修改文档名称等其它相关属性,也可以为文档指定新的模板。7)病历归档:对于已出院患者,如果其病历以全部书写完毕,可对该患者所有病历文档进行归档,归档后进入病历质控环节。8)改变个人设置:可以随时修改帐号密码、输入法与其他个人信息。9)病历评分:医务科操作人员可对归档病历进行评分,并可将相关意见以消息的形式发送给病历书写者。10)病历审核:主任医师可对下级医师的病历进行审核,审核过程包括对病历的修改,修改将保存修改痕迹,并可将相关建议以消息的形式发送给书写者。11)模板定义:操作人员可制作适合本院、本科室、或本人使用的病历模板。12)数据元定义:操作人员可根据医学标准维护各种数据元,该数据元具有标准规定的值域,病历书写时只能从该值域选择标准值。图3-2数据元示意图3.4.4后台管理系统1)管理用户:系统管理员可以根据需要添加、修改或删除后台管理系统内的用户,同时也可以对密码等基本信息进行操作。2)科室维护:对本院科室进行维护。3)人员维护:对本院人员进行维护。17万方数据 电子科技大学硕士学位论文4)权限管理:对相关操作员进行授权。5)其他管理功能:如系统备份、系统恢复与日志管理等。3.5核心技术需求分析3.5.1平台选择电子病历系统构造技术的选择是系统建设中具有策略性的重要方面,它的选取将决定系统的可靠性、所提供的服务能力和维护过程中所要付出的代价,也将对前台应用程序和后台数据库支持产生影响。因此,对于系统构造技术的选择要对各方面综合考虑。在本文电子病历系统设计规划中,综合考虑价格、性能、维护技术和维护成本等诸多方面的因素,服务器端采用Windows2003+以WindowsService为宿主的WCFService,主要基于Windows2003可实现用户识别、存储器保护、通用目标分配和存取控制、文件和I/O设备存取控制、保证公平服务和进程通信与同步;数据库服务平台采用MSSQLServer2008。3.5.2技术架构设计采用平台化+组件化的多层结构技术架构,系统内部分基础平台层、业务逻辑层、业务组件层、表现层;可不断积累的系统组件库、本地化部件,面向离岸式开发、支持用户自主二次开发。采用SOA分析和设计方法和面向对象的设计技术。采用基于C#.NET的C/S/S技术架构,支持C/S/S或C/S两种运行模式。使用WCFService技术,根据具体需求设置相应的接口;系统内部抽象了大量的接口控件,以实现界面插件化。系统对数据库的访问业务集成在统一的SQLMapping组件中,可支持SQLServer等多种数据库。可实现分布式部署,对于较大规模的医院,可使用应用服务器集群,以解决负载均衡问题,保证医院业务的顺利稳定运行。18万方数据 第三章电子病历系统分析表现层WinForm/WPF应用程序HTML/ASP.NET/Silverlight页面服务层WCF服务WebService服务业务逻辑层业务方法业务实体数据访问层微软AccessApplicationBlockORM实体WCF服务层其它数据对象文档数据库图3-3系统多层结构图1)多层架构包括表现层、服务层、业务逻辑层和数据访问层。表现用来处理和生成请求用户界面任务,由传统的Windows应用程序或基于Web的应用程序组成;服务层负责表现层和业务逻辑层之间的通信,在本系统中用WCFServices来实现;业务逻辑层,包含组成应用程序的所有计算处理和业务规则,说明如何将数据分发到客户端和如何访问数据;数据访问层包含应用程序内的所有数据与数据存储之间的交互。典型的多层结构如上图3-3所示:多层架构的处理流程是:Windows客户或WEB客户生成一个访问请求,传送至服务层。服务层根据客户的请求判断调用业务逻辑层的相关处理方法,并把表现层的数据传递给业务逻辑层,业务逻辑层进行业务逻辑处理后将数据或请求传递数据访问层,数据访问层根据请求,生成一个SQL指令或SQL查询传送给数据服务器,数据服务器将关系数据返回给数据访问层,数据访问层将数据返回给业务逻辑层,业务逻辑层将数据返回给服务层,服务层将最终的响应返回给客户机,客户机最后将结果显示给用户。19万方数据 电子科技大学硕士学位论文2)集中数据存储系统中相关的所有数据都集中在数据库服务器上,数据库服务器应为数据的安全性、易维护性、完整性和数据分析以及数据挖掘提供基本条件。3.5.3安全性技术设计电子病历作为新生事物,其发展日益受到重视,它是医院发展的必然需要,也是现代医疗科技发展的必然结果。从长远看,电子病历必将会作为一种法律文书,而电子病历的安全性却是其法律效应的基础。本系统采用以下手段确保电子病历系统的安全性:1.电子病历机密数据(以下简称数据库)的加密;2.用户名+密码、指纹、IC卡等多种用户认证技术;3.使用电子签名保证文档作者身份合法性;4.指纹+电子签名的认证方式保证认证可靠性5.查询分级权限确保患者隐私安全性;6.软件加密和SQL防注入保证数据传输安全性;7.容灾备份、防火墙等保证数据库安全性。3.5.4病历编辑器技术设计编辑器技术是电子病历系统中的重点和难点,它是电子病历系统的核心技术,它的功能是否强大直接关系到电子病历系统的成败。因为在病历书写过程中,既要支持医学术语的结构化存储,又要支持自由描述语言的书写,同时还要支持图文混排,表格操作等,现有的书写工具很难完成上述要求,于是开发电子病历专用编辑器成为了必然的选择。电子病历系统中嵌入的病历编辑器采用仿Word模式的病历专用编辑器,应实现界面友好,操作方便,所见即所得,不仅要实现Word几乎所有常用的编辑功能,同时实现了病历中医学术语的结构化存储。它应该具有以下文本编辑功能:1.支持文字的各项设置,如:字体名称、文字大小、粗体、斜体等。2.支持的段落的居中、居左、居右对齐设置。3.支持文档的列表、编号、缩进、自动换行(软回车)、段落(硬回车)、行间距和段落背景颜色设置4.支持Undo/Redo操作。20万方数据 第三章电子病历系统分析5.当段落左对齐时,支持文字右侧对齐排版(避免右侧文字参差不齐,备注:Word具有此功能,一般编辑软件不具备此功能)。6.支持表格操作,支持合并单元格,拆分单元格,删除行,删除列,添加行,添加列,支持表格内插入简单元素、复杂元素。表格宽度可以根据纸张宽度调整。7.支持从Word文件中直接复制富文本,在编辑器内粘贴富文本(当需要根据医院现有WORD模板制作模板时需要)。8.支持直接复制富文本,在Word编辑器内粘贴。9.支持插入图片。10.支持插入横线。11.支持硬分页。12.支持格式刷。13.支持页眉页脚设置。14.支持纸张设置。15.持页边距设置。允许设置纸张的上下左右空白。我们采用第三方文本编辑控件TXTextControl来实现以上功能。通过引入元素的概念实现对病历中的医学术语进行结构化的处理,元素分为简单元素和复杂元素,而简单元素又可分为单选类元素,多选类元素,编辑框类元素等,对于选择类元素,我们可以设置其只读属性,必选属性等,对于编辑框类元素,我们不仅可以设置其只读属性,必填属性,还可以设置其数值范围,同样对于复杂元素,我们也可以设置其属性。通过在病历文档中对这些元素进行设定,绝大多数内容通过简单的鼠标点击即可实现,不仅能够节省大量录入时间,还能够起到规范医学用词用语的作用,提高了病历质量水平。同时,元素的默认选项(如阴性值,常见值)用黑色表示,选用了非默认选项的元素用红色,这样就可以根据整个文档快速获取出患者病情特点。3.6电子病历系统的非功能需求分析3.6.1数据备份1、系统备份是指为了系统安全和历史数据的查询而采取的一种定期的对数据的备份和转存措施。21万方数据 电子科技大学硕士学位论文2、数据库管理员需要对系统数据库进行定期的数据备份,对于本系统采用的数据库,则使用企业管理器自动全备份数据库,同时采用软件对数据库进行备份。3、系统管理员定期对系统配置和数据进行备份也需要对运行产生的日志文件进行定期备份,防止磁盘空间被大量占用。4、进行重大修改后,系统管理员必须对应用服务器进行备份。3.6.2数据恢复在发生数据库数据丢失、系统由于未知原因而使数据损坏等的情况下,为尽早的恢复系统功能,需进行系统恢复操作系统级数据恢复,数据库恢复以及使用数据库备份文件进行数据库恢复。22万方数据 第四章系统技术路线及关键技术实现第四章相关技术介绍4.1技术路线4.1.1开发语言C#C#是微软推出的一种基于.NET框架的、面向对象的高级编程语言。C#由C语言和C++派生而来,继承了其强大的性能,同时又以.NET框架类库作为基础,拥有类似VisualBasic的快速开发能力。C#由安德斯·海尔斯伯格主持开发,微软在2000年发布了这种语言。该语言具有以下特性:C#旨在设计成为一种“简单、现代、通用”,以及面向对象的程序设计语言。此种语言的实现,应提供对于以下软件工程要素的支持:强类型检查、数组维度检查、未初始化的变量引用检测、自动垃圾收集(GarbageCollection,指一种自动内存释放技术)。软件必须做到强大、持久,并具有较强的编程生产力。此种语言为在分布式环境中的开发提供适用的组件开发应用。为使程序员容易迁移到这种语言,源代码的可移植性十分重要,尤其是对于那些已熟悉C和C++的程序员而言。对国际化的支持非常重要。C#适合为独立和嵌入式的系统编写程序,从使用复杂操作系统的大型系统到特定应用的小型系统均适用。虽然C#程序在存储和操作能力需求方面具备经济性,但此种语言并不能在性能和尺寸方面与C语言或汇编语言相抗衡。相对于C和C++,这个语言在许多方面进行了限制和增强:指针(Pointer)只能被用于不安全模式。大多数对象访问通过安全的引用实现,以避免无效的调用,并且有许多算法用于验证溢出,指针只能用于调用值类型,以及受垃圾收集控制的托管对象。23万方数据 电子科技大学硕士学位论文对象不能被显式释放,代替为当不存在被引用时通过垃圾回收器回收。只允许单一继承(singleinheritance),但是一个类可以实现多个接口(interfaces)。C#比C++更加类型安全。默认的安全转换是隐含转换,例如由短整型转换为长整型和从派生类转换为基类。而接口布尔型同整型,及枚举型同整型不允许隐含转换,非空指针(通过引用相似对象)同用户定义类型的隐含转换必段被显式的确定,不同于C++的复制构造函数。数组声明语法不同("int[]a=newint[5]"而不是"inta[5]")。枚举位于其所在的命名空间中。C#中没有模版(Template),但是在C#2.0中引入了泛型(Genericprogramming),并且支持一些C++模版不支持的特性。比如泛型参数中的类型约束。另一方面,表达式不能像C++模版中被用于类型参数。属性支持,使用类似访问成员的方式调用。完整的反射支持。4.1.2WCFWindowsCommunicationFoundation(WCF)是一个面向服务编程的综合分层架构。该架构的顶层称为服务模型层(ServiceModelLayer),使用户用最少的时间和经历建立自己的软件产品和外界通信的模型。它使得开发者能够建立一个跨平台的安全、可信赖、事务性的解决方案,且能与已有系统兼容协作。从功能的角度来看,WCF完全可以看作是ASMX,.NetRemoting,EnterpriseService,WSE,MSMQ等技术的并集:24万方数据 第四章系统技术路线及关键技术实现图4-1WCF架构WCFService:软件设计的一个重要原则:软件组件必须针对特定的任务专门的设计和优化。假如我们要做一个管理软件,想象一下,如果一个软件非常依赖于与外界通信,我们不能把管理软件与外界通信的逻辑考虑在管理系统内部。所以必须把通信任务委托给不同的组件。用WCF术语来说,这个组件称为WCF服务。更通俗的讲,WFC服务就是负责与外界通信的软件。一个WCFService由下面三部分构成:图4-2WCFService25万方数据 电子科技大学硕士学位论文ServiceClass:一个标记了[ServiceContract]属性的类,在其中可能包含多个方法。除了标记了一些WCF特有的Attribute外,这个类与一般的类没有什么区别。Host(宿主):可以是应用程序,进程如WindowsService等,它是WCFService运行环境。Endpoints:可以是一个,也可以是一组,它是WCF实现通信的核心要素。在后面的实例应用中,我还会提到上面这三个概念。WCF端点:一个WCF服务必须能为不同的通信场景提供不同的访问点,这些访问点称为WCF端点。也就是上面所提到的EndPoint。每个端点都有一个绑定,一个地址和一个契约:图4-3WCF端点(1)绑定:指定该端点如何与外界通信,也就是为端点指定通信协议。传输协议:端点和客户端通过传输协议通信。比较常用的是HTTP和TCP。编码协议:在进入通信链路之前,端点和客户通过编码协议对通信进行编码。比较常见的是XML文件二进制码。安全协议:端点和用户通过安全协议保证通信的安全。比如一些敏感的信息,要求通过加密的传输信道。比较常见的是HTTPS和WS-Security。(2)地址:一个端点地址指定端点的位置,如果通过端点与WCF通信,必须把通信指定到网络地址。26万方数据 第四章系统技术路线及关键技术实现(3)契约:一个端点上契约指定通过该端点的用户能访问到WCF服务的什么操作。在WCF中,类ServiceEndpoint代表了一个端点(Endpoint),在类中包含的EndpointAddress,Binding,ContractDescription类型分别对应端点的地址,绑定和契约。图4-4ServiceEndpoint类WCF服务模型:WCF是一个层次架构,该架构的顶层称为服务模型,用于WCF服务的建模。WCF服务模型提供了3种重要手段对自己的WCF服务进行建模:(1)面向属性编程:WCF服务模型带有一套元数据属性,可以通过属性表示相应的实体,如:属性,接口,类等。(2)面向配置编程:WCF服务模型带有方便的配置语言,可以通过它在配置文件中进行建模。(3)常规命令编程:WCF服务模型带有一组方便的托管类,可以使用这些托管类对服务进行建模。4.1.3.NETFrameworkNETFramework是支持生成和运行下一代应用程序和XMLWebServices的内部Windows组件。.NETFramework旨在实现下列目标:27万方数据 电子科技大学硕士学位论文提供一个一致的面向对象的编程环境,而无论对象代码是在本地存储和执行,还是在本地执行但在Internet上分布,或者是在远程执行的。提供一个将软件部署和版本控制冲突最小化的代码执行环境。提供一个可提高代码(包括由未知的或不完全受信任的第三方创建的代码)执行安全性的代码执行环境。提供一个可消除脚本环境或解释环境的性能问题的代码执行环境。使开发人员的经验在面对类型大不相同的应用程序(如基于Windows的应用程序和基于Web的应用程序)时保持一致。按照工业标准生成所有通信,以确保基于.NETFramework的代码可与任何其他代码集成。NETFramework具有两个主要组件:公共语言运行库和.NETFramework类库。公共语言运行库是.NETFramework的基础。您可以将运行库看作一个在执行时管理代码的代理,它提供内存管理、线程管理和远程处理等核心服务,并且还强制实施严格的类型安全以及可提高安全性和可靠性的其他形式的代码准确性。事实上,代码管理的概念是运行库的基本原则。以运行库为目标的代码称为托管代码,而不以运行库为目标的代码称为非托管代码。.NETFramework的另一个主要组件是类库,它是一个综合性的面向对象的可重用类型集合,您可以使用它开发多种应用程序,这些应用程序包括传统的命令行或图形用户界面(GUI)应用程序,也包括基于ASP.NET所提供的最新创新的应用程序(如Web窗体和XMLWebServices)。.NETFramework可由非托管组件承载,这些组件将公共语言运行库加载到它们的进程中并启动托管代码的执行,从而创建一个可以同时利用托管和非托管功能的软件环境。.NETFramework不但提供若干个运行库宿主,而且还支持第三方运行库宿主的开发。InternetExplorer是承载运行库(以MIME类型扩展的形式)的非托管应用程序的一个示例。使用InternetExplorer承载运行库使您能够在HTML文档中嵌入托管组件或Windows窗体控件。以这种方式承载运行库使得托管移动代码(类似于Microsoft®ActiveX®控件)成为可能,不过它需要进行重大改进(如不完全受信任的执行和独立的文件存储),而这种改进只有托管代码才能提供。28万方数据 第四章系统技术路线及关键技术实现下面的插图显示公共语言运行库和类库与应用程序之间以及与整个系统之间的关系。该插图还显示托管代码如何在更大的结构内运行。图4-5.NETFramework环境4.1.4MSSQLServer2008SQLServer2008是一个重大的产品版本,它推出了许多新的特性和关键的改进,使得它成为至今为止的最强大和最全面的SQLServer版本。SQLServer2008是一个全面的数据库平台,使用集成的商业智能(BI)工具提供了企业级的数据管理。这个平台有以下特点:一、可信任的在今天数据驱动的世界中,公司需要继续访问他们的数据。SQLServer2008为关键任务应用程序提供了强大的安全特性、可靠性和可扩展性。29万方数据 电子科技大学硕士学位论文(一)保护你的信息在过去的SQLServer2005的基础之上,SQLServer2008做了以下方面的增强来扩展它的安全性:1.简单的数据加密SQLServer2008可以对整个数据库、数据文件和日志文件进行加密,而不需要改动应用程序。进行加密使公司可以满足遵守规范和及其关注数据隐私的要求。简单的数据加密的好处包括使用任何范围或模糊查询搜索加密的数据、加强数据安全性以防止未授权的用户访问、还有数据加密。这些可以在不改变已有的应用程序的情况下进行。2.外键管理SQLServer2008为加密和密钥管理提供了一个全面的解决方案。为了满足不断发展的对数据中心的信息的更强安全性的需求,公司投资给供应商来管理公司内的安全密钥。SQLServer2008通过支持第三方密钥管理和硬件安全模块(HSM)产品为这个需求提供了很好的支持。3.增强了审查SQLServer2008使你可以审查你的数据的操作,从而提高了遵从性和安全性。审查不只包括对数据修改的所有信息,还包括关于什么时候对数据进行读取的信息。SQLServer2008具有像服务器中加强的审查的配置和管理这样的功能,这使得公司可以满足各种规范需求。SQLServer2008还可以定义每一个数据库的审查规范,所以审查配置可以为每一个数据库作单独的制定。为指定对象作审查配置使审查的执行性能更好,配置的灵活性也更高。(二)确保业务可持续性有了SQLServer2008,微软继续使公司具有提供简化了管理并具高可靠性的应用的能力。1.改进了数据库镜像SQLServer2008基于SQLServer2005,并提供了更可靠的加强了数据库镜像的平台。2.热添加CPU为了在线添加内存资源而扩展SQLServer中的已有的支持,热添加CPU使数据库可以按需扩展。事实上,CPU资源可以添加到SQLServer2008所在的硬件平台上而不需要停止应用程序。30万方数据 第四章系统技术路线及关键技术实现(三)最佳的和可预测的系统性能公司在面对不断增长的压力,要提供可预计的响应和对随着用户数目的增长而不断增长的数据量进行管理。SQLServer2008提供了一个广泛的功能集合,使你的数据平台上的所有工作负载的执行都是可扩展的和可预测的。二、高效的SQLServer2008降低了管理系统、.NET架构和VisualStudio®TeamSystem的时间和成本,使得开发人员可以开发强大的下一代数据库应用程序。(一)基于政策的管理作为微软正在努力降低公司的总成本所作的工作的一部分,SQLServer2008推出了陈述式管理架构(DMF),它是一个用于SQLServer数据库引擎的新的基于策略的管理框架。(二)改进了安装SQLServer2008对SQLServer的服务生命周期提供了显著的改进,它重新设计了安装、建立和配置架构。这些改进将计算机上的各个安装与SQLServer软件的配置分离开来,这使得公司和软件合作伙伴可以提供推荐的安装配置。(三)加速开发过程SQLServer提供了集成的开发环境和更高级的数据提取,使开发人员可以创建下一代数据应用程序,同时简化了对数据的访问。(四)偶尔连接系统有了移动设备和活动式工作人员,偶尔连接成为了一种工作方式。SQLServer2008推出了一个统一的同步平台,使得在应用程序、数据存储和数据类型之间达到一致性同步。在与VisualStudio的合作下,SQLServer2008使得可以通过ADO.NET中提供的新的同步服务和VisualStudio中的脱机设计器快速的创建偶尔连接系统。SQLServer2008提供了支持,使得可以改变跟踪和使客户可以以最小的执行消耗进行功能强大的执行,以此来开发基于缓存的、基于同步的和基于通知的应用程序。(五)不只是关系数据应用程序正在结合使用越来越多的数据类型,而不仅仅是过去数据库所支持的那些。SQLServer2008基于过去对非关系数据的强大支持,提供了新的数据类型使得开发人员和管理员可以有效的存储和管理非结构化数据,例如文档和图片。还增加了对管理高级地理数据的支持。除了新的数据类型,SQLServer2008还提供了一系列对不同数据类型的服务,同时为数据平台提供了可靠性、安全性和易管理性。31万方数据 电子科技大学硕士学位论文三、智能的商业智能(BI)继续作为大多数公司投资的关键领域和对于公司所有层面的用户来说的一个无价的信息源。SQLServer2008提供了一个全面的平台,用于当用户需要时你可以为其提供智能化。(一)集成任何数据公司继续投资于商业智能和数据仓库解决方案,以便从他们的数据中获取商业价值。SQLServer2008提供了一个全面的和可扩展的数据仓库平台,它可以用一个单独的分析存储进行强大的分析,以满足成千上万的用户在几兆字节的数据中的需求。(二)发送相应的报表SQLServer2008提供了一个可扩展的商业智能基础设施,使得IT人员可以在整个公司内使用商业智能来管理报表以及任何规模和复杂度的分析。SQLServer2008使得公司可以有效的以用户想要的格式和他们的地址发送相应的、个人的报表给成千上万的用户。通过提供了交互发送用户需要的企业报表,获得报表服务的用户数目大大增加了。这使得用户可以获得对他们各自领域的洞察的相关信息的及时访问,使得他们可以作出更好、更快、更符合的决策。(三)使用户获得全面的洞察力及时访问准确信息,使用户快速对问题、甚至是非常复杂的问题作出反应,这是在线分析处理的前提(OnlineAnalyticalProcessing,OLAP)。SQLServer2008基于SQLServer2005强大的OLAP能力,为所有用户提供了更快的查询速度。这个性能的提升使得公司可以执行具有许多维度和聚合的非常复杂的分析。这个执行速度与MicrosoftOffice的深度集成相结合,使SQLServer2008可以让所有用户获得全面的洞察力。4.2系统关键技术的实现4.2.1数据实体映射(使用ADO.NETEntityFramework)在面向对象开发中,运行时的数据的关联是通过对象之间的引用来实现的。而静态数据的关联是通过表间的外键关联来实现的。而对于一个ORM的框架来说,管理对象之间的关联和表间的关系是框架的核心部分。最常见的对象之间的关联是一对多的关联,比如父/子关联,这类关联的数据存储主要是采用主从表的方式来实现,还有一32万方数据 第四章系统技术路线及关键技术实现种关联的是多对多的关联,这种关联的数据存储需要将一个n:m关联分解为两个1:n的关联来实现。在系统中病历目录(EMRCatalog)与病历信息表(EMRInfo)是一对多的关系,病历信息表(EMRInfo)和病历文档表(EMRDoc)是一对一的关系,他们的关系映射图如图4-6所示。图4-6EMRCatalog与EMRInfo、EMRDoc的关联图生成的类图如下:图4-7类图4.2.2XML类型数据存储技术33万方数据 电子科技大学硕士学位论文病历的描述模型是电子病历的最基础问题,XML为病历内容的描述提供了有效手段。XML是一种结构化描述语言。它随着因特网技术和电子商务的发展成为HTML的后继者。它的优势在于,它不仅是一种标识语言,更是一种可以定义描述对象结构的元语言。XML文档自含结构,使得系统间交换的信息可以互相"理解"。使用XML描述病历内容,要先定义病历内容的结构(DTD)。在此基础上实现业务数据库中病人信息到病历结构的转换、从而实现由以类型为中心的数据库描述到以人为中动的描述。形成的XML文件是病历存储管理的基本单位。采用XML文件来记录病历,并不排斥病人信息的数据库表示。病历的XML描述、与数据库记录有各自的适用范围,它们将共同存在。数据库系统主要用于支持日常的业务处理和病人信息的采集。其中需要大量的数据检索和更新。业务系统要保持高效率,过期的数据不宜在数据库中长期保存。电子病历系统所实现的病历浏览,主要是对病人信息的提取,数据不再更改,要保证数据长期联机。因此,将其建立在XML内容管理上。病人出院后,将病历内容转为XML描述文件。两种描述同时存在并保持相对独立,依用途各自使用。XML描述一个文档的基本特征是,使用者可以通过文档类型定义(DTD)来定义文档(病历)的结构。所有遵循这一结构的病历文档通过XML分析器(Parser)可以将其内容还原为结构化的字段并进行处理,这为病历内容的通用化处理奠定了基础。病历信息除了通过开发传统的基于数据库的录入程序录入不同的信息内容外,还要考虑大量的表格化的专科病历的录入方法。这些表格化的内容在病历中大量存在,而我们又很难为各种表格化的病历内容开发各自不同的数据结构和应用程序。XML为这一问题的解决提供了契机。我们可以通过设计工具来定制符合各种表格病历内容的XML文档DTD以及相应的录入屏幕。通过通用的XML处理程序对表格病历DTD以及屏幕定义的处理,实现定制的录入屏幕。用户录入的内容就是结构不同的表格病历XML文档,它可以与其他病历内容一起管理和处理。当前甚至出现了商品化的类似于WORD的XML文档编辑器,从而使基于XML的病历内容的录入更为简便。基于XML的病历内容的显示可以说是"水到渠成",因为浏览器IE5直接支持对XML描述的浏览。将病历的XML描述配合以XSL样式描述,可以通过浏览器生成希望的界面,无需开发专门的应用程序。34万方数据 第四章系统技术路线及关键技术实现由于XML文档的结构化,理论上,可以对XML文档进行各种结构化检索和统计。目前,已经有许多工具提供XML文档的检索。当然,对于大数据量,基于XML的检索与基于数据库的检索在性能上相比还有较大差距。病历的信息交换是电子病历的一个重要目标。信息交换的前提是标准化。XML为电子病历提供了很好的交换载体,但XML仅是描述病历信息的"元语言",要使交换的病历的内容能为对方所"理解"和处理,还必须有交换双方约定一致的病历描述结构即DTD。制定有关病历信息的文档类型定义-DTD的标准,是应用XML于电子病历交换的关键。在这方面HL7已经做了大量工作。以医疗信息交换为目标的HL7,在其正在制定的最新版本3.0中结合了XML。HL7组织正在制定用于医疗和病人信息交换的DTD。它包括两个方面的标准:一是在HL7的消息(message)中处理原来的语法外,定义XML作为消息的另一种描述语言:二是制定采用XML描述的病历结构PRA。后一种标准可以直接用于电子病历描述。在该标准中,根据病历信息的结构化程度,依次将标准划分为三级:仅描述病历头信息的一级结构、描述到病历的各个组成节的二级结构、描述到各节具体内容的三级结构。接收方只要根据约定的结构,借助于XML分析器,编写相关的处理程序,就可以将病历存入到本地数据库中或进行相关的处理。4.2.3连接池技术在三层结构的应用程序中通过连接池(connectionpooling)技术可以使系统的性能得到明显地提高,连接池意味着当应用程序启动时,会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时池驱动程序就会返回一个未使用的连接并将其标记为“忙”,当使用完池驱动就会将该连接标记为“闲”。如果当前没有空闲连接,池驱动就会新建一定数量的连接,新建连接的数量由配置参数决定。在本系统中,连接池交给微软企业类库(MicrosoftEnterpriseLibrary)自动管理。4.2.4微软企业库(EnterpriseLibrary)企业库(EnterpriseLibrary)是微软的模式与实践(Patterns&Practices)的下一代应用程序块(ApplicationBlocks)。该企业库的设计思想是为了协助开发商解决企业级应用开发过程中所面临的一系列共性的问题,如安全(Security)、日志(Logging)、数据访问(DataAccess)、配置管理(ConfigurationManage)等,并将这35万方数据 电子科技大学硕士学位论文些广泛使用的应用程序块集成封装至一个叫企业库的程序包中。通过这些程序块,可以解决共性的企业级开发过程中所面临的问题。使用新的设计理念整合应用程序块,使得各应用程序块具有重用性、一致性、扩展性、易用性、集成性。EnterpriseLibrary包含了能够用于为企业应用构建应用程序模块的源代码。这些代码可以直接使用,也可以根据需要进行修改或者扩展。这套类库的主要目的是为开发者提供如何编写良好代码的指导。类库使用像插件和依赖注入等设计模式构建,公用的功能被封装在EnterpriseLibraryCore中,它使用统一的协定进行命名和设定版本,所有的应用模块都经过了检测,并且从最初的设计阶段开始就在其中包含了单元测试。4.2.5TXTextControl控件TXTextControl是一套功能丰富的文字处理控件,它以可重复使用控件的形式为开发人员提供了Word中常用的文字处理功能,,对于需要强大且灵活的文档处理能力的应用程序而言,是理想的选择。TXTextControl主要功能如下:(一)常用的文字处理功能1、打印和打印预览实现基于微软平台的打印操作一直都是一项比较复杂的工作,而TXTextControl.NET只需调用一个函数即可实现文档、图形、表格、页眉和页脚等内容的打印操作。同时,开发人员也可以调用高级的打印方法来实现一些复杂的打印操作,例如:同时打印多个控件的内容、或将TXTextControl.NET与其他控件同时打印。TXTextControl.NET还为最终用户提供的打印预览功能。2、分节文档可以分为任意数量的节,并且可对每节的格式进行单独设置。3、超文本链接TXTextControl.NET能够编辑类似于HTML这样包含超文本信息的文件,而且可以将包含超链接的文档导出为HTML文件、或直接发布到互联网上、还可以作为HTML格式的邮件进行发送。正是因为提供了对超链接的支持,所以TXTextControl.NET可用于创建处理海量文本信息的超文本系统。4、项目符号和编号列表36万方数据 第四章系统技术路线及关键技术实现TXTextControl.NET为项目符号和编号列表提供了全面的支持,项目符号和编号列表的若干属性可以由用户来定义,其典型应用包括会议纪要、阅读列表和工作列表等。5、多级撤消/恢复TXTextControl.NET记录了用户编辑文档的每一步操作,用户可以在任何时候撤消之前进行的编辑操作或者恢复操作。开发人员可以实现多级撤消/恢复操作,用户可以通过鼠标或者键盘来访问这些功能。6、分栏显示分栏是一个非常有用的文字处理功能,使用分栏能够更容易和快速的理解文档内容。用户可以为整个文档指定显示列数,也可以单独为某个页面指定显示列数;可以通过对话框和标尺来设定列宽、列边框、列间距等属性;使用SHIFT+CTRL+ENTER组合键来实现换列操作。7、缩放操作用户可以以1%为步进单位对文档进行缩放操作,缩放的范围是10%至400%,在这个缩放范围内所有的文字处理功能都是可用的。8、样式表TXTextControl.NET能对段落和文字进行样式设置并支持样式继承,样式表还兼容MSWord,并能在RTF和DOC文件中使用。当多个用户同时使用一个文档,样式表的作用就更为重要,通过样式表可以防止文档中每个章节格式上的细微差别。9、拼写检查TXTextControl.NET制造商与Keyoti公司(该公司是拼写检查控件的市场领导者)合作开发了RapidSpell.NET产品,RapidSpell.NET完全集成于TX产品之中,TX利用RapidSpell.NET进行准确而且快速的拼写检查操作。10、表格操作TXTextControl.NET为表格、单元格以及单元格内的文字提供了丰富的格式设置选项。可使用集成对话框或者代码在文档和表格内插入表格,表格的单元格内还可以插入特殊文字和数字、段落、图片和表格,而且能使用对话框和代码来设置单元格的宽度、高度、边框和底纹等样式,单元格内的文字也可以像文档中的文字一样进行任意的格式设置,例如:设置字体、缩进和行间距等。11、页眉和页脚37万方数据 电子科技大学硕士学位论文页眉和页脚是由文本、图片、表格或者其它信息组成,分别位于文档中每页的头部和尾部,用户文档可以使用相同的页眉和页脚,也可以为某些页单独设定页眉和页脚。例如:最终用户可以在第一页的页眉添加公司Logo,而其它页的页眉可以是文档的名字。同时,可将对眉和页脚中的文本进行各种格式设置。12、页面和文档设置页面设置定义了屏幕上文档的显示方式,其中包括设置滚动条和页面显示。文档设置包括页面大小、方向和边距和默认打印机等。同时,所有的页面和文档设置选项都可以在代码中进行访问。13、字符和段落格式设置TXTextControl.NET提供了您所需要的一整套字符和段落格式设置相关的功能,例如:可以为字体大小、字体名称、字符样式、前景色和背景色等进行多种格式设置。而且所有的格式设置选项都能与其它选项组合使用,可实现任意的格式设置。14、图片格式TXTextControl.NET中可以插入以下格式的图像文件,包括TIFF、WMF,BMP、JPEG、PNG、GIF。15、表格标题表格需要分为多页显示时,每页都会自动添加表格标题行。16、读写数据库通过完全抽象的数据操作层,TXTextControl.NET能够从(往)任何数据库中读取(写入)纯文本和格式化文本。此外、TX能够往(从)数据库中存入(读取)完全格式化的文件,例如:页面中包含图片、表格、页眉、页脚等其他富文本格式的文件。17、图片操作TXTextControl.NET拥有非常强大的图片导入功能,支持多种图片格式。18、集成对话框TXTextControl.NET所有版本都附带了多个最终用户对话框,用户可以通过对话框设置段落、文字、表格、样式表等的格式。开发人员可以通过代码来访问和设置这些对话框的属性,同时这些对话框还支持本地化操作。19、剪贴板操作38万方数据 第四章系统技术路线及关键技术实现TXTextControl.NET所有剪贴板相关的功能都是内置的,不需要开发人员进行任何的编程工作即可实现该功能。剪贴板功能与ASCII、HTML和RTF格式也有很强的互操作能力。20、查找和替换最终用户可以使用集成对话框来完成查找和替换操作、开发人员也可以通过丰富的内置函数来实现查找和替换操作。(二)高级编程功能1、工具栏TXTextControl.NET中的所有按钮和下拉框都可由开发人员来设置是否显示和显示的位置,例如:可以控制用户在样式表中只能访问所有样式设置项中的部分设置项,该功能在XML文档编辑时也是非常有用的。2、XML编程TXTextControl.NET的XML模型为无技术背景的最终用户提供了一个处理XML文档的简便方法,最终用户无需了解XML的任何知识,即可在所见即所得的环境中处理XML文档;对开发人员而言,可通过TX提供的丰富属性和方法来处理XML文档和样式表。3、文本选择和文字输入开发人员可以通过Selection类来操纵文档中被选中文本的字体名、字体大小、前景色等背景色等信息;通过InputPosition类来操纵输入焦点当前所在的页、行和列等信息。4、MicrosoftWord合并域支持MicrosoftWord合并域,可以在MicrosoftWord中创建合并域然后导入到TXTextControl.NET应用程序中,也可以在TXTextControl.NET应用程序中创建合并域然后导出到MicrosoftWord中。5、控件设置TXTextControl.NET提供了大量选项用于定义文字处理所需要的外观和行为设置。外观控制设置:视图模式、文档背景色、滚动条位置、滚动条和控制字符是否显示。行为控制设置:编辑模式(例如:文本是否只读、可选择或可编辑)、Tab键行为(例如:是否插入制表符、将焦点跳转到下一个控件)39万方数据 电子科技大学硕士学位论文6、页面渲染引擎使用页面渲染引擎可将页面导出为BMP文件或者WMF文件(WMF文件能转换为JPG,GIF,PNG,BMP,WMF,EMF,TIFF和ICO等格式的文件),并且导出文件的布局与实际打印结果布局一致。7、标记的文本字段标记文本字段,也称为宏字段,标记文本字段的典型应用包括数据合并、报价单和报告等。8、对64位操作系统的支持支持WindowsXP64位和WindowsVista64位操作系统(所有版本)。9、数据绑定TXTextControl.NET中的控件完全支持数据绑定,例如:按钮、下拉框、RibbonBar等控件都无需任何代码就可以实现数据绑定操作。10、段落处理TXTextControl.NET的正文、页眉/页脚和文本框中都提供了段落集合属性,可用编程的方式来访问段落集合,并对每个段落进行单独设置。11、行和字符操作开发人员可以按行或者字符来处理文档,如统计一行文本中的字符数或文档中的行数。12、样式表编程样式表定义了文档的布局和格式,通过样式表可以设置页面大小、边距以及字体等格式。使用样式表可以确保文档中所有页的样式一致,而特定类型文档也可以指定特定的样式,例如:可以为个人文档定义一个样式,官方信件和第三方报告可以指定另外的样式。通过样式表规范文档格式的同时,也进一步提升了企业形象。40万方数据 第五章系统详细设计与实现第五章系统详细设计与实现5.1系统数据库设计5.1.1数据字典分析数据字典(datadictionary,DD)是关于数据信息的集合,是对数据流图中包含的所有元素定义的集合。它的作用是为软件分析和设计过程提供关于数据的描述信息。数据字典如表5-1:表5-1数据字典名称代码医学图像MedicalImage医学图像目录MedicalImageCatalog医护人员列表DoctorList合并文档MergedDoc复合数据元CombineDE复合数据元单选值域CDESingleValueRange复合数据元复选值域CDEMultipleValueRange数据元DataElement数据元数据组映射DEDGMapping数据组DataGroup文档段DocSection文档段目录DocSectionCatalog文档段类型DocSectionType模板信息EMTInfo模板文档EMTDoc特殊表达式Expression病历信息EMRInfo病历内置信息InnerInfo41万方数据 电子科技大学硕士学位论文病历归档申请EMRFileApply病历打印记录EMRPrintRecord病历文档EMRDoc病历文档操作记录EMROperaterRecord病历文档段EMRSection病历文档段操作记录EMRDocSections病历文档结构化信息EMRStructure病历目录(病历类别)EMRCatalog病历评分标准EMRDeductGradeStandard病历评分记录EMRDeductGradeRecord病历质控消息EMRQCMessage组合数据元目录CombineDECatalog医学图像的卡片表5-2医学图像卡名称医学图像代码MedicalImage医学图像的输出参考清单表5-3医学图像输出清单名称代码父表格外键列父角色子角色Reference_275Reference_275医学图像目录ImageCatalogID医学图像的列清单表5-4医学图像列清单名称代码图像IDImageID图像目录IDImageCatalogID图像名称ImageName备注Remark图像日期ImageData42万方数据 第五章系统详细设计与实现医学图像目录的卡片表5-5医学图像目录卡名称医学图像目录代码MedicalImageCatalog医学图像目录的进入参考清单表5-6医学图像进入清单名称代码子表格外键列父角色子角色Reference_275Reference_275医学图像ImageCatalogID医学图像目录的列清单表5-7医学图像目录列清单名称代码目录IDCatalogID目录名CatalogName父目录IDParentID目录级CatalogLevel医护人员列表的卡片表5-8医护人员列表名称医护人员列表代码DoctorList医护人员列表的输出参考清单表5-9医护人员列表输出清单名称代码父表格外键列父角色子角色Reference_272Reference_272人员表(Shortcut)Reference_276Reference_276住院病人(Shortcut)43万方数据 电子科技大学硕士学位论文医护人员列表的列清单表5-10医护人员列表列清单名称代码列表IDDoctorListID操作时间OpertorDateTime模式Mode开始时间StartTime结束时间EndTime备注Remark合并文档的卡片表5-11合并文档卡片名称合并文档代码MergedDoc合并文档的输出参考清单表5-12合并文档输出清单名称代码父表格外键列父角色子角色Reference_270Reference_270病历信息合并IDReference_271Reference_271病历信息被合并病历ID合并文档的列清单表5-13合并文档列清单名称代码合并IDMergedID顺序MergedIndex被合并病历IDMergedEMRID复合数据元的卡片表5-13复合数据元卡片名称复合数据元代码CombineDE44万方数据 第五章系统详细设计与实现复合数据元的进入参考清单表5-14复合数据元进入清单名称代码子表格外键列父角色子角色Reference_182Reference_182复合数据元单复合数据元ID选值域Reference_183Reference_183复合数据元复复合数据元ID选值域复合数据元的输出参考清单表5-15复合数据元输出清单名称代码父表格外键列父角色子角色ReferenceReference_数据组数据组ID_184184ReferenceReference_组合数据CatalogID_272272元目录复合数据元的列清单表5-16复合数据元列清单名称代码复合数据元IDCDEID复合数据元名称CDEName复合数据元标题CDECaption复合数据元标识符CDECode复合数据元类型CDEType目录IDCatalogID拥有者类型OwnerType拥有者IDOwnerID数据组IDDGID复合数据元单选值域的卡片表5-17复合数据元单选值域名称复合数据元单选值域代码CDESingleValueRange45万方数据 电子科技大学硕士学位论文复合数据元单选值域的输出参考清单表5-18复合数据元单选值域输出清单名称代码父表格外键列父角色子角色Reference_182Reference_182复合数据元复合数据元ID复合数据元单选值域的列清单表5-19复合数据元单选值域列清单名称代码复合数据元IDCDEID顺序号OrderNo值名称ValueName值标题ValueCaption富文本ValueRTFXMLValueXML成员对象ElementObjects复合数据元复选值域的卡片表5-20复合数据元复选值域名称复合数据元复选值域代码CDEMultipleValueRange复合数据元复选值域的输出参考清单表5-21复合单元复选值域输出清单名称代码父表格外键列父角色子角色Reference_183Reference_183复合数据元复合数据元ID复合数据元复选值域的列清单表5-22复合数据元值域列清单名称代码复合数据元IDCDEID数据元IDDEID数据元名称DEName46万方数据 第五章系统详细设计与实现数据元标题DECaption数据元标识符DECode默认值DefaultValue数据元的卡片表5-23数据元名称数据元代码DataElement数据元的进入参考清单表5-24数据元进入清单名称代码子表格外键列父角色子角色Reference_180Reference_180数据元数据组数据元ID映射数据元的列清单表5-25数据元列清单名称代码数据元IDDEID数据元名称DEName数据元标题DECaption数据元标识符DECode拼音码PYCode五笔码WBCode值类型ValueType值格式化串ValueFormat值来源类型ValueSourceType值来源ValueSource选择类型ChooseType默认值DefaultValue默认文本DefaultValueText性别限制SexLimited是否同步刷新isSync47万方数据 电子科技大学硕士学位论文同步刷新标识符SyncCode是否为复合数据isComposite是否为标准数据元isStandardDE数据元类型DEType数据元数据组映射的卡片表5-26数据元数据组映射名称数据元数据组映射代码DEDGMapping数据元数据组映射的输出参考清单表5-27数据元数据组映射的输出清单名称代码父表格外键列父角色子角色Reference_180Reference_180数据元数据元IDReference_226Reference_226数据组数据组ID数据元数据组映射的列清单表5-28数据元数据组映射列清单名称代码映射IDMappingID数据元IDDEID数据组IDDGID数据元名称DECaption值类型ValueType值格式ValueFormat值源类型ValueSourceType数据源ValueSource数据组的卡片表5-29数据组名称数据组代码DataGroup数据组的进入参考清单48万方数据 第五章系统详细设计与实现表5-30数据组进入清单名称代码子表格外键列父角色子角色Reference_184Reference_184复合数据元数据组IDReference_226Reference_226数据元数据组数据组ID映射数据组的列清单表5-31数据组列清单名称代码数据组IDDGID数据组名称DGName数据组标识符DGCode上级数据组IDParentID层级DGLevel拼音码PYCode五笔码WBCode显示顺序DisplayOrder文档段的卡片表5-32文档段名称文档段代码DocSection文档段的进入参考清单表5-33文档段进入清单名称代码子表格外键列父角色子角色Reference_181Reference_181病历文档段文档段ID文档段的输出参考清单表5-34文档段输出清单名称代码父表格外键列父角色子角色Reference_185Reference_185文档段目录文档段目录IDReference_281Reference_281文档段类型文档段类型ID49万方数据 电子科技大学硕士学位论文文档段的列清单表5-35文档段列清单名称代码文档段IDSectionID文档段目录IDCatalogID文档段类型IDDocSectionTypeID文档段名称SectionName文档段标题SectionCaption文档段标识符SectionCode拼音码PYCode五笔码WBCode是否共享isShared共享标识符SharedCode富文本SectionRTFXMLSectionXML成员对象ElementObjects拥有者类型OwnerType拥有者IDOwnerID文档段目录的卡片表5-36文档段目录名称文档段目录代码DocSectionCatalog文档段目录的进入参考清单表5-37文档段目录进入清单名称代码子表格外键列父角色子角色Reference_185Reference_185文档段文档段目录ID文档段目录的列清单表5-38文档段目录列清单名称代码目录IDCatalogID50万方数据 第五章系统详细设计与实现目录名称CatalogName目录标识符CatalogCode拼音码PYCode五笔码WBCode上级目录IDParentID目录层级CatalogLevel拥有者类型OwnerType拥有者IDOwnerID文档段类型的卡片表5-39文档段类型名称文档段类型代码DocSectionType文档段类型的进入参考清单表5-40文档段类型进入清单名称代码子表格外键列父角色子角色Reference_281Reference_281文档段文档段类型ID文档段类型的列清单表5-41文档段类型列清单名称代码文档段类型IDDocSectionTypeID类型编码DocSectionTypeCode类型名称DocSectionTypeName拼音码PYCode五笔码WBCode是否禁用isDisabled模板信息的卡片表5-42模板信息名称模板信息代码EMTInfo51万方数据 电子科技大学硕士学位论文模板信息的进入参考清单表5-43模板信息进入清单名称代码子表格外键列父角色子角色Reference_1Reference_1模板文档病历ID模板信息的输出参考清单表5-44模板信息输出清单名称代码父表格外键列父角色子角色Reference_22Reference_22病历目录(病历病历目录ID类别)模板信息的列清单表5-45模板信息列清单名称代码模板IDEMTID病历目录IDEMRCatalogID模板名称EMTName模板类别EMTType是否医生isDoctor是否护士isNurse创建人IDCreatorID创建日期CreateDate修改人IDModifierID最后修改日期ModifyDate性别限制SexLimited拥有者类别OwnerType拥有者IDOwnerID是否删除isDeleted模板文档的卡片表5-46模板文档名称模板文档代码EMTDoc52万方数据 第五章系统详细设计与实现模板文档的输出参考清单表5-47模板文档输出清单名称代码父表格外键列父角色子角色Reference_1Reference_1模板信息病历ID模板文档的列清单表5-48模板文档列清单名称代码病历IDEMTID富文本文档RTFDocXML文档XMLDoc成员对象ElementObjects特殊表达式的卡片表5-49特殊表达式名称特殊表达式代码Expression特殊表达式的列清单表5-50特殊表达式列清单名称代码特殊表达式IDExpID特殊表达式名称ExpName特殊表达式内容ExpContent特殊表达式备注ExpRemark病历信息的卡片表5-51病历信息名称病历信息代码EMRInfo病历信息的进入参考清单53万方数据 电子科技大学硕士学位论文表5-52病历信息进入清单名称代码子表格外键列父角色子角色Reference_1Reference_1病历文档病历IDReference_178Reference_178病历文档结构病历ID化信息Reference_186Reference_186病历文档段病历IDReference_270Reference_270合并文档合并IDReference_271Reference_271合并文档被合并病历IDReference_273Reference_273病历打印记录EMRIDReference_274Reference_274病历评分记录EMRIDReference_277Reference_277病历文档操作病历ID记录Reference_279Reference_279病历文档段操病历ID作记录病历信息的输出参考清单表5-53病历信息输出清单名称代码父表格外键列父角色子角色Reference_179Reference_179病历目录(病历病历目录ID类别)病历信息的列清单表5-54病历信息列清单名称代码病历IDEMRID病历目录IDEMRCatalogID病历名称EMRName住院病人IDInhosPatientID门诊号RegisterNo病案编号CaseNo是否医生isDoctor是否护士isNurse54万方数据 第五章系统详细设计与实现创建人IDCreatorID创建日期CreateDate锁定人IDLockerID锁定时间LockDate修改人IDModifierID最后修改日期ModifyDate应完成时间ShouldFinishDate应该完成日期ShouldFinishiDate完成日期FinishDate审核人IDAuditorID审核日期AuditDate性别限制SexLimited是否删除isDeleted状态Status是否合并isMerged持续记录RemainMark是否合并ifexists(select1fromsys.sysreferencesrjoinsys.sysobjectsoon(o.id=r.constidando.type='F')isMerged病历内置信息的卡片表5-55病历内置信息名称病历内置信息代码InnerInfo病历内置信息的列清单表5-56病历内置信息列清单名称代码代码Code内容Caption55万方数据 电子科技大学硕士学位论文病历类型EMRType拼音码PYCode五笔码WBCodeSqlTextSqlText病历归档申请的卡片表5-57病历归档申请名称病历归档申请代码EMRFileApply病历归档申请的列清单表5-58病历归档申请列清单名称代码申请IDApplyID住院病人IDInhosPatientID门诊号RegisterNo申请日期ApplyDate级Grade文档IDFilerID文档日期FileDate病历打印记录的卡片表5-59病历打印记录名称病历打印记录代码EMRPrintRecord病历打印记录的输出参考清单表5-60病历打印记录输出清单名称代码父表格外键列父角色子角色Reference_273Reference_273病历信息EMRID病历打印记录的列清单56万方数据 第五章系统详细设计与实现表5-61病历打印交流列清单名称代码记录IDRecordID病历IDEMRID打印时间PrintTime操作人员IDOperatorID表格页FromPage页ToPage病历数据元字典信息的卡片表5-62病历数据元字典信息名称病历数据元字典信息代码病历数据元字典信息病历数据元字典信息的列清单表5-63病历数据元字典信息列清单名称代码快译通代码DictCode快译通名称DictName拼音码PYCode五笔码WBCodeSqlSql病历文档的卡片表5-64病历文档名称病历文档代码EMRDoc病历文档的输出参考清单表-65病历文档输出清单名称代码父表格外键列父角色子角色Reference_1Reference_1病历信息病历ID57万方数据 电子科技大学硕士学位论文病历文档的列清单表5-66病历文档列清单名称代码病历IDEMRID富文本文档RTFDocXML文档XMLDoc成员对象ElementObjectsTextText富文本文档DocRTFXML文档DocXML病历文档操作记录的卡片表5-67病历文档操作记录名称病历文档操作记录代码EMROperaterRecord病历文档操作记录的输出参考清单表5-68病历文档操作记录输出清单名称代码父表格外键列父角色子角色Reference_277Reference_277病历信息病历IDReference_278Reference_278人员表操作人员ID(Shortcut)病历文档操作记录的列清单表5-69病历文档操作记录名称代码病历文档操作记录IDEMROperaterRecordID病历IDEMRID起始标签IDBeginTargetID起始标签名称BeginTargetName起始标签位置BeginTargetPostion结束标签IDEndTargetID结束标签名称EndTargetName58万方数据 第五章系统详细设计与实现结束标签位置EndTargetPostion操作人员IDOperaterID操作人员名称OperaterName操作时间OperateTime修改时间ModifyTime病历文档段的卡片表5-70病历文档端名称病历文档段代码EMRSection病历文档段的输出参考清单表5-71病历文档端输出清单名称代码父表格外键列父角色子角色Reference_181Reference_181文档段文档段IDReference_186Reference_186病历信息病历ID病历文档段的列清单表5-72病历文档段列清单名称代码病历文档段IDEMRSectionID病历IDEMRID文档段IDSectionID文档段名称SectionName文档段标题SectionCaption文档段标识符SectionCode是否共享isShared共享标识符SharedCode富文本SectionRTFXML片段SectionXML病历文档段操作记录的卡片59万方数据 电子科技大学硕士学位论文表5-73病历文档段操作记录名称病历文档段操作记录代码EMRDocSections病历文档段操作记录的输出参考清单表5-74病历文档段操作记录输出名称代码父表格外键列父角色子角色Reference_279Reference_279病历信息病历IDReference_280Reference_280人员表操作人员ID(Shortcut)病历文档段操作记录的列清单表5-75病历文档段操作记录列清单名称代码病历文档段记录IDEMRSectionID病历IDEMRID病历文档段编号SectionNumber起始标签名称SectionStart起始标签位置SectionLength操作人员IDOperaterID操作人员名称OperaterName操作时间OperateTime修改时间ModifyTime病历文档结构化信息的卡片表5-76病历文档结构化信息名称病历文档结构化信息代码EMRStructure病历文档结构化信息的输出参考清单60万方数据 第五章系统详细设计与实现表5-77病历文档结构化信息输出清单名称代码父表格外键列父角色子角色Reference_178Reference_178病历信息病历ID病历文档结构化信息的列清单表5-78病历文档结构化信息列清单名称代码病历IDEMRID结构化信息文档内唯一标识符IDStructureInfoID机构和信息类型StructureInfoType层级StructureInfoLevel上级结构化信息IDParentID结构化信息标识符StructureInfoCode标准结构化信息IDStdStructureInfoID结构化信息名称StructureInfoName结构化信息标题StructureInfoCaption数据元同步刷新类型DESyncType数据元同步刷新标识符DESyncCode值CodeValue文本值TextValue时间戳Timestamp病历目录(病历类别)的卡片表5-79病历目录名称病历目录(病历类别)代码EMRCatalog病历目录(病历类别)的进入参考清单表5-80病历目录进入清单名称代码子表格外键列父角色子角色Reference_22Reference_22模板信息病历目录IDReference_179Reference_179病历信息病历目录ID病历目录(病历类别)的列清单61万方数据 电子科技大学硕士学位论文表5-81病历目录列清单名称代码目录IDCatalogID目录名称CatalogName目录编码CatalogCode目录类别CatalogType是否医生isDoctor是否护士isNurse上级目录IDParentID层级CatalogLevel是否续打isContinuousPrint序列号SequenceNO分钟内完成MinutesToComplete是否必须isMust病历评分标准的卡片表5-82病历评分标准名称病历评分标准代码EMRDeductGradeStandard病历评分标准的列清单表5-83病历评分标准列清单名称代码标准IDStandardID病历类型IDEMRCatalogID标准描述StandardDescription扣除Deduction病历评分记录的卡片表5-84病历评分记录名称病历评分记录代码EMRDeductGradeRecord62万方数据 第五章系统详细设计与实现病历评分记录的输出参考清单表5-85病历评分记录输出清单名称代码父表格外键列父角色子角色Reference_274Reference_274病历信息EMRID病历评分记录的列清单表5-86病历评分记录列清单名称代码行DRowID文档申请IDFileApplyID病历信息IDEMRID扣分标准IDDeductGradeStandardID扣除Deduction扣分和DeductCount病历质控消息的卡片表5-87病历质控信息名称病历质控消息代码EMRQCMessage病历质控消息的列清单表5-88控信息列清单名称代码消息IDMessageID病历信息IDEMRID消息内容MessageContent消息类型MessageType发送者IDSenderID发送日期SendDate组合数据元目录的卡片63万方数据 电子科技大学硕士学位论文表5-89组合数据元目录名称组合数据元目录代码CombineDECatalog组合数据元目录的进入参考清单表5-90组合数据元目录进入清单名称代码子表格外键列父角色子角色Reference_272Reference_272复合数据元CatalogID组合数据元目录的列清单表5-91组合数据元目录列清单名称代码目录IDCatalogID目录名称CatalogName父角色IDParentID目录级CatalogLevel拥有者类型OwnerType拥有者IDOwnerID64万方数据 第五章系统详细设计与实现5.1.2系统流程图准备病历管理N身份验证创建病历修改病历Y模块选择病历审核用户管理模板管理病历书写病历归档N录入病历用户权限Y模板定义数据元定义病历审核病历管理用户管理数据库灾备、日志管理科室管理人员管理权限管理结束图5-1系统流程图5.2系统后台架构5.2.1系统整体框架本系统采用.NET的多层结构,分为表现层、服务层、业务逻辑层和数据访问层。多层体系将业务规则、数据访问等工作放在中间层处理,客户端不直接与数据库交互,而是通过控制器与中间层建立连接,再由中间层与数据库交互。表现层使用WinForm显示数据,采用DevExpress界面控件,增加界面美观度和操控性。服务层采用WCFServices,使用WindowService作为宿主。业务逻辑层包含了数据校验、业务逻辑处理等与业务相关的控制代码,使用服务层提供的数据,并将数据访问层返回的数据提供给服务层。65万方数据 电子科技大学硕士学位论文数据访问层是与数据库进行交互的层,主要包含根据业务逻辑生成SQL并提交数据库执行SQL的代码。数据访问层可惜分为:(1)DAO层(数据访问对象层),负责与持久化对象交互,封装了数据的增、删、查、改等原子操作。(2)PO层(持久化对象层),通过EntityFramework将关系型数据库的数据映射成为对象。通过使用微软企业库,提供了众多良好的设计模式和优良代码。除此以外,本系统还使用界面模板,提供统一的界面风格,用对象完成数据的接受和传送。数据服务层使用MSSQLServer2008数据库存放数据。在进程系统开发之前,首先要进行相关配置,尤其是整个框架的配置文件的配置,首先要在app.config中对配置文件进行修改(文件代码见附录一)。5.2.2表现层设计表现层又分为业务逻辑层和界面层,业务逻辑层负责界面与服务层的交互,界面层则主要关注用户操作数据提交给业务逻辑层,以及将业务逻辑层的数据展现在界面上。因此,业务逻辑层代码包含了对服务层的调用,所有调用封装成统一的方法,Common.CallService,该方法传入序列化的统一参数,并返回序列化的参数。在整个表现层中对服务的调用都使用该方法。服务端可以将不同服务搭建在不同的服务器,通过传入不同的服务代码,可以调用不同服务器上的不同服务,实现显式的负载均衡。5.2.3服务层(Service)和业务逻辑层设计Service层是连接表现层和业务逻辑层、Dao层的中间层。所有的业务方法最终都对应一个服务接口,该服务接口在编写完业务逻辑层代码后,由工具自动生成。使用.NET框架的InstallUtil.exe程序进行服务的安装和卸载。电子病历服务示例程序usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Diagnostics;66万方数据 第五章系统详细设计与实现usingSystem.Linq;usingSystem.ServiceProcess;usingSystem.Text;namespacexHRP.WindowsService.EMR{publicpartialclassEMRService:ServiceBase{publicEMRService(){InitializeComponent();}protectedoverridevoidOnStart(string[]args){try{xHRP.Common.ServiceControl.StartAllConfiguredServices();System.Diagnostics.EventLog.WriteEntry("xHRP","xHRPEMR服务开始运行",EventLogEntryType.Information);}catch(System.Exceptionerr){//记录服务异常日志System.Diagnostics.EventLog.WriteEntry("xHRP","xHRPEMR服务启动异常:"+err.Message,EventLogEntryType.Error);}}protectedoverridevoidOnStop(){xHRP.Common.ServiceControl.CloseAllServices();System.Diagnostics.EventLog.WriteEntry("xHRP","xHRPEMR服务关闭",EventLogEntryType.Information);67万方数据 电子科技大学硕士学位论文}}}业务逻辑层根据业务逻辑关系进行编码,实现对表现层数据和数据库数据的验证和处理。业务逻辑(服务接口)示例代码:[Method(Description=@"///

///增加模板/////////")]publicArgumentsAddEMT(Argumentsargs){returnExecuteEMTCRUD(args,CRUD.Create);}privateArgumentsExecuteEMTCRUD(Argumentsargs,CRUDcmdType){Argumentsret=newArguments();ret.Code=0;EMTe=xHRP.Common.Common.Desrialize(args.Args[0].ToString())asEMT;try{_daoEMT.ExecuteCRUD(e,cmdType);LogManager.WriteLog(args.LoginUser,LogType.Info,GetActionName(cmdType)+"模板("+e.EMTInfo.Emtid.ToString()+")","模板");}catch(Exceptionex){ret.Message=ex.Message;}68万方数据 第五章系统详细设计与实现returnret;}5.2.4数据层(DAO层)设计数据访问层通过使用SQL或实体对象完成数据的增、删、改、查,使用SQL时使用微软企业库的相关DataAccessBlock提供的数据访问功能。SQL访问示例代码:publicArgumentsGetEMRInfo(Argumentsargs){Argumentsret=newArguments();try{stringsql=@"SELECTa.*,Creator=(SELECTEmployeeName=ISNULL(EmployeeName,'')FROMHR.EmployeeWHEREEmployeeID=a.CreatorID),Locker=(SELECTEmployeeName=ISNULL(EmployeeName,'')FROMHR.EmployeeWHEREEmployeeID=a.LockerID),Auditor=(SELECTEmployeeName=ISNULL(EmployeeName,'')FROMHR.EmployeeWHEREEmployeeID=a.AuditorID),StatusFROMEMR.EMRInfoaWHEREEMRID='"+args.Args[0].ToString()+"'";DataTabledt=_daoEMRCatalog.ExecuteDataTable(sql);if(dt.Rows.Count>0){EMRInfoemrInfo=newEMRInfo();DataTranslatet=newDataTranslate();emrInfo=t.DataRowToObject(dt.Rows[0]);ret.Args=newobject[1];ret.Args[0]=xHRP.Common.Common.Serialize(emrInfo);;}ret.Code=xHRP.Common.Common.CallServiceSuccessFlag;}69万方数据 电子科技大学硕士学位论文catch(Exceptionex){ret.Code=-1;ret.Message=ex.Message;}returnret;}5.2.5持久化对象和表映射持久化对象的作用是完成持久化操作,简单地说,通过该对象可对数据执行增、删、改的操作—以面向对象的方式操作数据库。应用程序无需直接访问数据库,甚至无须理会底层数据库采用何种数据库—这一切对应用程序都是完成透明的,应用程序创建、修改、删除持久化对象即可;与此同时,ADO.Netscape则负责把这种操作转换为对指定数据表的操作(病历信息表的实现模型以及病历信息表对应的数据操作源代码见附录三)。5.3系统前台具体实现5.3.1主窗体的实现70万方数据 第五章系统详细设计与实现图5-2系统主窗体图5-3模板维护界面主窗体设计为可扩展功能的开放式框架,窗体中各功能菜单在数据库中维护,数据库中记录功能的名称,编码,所在类库,方法名称等信息,当点击菜单时,读取这些配置信息,并利用反射查找相应的类库和方法,加载类库,运行方法,则执行了该功能菜单的相应功能。当有新的功能加入时,只需要编写相应的功能类库和功能方法,并添加进数据库,配置相应的权限,则该功能可在主窗体中显示。整个应用程序采用维持一个窗体实例的Tab页样式的多文档架构,每个功能窗体只能打开一次,但可打开多个功能窗体,方便用户操作。5.3.2文档书写界面病历文档维护界面采用左侧树形结构,右侧ListView的典型Windows窗体模式。左侧为患者列表,患者下为文档目录,右侧为该文档目录中包含的文档列表。文档可增、删、改、查。71万方数据 电子科技大学硕士学位论文图5-4病历文档维护界面双击右边的某个文档,可打开文档书写界面。编辑文档时,双击某个数据元,可选择数据元的值域,也可以在文档中书写自由文本,或进行文档格式编排等操作。点击保存按钮可保存文档。文档保存时结构化数据转换成XML格式存入数据库,整个文档文本以二进制形式保存到数据库。图5-5病历文档编辑界面72万方数据 第五章系统详细设计与实现文档的结构化存储是该窗体实现的重点。代码需遍历整个文档,查找结构化信息,并写成XML,然后将该XML存入数据库。部分代码如下://////保存///privatevoidFile_Save(){if(ToSave==null){CommonFunction.MessageBox("未定义保存关系",MessageButtonType.OK);}elseif(this.EMRViewMode==Editor.EMRViewMode.Preview){}else{try{byte[]buffer;textControl.Save(outbuffer,TXTextControl.BinaryStreamType.InternalFormat);ToSave(buffer,this.XmlDoc,textControl.Text);_dirty=false;barButtonItemSave.Enabled=_dirty;}catch(Exceptionex){xHRP.Client.Common.CommonFunction.ErrorBox("保存时发生错误!",ex.Message);}73万方数据 电子科技大学硕士学位论文}}[Method(Description=@"//////创建必写文档///u//////")]publicArgumentsCreateMustToDoEMR(Argumentsargs){stringinhosPatientID=args.Args[0].ToString();Argumentsret=newArguments();try{stringsql=@"INSERTINTO[EMR].[EMRInfo]([EMRID],[EMRCatalogID],[EMRName],[InhosPatientID],[RegisterNo],[CaseNo],[CreatorID],[CreateDate],[LockerID],[LockDate],[ModifierID],[ModifyDate],[ShouldFinishDate],[FinishDate],[AuditorID],[AuditDate],[SexLimited],[isDeleted],[Status])SELECTNEWID(),CatalogID,CatalogName,"+inhosPatientID+@",NULL,NULL,InhosDoctorID,GETDATE(),NULL,NULL,InhosDoctorID,GETDATE(),DateAdd(MINUTE,MinutesToComplete,InhosDate),NULL,NULL,NULL,0,0,0FROMEMR.EMRCatalogaCROSSJOINEMR.MRFirstPagebWHEREa.isMust=1ANDa.CatalogIDNOTIN(SELECTEMRCatalogIDFROMEMR.EMRInfoWHEREInhosPatientID="+inhosPatientID+@")ANDb.InhosPatientID="+inhosPatientID;_daoEMRInfo.ExecuteNonQuery(sql);ret.Code=xHRP.Common.Common.CallServiceSuccessFlag;}catch(Exceptionex){74万方数据 第五章系统详细设计与实现ret.Code=-1;ret.Message=ex.Message;}returnret;}5.3.3数据元维护界面图5-6数据元界面数据元是电子病历中的最小结构化信息,例如:症状、性别等。该类信息具有标准值域,录入性别只有男、女的可选值。将这类数据设置为数据元,在病历书写时可从值域列表中选择值,方便了输入,同时规范了病历书写。数据元分为单选、复选;从内容分可分为标准值域(基于卫生部数据标准)、系统码表、自定义值域、日期时间、数字、内置信息(可从其他表读取,例如姓名可从入院表读取)等。部分代码如下://数据元实体publicDataElementDataElement{get75万方数据 电子科技大学硕士学位论文{return_dataElement;}set{_dataElement=value;if(value!=null){gridControlValueRange.DataSource=null;textEditDECaption.Text=value.DECaption;textEditDECode.Text=value.DECode;comboBoxEditValueSourceType.SelectedIndex=value.ValueSourceType;comboBoxEditValueType.SelectedIndex=(int)DataTypeConvert.GetType(value.ValueType);comboBoxEditFormat.Text=value.ValueFormat;pcDictList.Active=false;popupContainerEditDicList.Tag=value.ValueSource;if(dtDictList!=null&&dtDictList.Select("CategoryCode='"+value.ValueSource+"'").Length>0){popupContainerEditDicList.Text=dtDictList.Select("CategoryCode='"+value.ValueSource+"'")[0]["CategoryName"].ToString();}else{popupContainerEditDicList.Text="";}pcDictList.Active=true;ValueSourceTypet=(ValueSourceType)value.ValueSourceType;switch(t){76万方数据 第五章系统详细设计与实现caseValueSourceType//自由文本comboBoxEditChooseType.Enabled=false;break;caseValueSourceType//自定义值域comboBoxEditChooseType.Enabled=true;gridControlValueRange.DataSource=ValueRangeManager.GetValueRangeList(value.ValueSource);gridViewValueRange.OptionsView.NewItemRowPosition=DevExpress.XtraGrid.Views.Grid.NewItemRowPosition.Bottom;break;}}}}5.3.4住院病案首页图5-7病案首页界面该界面主要用于填写住院病案首页,住院病案首页是病历文档的封面页,包含病人基本信息、诊断信息、手术麻醉信息、主要费用信息、主要检验检查等相关诊疗信77万方数据 电子科技大学硕士学位论文息,是病历最主要的文档记录,并且要用于医疗质量统计,给卫生部病案统计提供卫统报表,因格式相对固定化,故采用单一固定界面而不是文档的形式提供医生填写(病案首页部分代码见附录四)。5.3.5体温单界面图5-8体温单界面体温单是护理记录的重要组成部分,包含体温、呼吸、脉搏等数据。护士需没隔4小时测了病人的体温等数据,作为护理以诊疗依据。体温单以单一固定界面提供给护士使用(部分代码详见附录五)。78万方数据 第六章系统功能测试第六章系统功能测试6.1用例测试[63-64[65-66]测试过程中主要采用黑盒测试]和白盒测试方法。在对电子病历系统进行测试时使用了黑盒测试法。在编制好测试数据之后,运行程序,然后观察程序对数据库的修改情况,测试各个功能的执行是否正确。在测试中既输入正确符合要求的数据也要输入预定要引发错误的数据,这样才能全面测试程序的全面正确性。6.1.1主窗体测试1、主窗体用例测试表主窗体用例主要检验出输入用户名和密码信息的格式错误和逻辑错误、登录后功能列表刷新等问题。详细测试如表6-1所示。表6-1登录用例测试表功能名称登录前置测试用无功能完成人邓韩彬例功能点登录优先级高测试人邓韩彬修改人邓韩彬测试步骤(1)输入用户名(2)点击登录(3)点击功能菜单预期结果(1)查询成功,系统进入程序主界面(2)失败,系统依然停留在登录页面,并显示错误(3)点击功能菜单,系统打开相应功能窗体,否则显示错误结果列表79万方数据 电子科技大学硕士学位论文序列输入参数结果1用户:“0001”登录成功,系统进入顾客个人账户管理密码:“1”页面2用户:“0002”登录失败,系统提示错误“密码错误”密码:“1”3用户:“e003”登录失败,系统提示错误“用户名不存密码:“3”在”4用户:“”登录失败,系统提示错误“用户名不能密码:“321”为空”4用户:“0004”登录失败,系统提示错误“密码不能为密码:“”空”2、修改密码用例测试表修改密码用例主要检验出输入旧密码和新密码信息的格式错误和逻辑错误即旧密码是否正确。详细测试如表6-2所示。表6-2修改密码用例测试表功能名称修改密码前置测试用登录功能完成人邓韩彬例功能点修改密码优先级高测试人邓韩彬修改人邓韩彬测试步骤(1)输入旧密码(2)输入新密码(3)再次输入新密码预期结果(1)修改成功,系统转至管理端首页(2)失败,系统依然停留在修改页面,并显示错误结果列表80万方数据 第六章系统功能测试序列输入参数结果1旧密码:“1”修改成功,系统转至个人账户新密码:“123”管理页面确认新密码:“123”2旧密码:“2”修改失败,系统提示错误“你新密码:“123”输入的旧密码错误”确认新密码:“123”3旧密码:“3”修改失败,系统提示错误“两新密码:“123”次输入的新密码不同”确认新密码:“222”4旧密码:“”修改失败,系统提示错误“旧新密码:“123”密码不能为空”确认新密码:“123”5旧密码:“3”修改失败,系统提示错误“两新密码:“123”次输入的新密码不同”确认新密码:“”6.1.2病历文档书写测试1、删除病历文档用例测试表表6-3删除病历文档用例测试表功能名称删除病历文档前置测试用登录功能完成人邓韩彬例功能点删除病历文档优先级高测试人邓韩彬修改人邓韩彬测试步骤(1)在病历维护界面中点击选择要删除的病历文档(2)点击删除81万方数据 电子科技大学硕士学位论文预期结果删除成功,系统转至更新后的病历维护界面结果列表序列输入参数结果1选择“首次病程记录”,点击删除删除成功,系统转至购物车更新界面,“首程记录”已不存在2、添加病历文档用例测试表6-4添加病历文档用例测试表功能名称添加病历文档前置测试用登录功能完成人邓韩彬例功能点添加病历文档优先级高测试人邓韩彬修改人邓韩彬测试步骤(1)点击患者,添加病历文档(2)弹出窗口中点击编辑病历预期结果(1)添加成功,跳转到病历编辑界面(2)失败,系统依然停留当前界面,并显示错误结果列表序列输入参数结果1在浏览界面中点击患者“张三”对增加成功,跳至编辑病历界面应的图标,点击添加文档,选择“首次病程记录“,弹出窗体中点击编辑3、修改病历属性表6-5添加修改病历属性用例测试表功能名称修改病历属性82万方数据 第六章系统功能测试前置测试用登录功能完成人邓韩彬例功能点修改一个病历的名称优先级高测试人邓韩彬修改人邓韩彬测试步骤(1)点击一份病历文档,点击修改(2)点击保存预期结果(1)修改,弹出病历属性界面,填写新的病历名称,保存,名称改变(2)失败,系统依然停留在病历维护界面,并显示错误结果列表序列输入参数结果1病历名称:首次病程记录11修改成功,显示新的病历名称2病历名称:““修改失败,系统提示病历标题不能为空4、编辑文档用例测试表表6-6编辑文档用例测试表功能名称病历编辑前置测试用登录功能完成人邓韩彬例功能点病历编辑优先级高测试人邓韩彬修改人邓韩彬测试步骤(1)打开需编辑的文档(2)书写自由文本、选择数据元值、添加表格、调整表格属性。。。(3)保存预期结果修改成功,系统回到病历编辑界面修改失败,系统提示错误信息结果列表83万方数据 电子科技大学硕士学位论文序列输入参数结果1输入自由文本,保存成功,系统回到病历书写界面2选择多个数据元值,保存成功,系统回到病历书写界面3删除数据元,保存成功,系统回到病历书写界面4添加表格,并在表格内添加信息,成功,系统回到病历书写界面保存5删除部分内容,保存成功,系统回到病历书写界面6修改病历内容字体,保存成功,系统回到病历书写界面7点打印成功,文档发送到打印机8点打印预览成功,显示预览窗口9插入多个数据元,选择值,保存成功,系统回到病历书写界面10插入图片,保存成功,系统回到病历书写界面11插入文档段,保存成功,系统回到病历书写界面12页眉页脚添加信息,保存成功,系统回到病历书写界面13插入页码,保存成功,每页页脚都有页码14修改部分内容直接关闭窗体提示是否保存,保存后回到病历维护界面15复制部分内容,粘贴,保存成功,系统回到病历书写界面除了以上测试外,还有病案首页填写,体温单填写,数据元增删改等操作需测试,测试步骤和以上的测试都基本类似,不赘述。6.2测试结论[67][68][69]经过单元测试、环境测试、集成测试、系统测试几个步骤,系统的安全性得到了保障,业务数据的输入合法性也得到了保障,提示信息适中,界面友好,操作相对简单。系统测试结果良好。84万方数据 第七章总结与展望第七章总结与展望7.1总结实现结构化电子病历系统的意义在于突破传统手工纸质病历模式,电子病历具有书写快捷、节省纸张、检索方便、统计全面、共享性好、存储量大等特点,将给医院用户带来巨大的经济效益和科研支撑,促进医疗信息化发展。电子病历的应用在医院信息管理领域中占有举足轻重的地位,它是构建数字化医院的核心。电子病历的应用推广已成为必然趋势,具有广阔的发展前景。电子病历不但可以协助医务人员开展临床工作,而且有利于进行教学、科研。实现电子病历在带给我们崭新的医疗模式、先进的管理理念的同时,也将对医疗质量的提高,减少医疗事故和医疗纠纷的发生,进一步提供医疗服务质量和服务效率,规范医疗行为起到有力的推动作用。本文开发的系统主要构建在.NET体系架构之上,充分利用WCFServices、SOA架构模式以及C#语言特性,而研究和设计出的电子病历系统方案。该系统是BD医院信息化系统平台的一个重要子系统,在加快医院数字化发展方面将起到积极的作用。此平台还将在基础HIS、后勤物资管理、无线查房、全成本核算等模块做更多尝试,为医院提供更全面的业务全覆盖的信息化系统平台。本文主要进行了以下的研究工作:1、通过对电子病历系统的背景、意义,以及国内外发展现状的研究,分析电子病历系统的需求,并仔细分析了当前几种电子病历系统的优缺点,并将采用的技术系统运用在建设的项目中。2、研究了本电子病历系统的开发构架,提出了采用基于.NETWCFServices的基于SOA的多层架构实现了电子病历系统的快速开发,使用该框架可以使系统的灵活性更高、更便于维护,对今后的BD-HRP系统平台的开发有借鉴作用。3、结合了具体的电子病历系统,确定系统的框架和总体设计。对BD-HRP系统平台所涉及的各大模块进行了细致的研究和解析。对各大模块的一些功能需求和设计都有全面的分析及定义。85万方数据 电子科技大学硕士学位论文4、本研究课题属于应用研究,研究方法是理论联系实际,总结实际软件工程项目开发的实践经验,上升到理论高度,阐述上述几个方面问题的基本理论和实现方案,主要是提出从医疗信息化实际情况出发,运用先进的信息技术建立电子电子病历。7.2展望在不断的应用和开发电子病历系统的过程中,构建以诊疗为核心的数字化医院不少的难点已逐渐的显现出来。本课题虽然取得了一定的成果,但由于水平和时间的限制,随着对电子病历系统理解的深入,还需要以下的努力和探索:1、从架构上来说,尽管架构可以快速便捷地实现了电子病历系统的应用,并采用了一些技术对架构的性能进行了优化,但在更为多样化的应用环境下,系统各方面的综合性能将是我要面临的一个重大问题。2、本课题下阶段研究的重点就在于提高整个应用系统的网络安全性能。数据安全是指数据传输和保存过程中存在的各种不安全因素,包括数据保存到数据库、数据网络传输、容灾备份、防攻击等方面的安全问题。下阶段将继续坚持研究,从硬件层面、软件层面、应用层面等各个不同角度出发,使得安全问题能得到更好的解决。86万方数据 致谢致谢本论文是对我攻读硕士期间所做研究工作的总结,在此我向所有帮助、关心过我的老师、同学、家人和朋友致以最真诚的感谢!首先,我要衷心地感谢我的导师陈雷霆院长,陈院长知识渊博,治学态度严谨,为人平易近人,在这两年的时间里,陈院长在我的学习过程中提供了悉心的指导,在生活中给予了无微不至的关怀。在陈老师的指导帮助下,使我的研究生生活变得异常的丰富多彩,不仅丰富了我的专业知识与交际能力,还培养了我提出问题并解决问题的实际动手能力,这些都将给我日后的工作与学习带来极大的帮助。在此,我向我最尊敬的老师陈雷霆教授献上我最深的谢意与感激!其次要感谢我的企业导师刘营研究员,刘营研究员是四川省计算机研究院院长,知识丰富,不论是在工作中还是生活中都给予我极大的帮忙,使我能够全身心参与该项目的开发。在此,向敬爱的的刘营院长表示衷心的感谢和崇高的敬意。然后我要感谢闵凡老师、谢娟老师在我整个课题的研究过程中,给予我的专业知识上面极大的指导与帮助。再次,我还要感谢智能仪器研究室的刘辉副主任,蒙俊甫同志,罗周军同志,他们在我课题的研究过程中,给予了我热心的帮助、良好的学习氛围,并给我留下了许多珍贵的美好回忆。在此,我向他们表示诚挚的谢意!同时,我还要感谢我的家人和朋友。这么多年来,正是他们给予了我精神上和物质上的关怀与支持,使我能够专注于研究和学习,顺利地完成我的学业。最后,我要衷心地感谢为评阅本论文而付出辛勤劳动的各位专家教授!87万方数据 电子科技大学硕士学位论文参考文献[1]Computer-basedPatientRecordDescriptionofContent.http://www.cpri.org[2]HIMSSElectronicHealthRecordDefinitionalModelVersion1.1[3]ISO/TC215TechnicalReport:ElectronicHealthRecordDefinition,Scope,andContext[4]ElectronicMedicalRecordsvs.ElectronicHealthRecords:Yes,ThereisaDifference”,AHIMSSAnalyticswhitepaper,UpdatedJanuary26,2006[5]Gartner,AnInteroperabilityRoadMapfortheComputer-basedPatientRecordSystem,2005[6]CIOResultsFinalReport,2007HIMSSLeadershipSurvey,April10,2007[7]NHS,“InformationforHealth-AnInformationStrategyforModernNHS1998-2005”,http://www.dh.gov.uk/assetRoot/04/01/44/69/04014469.pdf[8]http://www.connectingforhealth.nhs.uk.[9]http://www.chime.ucl.ac.uk/work-areas/ehrs/GEHR/[10]MichioKimura,“EHRinJapan,-Recentgovernmentactivities”,http://www.apami.org/apami2006/program.htm#1029ap[11]YoonKim,“NationalInformationNetworkDevelopmentinKorea”,http://www.apami.org/apami2006/program.htm#1029ap[12]中国医院协会信息管理专业委员会.2005年度中国医院信息化状况调查.2006.12[13]卫生部.居民健康档案基本框架和基本数据元.2009.8[14]卫生部.电子病历基本框架与数据元标准(试行).2009.8[15]四川省卫生厅.四川省医院信息系统基本功能规范(试行).2010.7[16]卫生部.基于健康档案的区域卫生信息平台建设技术解决方案(试行).2009.12[17]徐勇等.关于电子病历框架标准需求.第四军医大学.2009.5[18]尚彤,覃璞,张其鹏.HL7消息开发框架(MDF)简介.2005.6[19]刘保延,张红,倪皖东.试论中医电子病历系统及其特殊性[J].医学信息.2004.9.[20]赵刚,李刚荣,方勇飞,邱全光.中医专家系统的研发与电子处方应用[J].中国数字医学.2007.5.88万方数据 参考文献[21]吕玉波,梁志伟,杨志敏,等.从临床诊疗术语发现诊疗规律的方法学研究[J].广州中医药大学学报,2006,23(2):179-182.[22]赵士洁.中医电子处方大力推进传统中医信息化进程[J].中国数字医学.2010.10.[23]黄瑞平,任建航,唐维等.计算机网络在医院中药房、中药库、中医电子处方中的应用[J].中国药房.2001.12.[24]JeffreyRichter.Microsoft.NET框架程序设计(修订版)[M].清华大学出版社.2003.11[25]MartinFowler.侯捷,节译.重构:改善既有代码的设计(中文版)[J].中国电力出版社.2003.9[26]RobertC.Martin.邓辉译.敏捷软件开发:原则、模式与实践[M].清华大学出版社.2003.9.[27]StephenWalther.谭振林,黎志,朱兴林,马士杰译.ASP.NET2.0揭秘[M].人民邮电出版社.2007.10.[28]PatrickSmacchia.施凡,李永伦,谭颖华,徐宁译.C#和.NET2.0实战:平台、语言与框架[M].人民邮电出版社.2008.1.[29]MartinFowler.企业应用架构模式[J].机械工业出版社.2004.7[30]KrzysztofCwalina,BradAbrams.NET设计规范——.NET约定、惯用法与模式[M].人民邮电出版社.2006.7.[31]ErichGamma,RichardHelm,RalphJohnson,JohnVlissides.设计模式:可复用面向对象软件的基础[J].机械工业出版社.2004.9.[32]恰坡(Chappell,D.)著,荣耀译.NET大局观(第2版).[M]电子工业出版社.2006.9[33]里伯提(Liberty.J.)著,刘基诚,李愈胜,刘卫卫译.ProgrammingC#中文版(第4版[M].电子工业出版社.2007.10.[34]KarliWatsonChristianNagel等著.C#入门经典(第3版)[M].清华大学出版社.2006.5.[35]瑞奇特(Richter,J.)著,周靖,张杰良译.框架设计(第2版):CLRViaC#[J].清华大学出版社.2006.11.[36]里克特著,李建忠译..NET框架程序设计(修订版)——微软.NET程序员系列[M].清华大学出版社.2003.11.89万方数据 电子科技大学硕士学位论文[37]芭可,帕尔默著,韩磊,戴飞译.BeginningC#Objects中文版——概念到代码[M].电子工业出版社.2006.6.[38]麦斯科(Metsker,S.J.)著.C#设计模式[M].中国电力出版社.2006.7.[39]麦斯科著,颜炯译.C#设计模式——开发大师系列[M].中国电力出版社2005.7.[40]托马斯等著,陈伟柱,陶文译.单元测试之道C#版:使用NUnit——程序员修炼三部曲[M].电子工业出版社.2005.1.[41]伯克斯,赛欧司编著,张晓坤译..NET本质论--第1卷:公共语言运行库(中文版)[M].中国电力出版社.2004.4.[42]姚(Yao,Y.),杜朗(Durant,D.)著,刘新军,盛泉,李辛鹤译..NET精简框架程序设计:C#版[M].电子工业出版社.2006.6.[43]罗宾逊,内格尔著,李敏波译.C#高级编程(第3版)[M].清华大学出版社.2005.6.[44]佩特佐德(Petzold,C.)著,天宏工作室译.MicrosoftC#Windows程序设计[M].北京大学出版社.2002.9.[45]侯姆,克鲁格,斯普达著,薛兴涛,袁勤勇译.C#软件项目开发全程剖析[M].清华大学出版社.2003.8.[46]ChrisSells著,荣耀,蒋贤哲译.WindowsForms程序设计[M].人民邮电出版社.2004.9.[47]金新政等著.医院管理信息系统[J].人民卫生出版社.1998.7.[48]盛平等著.医院信息管理系统分析与设计[J].浙江大学学报.2000.12.[49]邝孔武主编.信息系统分析与设计[J].清华大学出版社.2005.7.[50]薛华成主编.管理信息系统(第三版)[J].清华大学出版社.2001.4[51]万志红范千云.电子病历系统[J].中国也要卫生信息.2002.15(1):246-250.[52]薛万国。我国电子病历研究进展[J].中国医院管理.2005,25(1):17-19.[53]詹晶晶,倪子伟.基于Ajax引擎的数据异步传输模式的构建和实现[J].咸阳师范学院学报.2006,21(6):37-40[54]孙伟,王蔚.基于Ajax的富客户端技术研究与应用[J].甘肃科技.2007,23(12):42-43.[55]中国医院协会信息管理专业委员会.最新中国医院信息化调查报告[J].中国医院协会,2007[56]陈浩,王敏.新技术在电子病历中的应用[J].中国医药卫生信息.2002.11(1):256-259.[57]李彦,韩光林,李玉波.SQLServer完全自学手册M].电子工业出版社.200790万方数据 参考文献[58]萨师煊,王珊.数据库系统概论(第三版)[M].高等教育出版社.2005[59]宋国柱,杨怀卿,赵圣隆.MySQL数据库在域名系统中的应用及实现[J].微计算机应用,2010.[60]谢龙飞.浅谈MySQL的安全机制[J].技术与市场,2010.[61]巩康.JDBC,MySQL和JDBCProxy联合实现Java数据库[J].电脑编辑技巧与维护,2010.[62]厉建心,司青燕.论MySQL开源数据库在中小企业的应用[J].商业现代化,2009,(1).[63]赵宸.浅析黑盒测试与白盒测试[J].硅谷,SiliconValley.2010.[64]淡艳.如何设计黑盒测试的测试用例[J].成都教育学院学报,2005.[65]洪新峰.浅谈白盒测试技术[J].电脑知识与技术,2010,(11).[66]苟英.白盒测试[J].科技资讯,Science&TechnologyInformation,2010,(10).[67]张克宏.基于规则的面向对象单元测试研究[J].电脑知识与技术,2010,(8).[68]周燕,宋敬华.面向对象的集成测试顺序的研究[J].计算机测量与控制,2010.[69]杨春英.WEB系统测试的应用与研究[J].信息与电脑(理论版),2010.91万方数据 电子科技大学硕士学位论文附录一:app.config和服务配置文件92万方数据 附录一app.config和配置服务文件93万方数据 电子科技大学硕士学位论文服务的配置文件如下:94万方数据 附录一app.config和配置服务文件95万方数据 电子科技大学硕士学位论文96万方数据 附录一app.config和配置服务文件97万方数据 电子科技大学硕士学位论文附录二:SQL实体对象源代码usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Runtime.Serialization;usingxHRP.Common;usingSystem.Data;usingSystem.Data.Common;usingSystem.Data.SqlClient;usingMicrosoft.Practices.EnterpriseLibrary.Data;usingxHRP.Entity.EMR;namespacexHRP.ClassLibrary.EMR.DAO{//////SummarydescriptionforDataElement///publicclassDataElementDAO:DAObase{publicDataElementDAO():base(){////TODO:Addconstructorlogichere//this.TableName="EMR.DataElement";}protectedoverridestringGetInsertSql()98万方数据 附录二SQL实体对象代码{stringinsertSql=@"INSERTINTO"+this.TableName+@"(DEID,DEName,DECaption,DECode,PYCode,WBCode,ValueType,ValueFormat,ValueSourceType,ValueSource,ChooseType,DefaultValueText,SexLimited,isSync,SyncCode,isComposite,isStandardDE,DEType,DefaultValue)VALUES(@DEID,@DEName,@DECaption,@DECode,@PYCode,@WBCode,@ValueType,@ValueFormat,@ValueSourceType,@ValueSource,@ChooseType,@DefaultValueText,@SexLimited,@isSync,@SyncCode,@isComposite,@isStandardDE,@DEType,@DefaultValue)";returninsertSql;}protectedoverridestringGetUpdateSql(){stringupdateSql=@"UPDATE"+this.TableName+@"SETDEID=@DEID,DEName=@DEName,DECaption=@DECaption,DECode=@DECode,PYCode=@PYCode,WBCode=@WBCode,ValueType=@ValueType,ValueFormat=@ValueFormat,ValueSourceType=@ValueSourceType,ValueSource=@ValueSource,ChooseType=@ChooseType,DefaultValueText=@DefaultValueText,SexLimited=@SexLimited,isSync=@isSync,SyncCode=@SyncCode,isComposite=@isComposite,isStandardDE=@isStandardDE,DEType=@DEType,DefaultValue=@DefaultValueWHEREDEID=@DEID";returnupdateSql;}protectedoverridestringGetSelectSql(){stringselectSql=@"SELECT*FROM"+this.TableName+@"WHEREDEID=@DEID";returnselectSql;99万方数据 电子科技大学硕士学位论文}protectedoverridestringGetDeleteSql(){stringdeleteSql=@"DELETEFROM"+this.TableName+@"WHEREDEID=@DEID";returndeleteSql;}protectedoverrideSqlParameter[]GetParameters(DataElementdataElement){SqlParameter[]parameters=newSqlParameter[19];parameters[0]=xHRP.Common.Common.GetSqlParameter("@DEID",SqlDbType.UniqueIdentifier,dataElement.Deid);parameters[1]=xHRP.Common.Common.GetSqlParameter("@DEName",SqlDbType.VarChar,dataElement.DEName);parameters[2]=xHRP.Common.Common.GetSqlParameter("@DECaption",SqlDbType.VarChar,dataElement.DECaption);parameters[3]=xHRP.Common.Common.GetSqlParameter("@DECode",SqlDbType.VarChar,dataElement.DECode);parameters[4]=xHRP.Common.Common.GetSqlParameter("@PYCode",SqlDbType.VarChar,dataElement.PYCode);parameters[5]=xHRP.Common.Common.GetSqlParameter("@WBCode",SqlDbType.VarChar,dataElement.WBCode);parameters[6]=xHRP.Common.Common.GetSqlParameter("@ValueType",SqlDbType.VarChar,dataElement.ValueType);100万方数据 附录二SQL实体对象代码parameters[7]=xHRP.Common.Common.GetSqlParameter("@ValueFormat",SqlDbType.VarChar,dataElement.ValueFormat);parameters[8]=xHRP.Common.Common.GetSqlParameter("@ValueSourceType",SqlDbType.TinyInt,dataElement.ValueSourceType);parameters[9]=xHRP.Common.Common.GetSqlParameter("@ValueSource",SqlDbType.VarChar,dataElement.ValueSource);parameters[10]=xHRP.Common.Common.GetSqlParameter("@ChooseType",SqlDbType.TinyInt,dataElement.ChooseType);parameters[11]=xHRP.Common.Common.GetSqlParameter("@DefaultValueText",SqlDbType.NVarChar,dataElement.DefaultValueText);parameters[12]=xHRP.Common.Common.GetSqlParameter("@SexLimited",SqlDbType.TinyInt,dataElement.SexLimited);parameters[13]=xHRP.Common.Common.GetSqlParameter("@isSync",SqlDbType.Bit,dataElement.IsSync);parameters[14]=xHRP.Common.Common.GetSqlParameter("@SyncCode",SqlDbType.VarChar,dataElement.SyncCode);parameters[15]=xHRP.Common.Common.GetSqlParameter("@isComposite",SqlDbType.Bit,dataElement.IsComposite);parameters[16]=xHRP.Common.Common.GetSqlParameter("@isStandardDE",SqlDbType.Bit,dataElement.IsStandardDE);parameters[17]=101万方数据 电子科技大学硕士学位论文xHRP.Common.Common.GetSqlParameter("@DEType",SqlDbType.Bit,dataElement.DEType);parameters[18]=xHRP.Common.Common.GetSqlParameter("@DefaultValue",SqlDbType.VarChar,dataElement.DefaultValue);returnparameters;}}}102万方数据 附录三病历信息表部分源代码附录三:病历信息表部分源代码病历信息表的实现模型源代码EMRInfo.cs:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Runtime.Serialization;namespacexHRP.Entity.EMR{//////SummarydescriptionforEMRInfo///[Serializable]publicpartialclassEMRInfo{privateSystem.Guid_emrid;privateNullable_eMRCatalogID;privatestring_eMRName;privateNullable_inhosPatientID;privatestring_registerNo;privatebool_isDoctor;privatebool_isNurse;privatestring_caseNo;privateint_creatorID;privateDateTime_createDate;privateNullable_lockerID;privateNullable_lockDate;privateint_modifierID;103万方数据 电子科技大学硕士学位论文privateDateTime_modifyDate;privateNullable_shouldFinishDate;privateNullable_finishDate;privateNullable_auditorID;privateNullable_auditDate;privatebyte_sexLimited;privatebool_isDeleted;privateNullable_status;privateNullable_isMerged;privateNullable_remainMark;publicSystem.GuidEmrid{get{return_emrid;}set{_emrid=value;}}publicNullableEMRCatalogID{get{return_eMRCatalogID;}set{_eMRCatalogID=value;}}publicstringEMRName{get{return_eMRName;}set{_eMRName=value;}}publicNullableInhosPatientID{get{return_inhosPatientID;}set{_inhosPatientID=value;}}publicstringRegisterNo104万方数据 附录三病历信息表部分源代码{get{return_registerNo;}set{_registerNo=value;}}publicboolIsDoctor{get{return_isDoctor;}set{_isDoctor=value;}}publicboolIsNurse{get{return_isNurse;}set{_isNurse=value;}}publicstringCaseNo{get{return_caseNo;}set{_caseNo=value;}}publicintCreatorID{get{return_creatorID;}set{_creatorID=value;}}publicDateTimeCreateDate{get{return_createDate;}set{_createDate=value;}}publicNullableLockerID{105万方数据 电子科技大学硕士学位论文get{return_lockerID;}set{_lockerID=value;}}publicNullableLockDate{get{return_lockDate;}set{_lockDate=value;}}publicintModifierID{get{return_modifierID;}set{_modifierID=value;}}publicDateTimeModifyDate{get{return_modifyDate;}set{_modifyDate=value;}}publicNullableShouldFinishDate{get{return_shouldFinishDate;}set{_shouldFinishDate=value;}}publicNullableFinishDate{get{return_finishDate;}set{_finishDate=value;}}publicNullableAuditorID{get{return_auditorID;}106万方数据 附录三病历信息表部分源代码set{_auditorID=value;}}publicNullableAuditDate{get{return_auditDate;}set{_auditDate=value;}}publicbyteSexLimited{get{return_sexLimited;}set{_sexLimited=value;}}publicboolIsDeleted{get{return_isDeleted;}set{_isDeleted=value;}}publicNullableStatus{get{return_status;}set{_status=value;}}publicNullableIsMerged{get{return_isMerged;}set{_isMerged=value;}}publicNullableRemainMark{get{return_remainMark;}set{_remainMark=value;}107万方数据 电子科技大学硕士学位论文}publicEMRInfo(){}}}病历信息表对应的数据操作EMRInfoDao.cs:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Runtime.Serialization;usingxHRP.Common;usingSystem.Data;usingSystem.Data.Common;usingSystem.Data.SqlClient;usingMicrosoft.Practices.EnterpriseLibrary.Data;usingxHRP.Entity.EMR;namespacexHRP.ClassLibrary.EMR.DAO{//////SummarydescriptionforEMTInfo///publicclassEMTInfoDAO:DAObase{publicEMTInfoDAO():base(){////TODO:Addconstructorlogichere//108万方数据 附录三病历信息表部分源代码}protectedoverridestringGetInsertSql(){stringinsertSql=@"INSERTINTOEMR.EMTInfo(EMTID,EMRCatalogID,EMTName,EMTType,isDoctor,isNurse,CreatorID,CreateDate,ModifierID,ModifyDate,SexLimited,OwnerType,OwnerID,isDeleted)VALUES(@EMTID,@EMRCatalogID,@EMTName,@EMTType,@isDoctor,@isNurse,@CreatorID,@CreateDate,@ModifierID,@ModifyDate,@SexLimited,@OwnerType,@OwnerID,@isDeleted)";returninsertSql;}protectedoverridestringGetUpdateSql(){stringupdateSql=@"UPDATEEMR.EMTInfoSETEMTID=@EMTID,EMRCatalogID=@EMRCatalogID,EMTName=@EMTName,EMTType=@EMTType,isDoctor=@isDoctor,isNurse=@isNurse,CreatorID=@CreatorID,CreateDate=@CreateDate,ModifierID=@ModifierID,ModifyDate=@ModifyDate,SexLimited=@SexLimited,OwnerType=@OwnerType,OwnerID=@OwnerID,isDeleted=@isDeletedWHEREEMTID=@EMTID";returnupdateSql;}protectedoverridestringGetSelectSql(){stringselectSql=@"SELECT*FROMEMR.EMTInfoWHEREEMTID=@EMTID";returnselectSql;}protectedoverridestringGetDeleteSql()109万方数据 电子科技大学硕士学位论文{stringdeleteSql=@"DELETEFROMEMR.EMTInfoWHEREEMTID=@EMTID";returndeleteSql;}protectedoverrideSqlParameter[]GetParameters(EMTInfoeMTInfo){SqlParameter[]parameters=newSqlParameter[14];parameters[0]=xHRP.Common.Common.GetSqlParameter("@EMTID",SqlDbType.UniqueIdentifier,eMTInfo.Emtid);if(eMTInfo.EMRCatalogID!=Guid.Empty)parameters[1]=xHRP.Common.Common.GetSqlParameter("@EMRCatalogID",SqlDbType.UniqueIdentifier,eMTInfo.EMRCatalogID);elseparameters[1]=xHRP.Common.Common.GetSqlParameter("@EMRCatalogID",SqlDbType.UniqueIdentifier,DBNull.Value);parameters[2]=xHRP.Common.Common.GetSqlParameter("@EMTName",SqlDbType.NVarChar,eMTInfo.EMTName);parameters[3]=xHRP.Common.Common.GetSqlParameter("@EMTType",SqlDbType.TinyInt,eMTInfo.EMTType);parameters[4]=xHRP.Common.Common.GetSqlParameter("@isDoctor",SqlDbType.Bit,eMTInfo.IsDoctor);parameters[5]=xHRP.Common.Common.GetSqlParameter("@isNurse",SqlDbType.Bit,eMTInfo.IsNurse);parameters[6]=xHRP.Common.Common.GetSqlParameter110万方数据 附录三病历信息表部分源代码("@CreatorID",SqlDbType.Int,eMTInfo.CreatorID);parameters[7]=xHRP.Common.Common.GetSqlParameter("@CreateDate",SqlDbType.SmallDateTime,eMTInfo.CreateDate);parameters[8]=xHRP.Common.Common.GetSqlParameter("@ModifierID",SqlDbType.Int,eMTInfo.ModifierID);parameters[9]=xHRP.Common.Common.GetSqlParameter("@ModifyDate",SqlDbType.DateTime,eMTInfo.ModifyDate);parameters[10]=xHRP.Common.Common.GetSqlParameter("@SexLimited",SqlDbType.TinyInt,eMTInfo.SexLimited);parameters[11]=xHRP.Common.Common.GetSqlParameter("@OwnerType",SqlDbType.TinyInt,eMTInfo.OwnerType);parameters[12]=xHRP.Common.Common.GetSqlParameter("@OwnerID",SqlDbType.Int,eMTInfo.OwnerID);parameters[13]=xHRP.Common.Common.GetSqlParameter("@isDeleted",SqlDbType.Bit,eMTInfo.IsDeleted);returnparameters;}publicintExecuteCRUD(EMTInfoobj,CRUDcmdType){returnExecuteNonQuery(GetCommand(obj,cmdType));}}}111万方数据 电子科技大学硕士学位论文附录四:病案首页源代码//////病案首页到实体//////privateDataRowMRFirstPageToDataRow(){DataRowdr=BLL.InhosMRFirstPage.Get.drMRFirstPage;dr["InhosCode"]=textEditInhosCode.EditValue;if(comboBoxEditMRType.SelectedItem!=null){dr["MRType"]=(comboBoxEditMRType.SelectedItemasxHRP.Client.Common.comboBoxItem).Value;}dr["InhosNo"]=textEditInhosNo.EditValue;if(comboBoxEditPaymentType.SelectedItem!=null){dr["PaymentType"]=(comboBoxEditPaymentType.SelectedItemasxHRP.Client.Common.comboBoxItem).Value;}dr["PatientName"]=textEditPatientName.EditValue;if(comboBoxEditPatientSex.SelectedItem!=null){dr["PatientSex"]=(comboBoxEditPatientSex.SelectedItemasxHRP.Client.Common.comboBoxItem).Value;}dr["Birthday"]=dateEditBirthday.EditValue;dr["Age"]=calcEditAge.EditValue;112万方数据 附录四病案首页部分源代码if(comboBoxEditAgeType.SelectedItem!=null){dr["AgeUnit"]=(comboBoxEditPatientSex.SelectedItemasxHRP.Client.Common.comboBoxItem).Value;}if(comboBoxEditMarriage.SelectedItem!=null){dr["Marriage"]=(comboBoxEditMarriage.SelectedItemasxHRP.Client.Common.comboBoxItem).Value;}if(comboBoxEditJob.SelectedItem!=null){dr["Job"]=(comboBoxEditMarriage.SelectedItemasxHRP.Client.Common.comboBoxItem).Value;}dr["BirthPlace"]=popupContainerEditBirthPlace.Text;dr["Nationality"]=popupContainerEditNationality.Tag==null?DBNull.Value:popupContainerEditNationality.Tag;dr["Citizenship"]=popupContainerEditCitizenship.Tag==null?DBNull.Value:popupContainerEditCitizenship.Tag;dr["IdentityCardNo"]=textEditIdentityCardNo.EditValue;dr["WorkPlace"]=textEditWorkPlace.EditValue;dr["TelephoneNo"]=textEditTelephoneNo.EditValue;dr["WorkPlaceZipcode"]=textEditWorkPlaceZipcode.EditValue;dr["CitizenAddress"]=textEditCitizenAddress.EditValue;dr["PaymentSource"]=textEditPaymentSource.EditValue;dr["CitizenZipcode"]=textEditCitizenZipcode.EditValue;dr["Relation"]=textEditRelation.EditValue;if(comboBoxEditRelationship.SelectedItem!=null){dr["Relationship"]=(comboBoxEditRelationship.SelectedItemas113万方数据 电子科技大学硕士学位论文xHRP.Client.Common.comboBoxItem).Value;}dr["RelationAddress"]=textEditRelationAddress.EditValue;dr["RelationPhoneNo"]=textEditRelationPhoneNo.EditValue;if(comboBoxEditInhosState.SelectedItem!=null){dr["InhosState"]=(comboBoxEditInhosState.SelectedItemasxHRP.Client.Common.comboBoxItem).Value;}if(comboBoxEditInhosWay.SelectedItem!=null){dr["InhosWay"]=(comboBoxEditInhosWay.SelectedItemasxHRP.Client.Common.comboBoxItem).Value;}if(comboBoxEditInhosOtherCure.SelectedItem!=null){dr["InhosOtherCure"]=(comboBoxEditInhosOtherCure.SelectedItemasxHRP.Client.Common.comboBoxItem).Value;}dr["InhosDate"]=dateEditInhosDate.EditValue;dr["InhosDepartmentID"]=popupContainerEditInhosDepartment.Tag==null?DBNull.Value:popupContainerEditInhosDepartment.Tag;dr["InhosRoomID"]=popupContainerEditInhosRoom.Tag==null?DBNull.Value:popupContainerEditInhosRoom.Tag;dr["TurnDepartmentID"]=popupContainerEditTurnDepartment.Tag==null?DBNull.Value:popupContainerEditTurnDepartment.Tag;dr["OuthosDate"]=dateEditOuthosDate.EditValue;dr["OuthosDepartmentID"]=popupContainerEditOuthosDepartment.Tag==null?DBNull.Value:popupContainerEditOuthosDepartment.Tag;114万方数据 附录四病案首页部分源代码dr["OuthosRoomID"]=popupContainerEditOuthosRoom.Tag==null?DBNull.Value:popupContainerEditOuthosRoom.Tag;if(comboBoxEditOuthosType.SelectedItem!=null){dr["OutHospitalType"]=(comboBoxEditOuthosType.SelectedItemasxHRP.Client.Common.comboBoxItem).Value;}if(comboBoxEditCureType.SelectedItem!=null){dr["CureType"]=(comboBoxEditCureType.SelectedItemasxHRP.Client.Common.comboBoxItem).Value;}if(comboBoxEditSelfZMed.SelectedItem!=null){dr["SelfZMed"]=(comboBoxEditSelfZMed.SelectedItemasxHRP.Client.Common.comboBoxItem).Value;}if(comboBoxEditDialectics.SelectedItem!=null){dr["Dialectics"]=(comboBoxEditDialectics.SelectedItemasxHRP.Client.Common.comboBoxItem).Value;}//门诊中医病dr["ChineseClinicSickCode"]=popupContainerEditChineseClinicSick.Tag==null?DBNull.Value:popupContainerEditChineseClinicSick.Tag;dr["ChineseClinicSickName"]=popupContainerEditChineseClinicSick.Text;//门诊中医症dr["ChineseClinicZhengCode"]=115万方数据 电子科技大学硕士学位论文popupContainerEditChineseClinicZheng.Tag==null?DBNull.Value:popupContainerEditChineseClinicZheng.Tag;dr["ChineseClinicZhengName"]=popupContainerEditChineseClinicZheng.Text;//门诊ICDdr["ClinicICDName"]=popupContainerEditClinicICDCode.Text;dr["ClinicICDCode"]=popupContainerEditClinicICDCode.Tag==null?DBNull.Value:popupContainerEditClinicICDCode.Tag;//门诊ICD1dr["ClinicICDName1"]=popupContainerEditClinicICDCode1.Text;dr["ClinicICDCode1"]=popupContainerEditClinicICDCode1.Tag==null?DBNull.Value:popupContainerEditClinicICDCode1.Tag;//门诊ICD2dr["ClinicICDName2"]=popupContainerEditClinicICDCode2.Text;dr["ClinicICDCode2"]=popupContainerEditClinicICDCode2.Tag==null?DBNull.Value:popupContainerEditClinicICDCode2.Tag;//住院中医病dr["ChineseSickCode"]=popupContainerEditChineseSick.Tag==null?DBNull.Value:popupContainerEditChineseSick.Tag;dr["ChineseSickName"]=popupContainerEditChineseSick.Text;//住院中医症dr["ChineseZhengCode"]=popupContainerEditChineseZheng.Tag==null?DBNull.Value:popupContainerEditChineseZheng.Tag;dr["ChineseZhengName"]=popupContainerEditChineseZheng.Text;//住院ICDdr["InhosICDName"]=popupContainerEditInhosICDCode.Text;dr["InhosICDCode"]=popupContainerEditInhosICDCode.Tag==null?DBNull.Value:popupContainerEditInhosICDCode.Tag;//住院ICD1dr["InhosICDName1"]=popupContainerEditInhosICDCode1.Text;dr["InhosICDCode1"]=popupContainerEditInhosICDCode1.Tag==116万方数据 附录四病案首页部分源代码null?DBNull.Value:popupContainerEditInhosICDCode1.Tag;//住院ICD2dr["InhosICDName2"]=popupContainerEditInhosICDCode2.Text;dr["InhosICDCode2"]=popupContainerEditInhosICDCode2.Tag==null?DBNull.Value:popupContainerEditInhosICDCode2.Tag;//门诊医师dr["ClinicDoctorID"]=popupContainerEditClinicDoctor.Tag==null?DBNull.Value:popupContainerEditClinicDoctor.Tag;dr["AffirmDate"]=dateEditAffirmDate.EditValue;/*诊断及其它¹*///主任医生dr["DirectorDoctorID"]=popupContainerEditDirectorDoctor.Tag==null?DBNull.Value:popupContainerEditDirectorDoctor.Tag;//主治医生dr["CureDoctorID"]=popupContainerEditMainDoctor.Tag==null?DBNull.Value:popupContainerEditMainDoctor.Tag;//住院医生dr["InhosDoctorID"]=popupContainerEditInHospitalDoctor.Tag==null?DBNull.Value:popupContainerEditInHospitalDoctor.Tag;returndr;}//////实体到病案首页///privatevoidDataRowToMRFirstPage(DataRowdr){textEditInhosCode.EditValue=dr["InhosCode"];comboBoxEditMRType.SelectedItem=newxHRP.Client.Common.comboBoxItem(dr["MRType"],"");textEditInhosNo.EditValue=dr["InhosNo"];labelInhosTimes.Text="第Ì"+dr["InhosTimes"].ToString()+"次117万方数据 电子科技大学硕士学位论文入院";comboBoxEditPaymentType.SelectedItem=newxHRP.Client.Common.comboBoxItem(dr["PaymentType"],"");textEditPatientName.EditValue=dr["PatientName"];comboBoxEditPatientSex.SelectedItem=newxHRP.Client.Common.comboBoxItem(dr["PatientSex"],"");dateEditBirthday.EditValue=dr["Birthday"];calcEditAge.EditValue=dr["Age"];comboBoxEditAgeType.SelectedItem=newxHRP.Client.Common.comboBoxItem(dr["AgeUnit"],"");comboBoxEditMarriage.SelectedItem=newxHRP.Client.Common.comboBoxItem(dr["Marriage"],"");comboBoxEditJob.SelectedItem=newxHRP.Client.Common.comboBoxItem(dr["Job"],"");if(dr!=null&&dr["BirthPlace"]!=DBNull.Value){pcBirthPlace.Active=false;popupContainerEditBirthPlace.Text=dr["BirthPlace"].ToString();pcBirthPlace.Active=true;}if(dr!=null&&dr["Nationality"]!=DBNull.Value&&_dtNationality.Select("Code2='"+dr["Nationality"].ToString()+"'").Length>0){pcNationality.Active=false;popupContainerEditNationality.Text=this._dtNationality.Select("Code2='"+dr["Nationality"].ToString()+"'")[0]["NationalityName"].ToString();popupContainerEditNationality.Tag=dr["Nationality"];pcNationality.Active=true;}if(dr!=null&&dr["Citizenship"]!=DBNull.Value&&118万方数据 附录四病案首页部分源代码_dtCitizenship.Select("Code2='"+dr["Citizenship"].ToString()+"'").Length>0){pcCitizenship.Active=false;popupContainerEditCitizenship.Text=this._dtCitizenship.Select("Code2='"+dr["Citizenship"].ToString()+"'")[0]["CNName"].ToString();popupContainerEditCitizenship.Tag=dr["Citizenship"];pcCitizenship.Active=true;}textEditIdentityCardNo.EditValue=dr["IdentityCardNo"];textEditWorkPlace.EditValue=dr["WorkPlace"];textEditTelephoneNo.EditValue=dr["TelephoneNo"];textEditWorkPlaceZipcode.EditValue=dr["WorkPlaceZipcode"];textEditCitizenAddress.EditValue=dr["CitizenAddress"];textEditPaymentSource.EditValue=dr["PaymentSource"];textEditCitizenZipcode.EditValue=dr["CitizenZipcode"];textEditRelation.EditValue=dr["Relation"];comboBoxEditRelationship.SelectedItem=newxHRP.Client.Common.comboBoxItem(dr["Relationship"],"");textEditRelationAddress.EditValue=dr["RelationAddress"];textEditRelationPhoneNo.EditValue=dr["RelationPhoneNo"];comboBoxEditInhosState.SelectedItem=newxHRP.Client.Common.comboBoxItem(dr["InhosState"],"");comboBoxEditInhosWay.SelectedItem=newxHRP.Client.Common.comboBoxItem(dr["InhosWay"],"");comboBoxEditInhosOtherCure.SelectedItem=newxHRP.Client.Common.comboBoxItem(dr["InhosOtherCure"],"");dateEditInhosDate.EditValue=dr["InhosDate"];if(dr!=null&&dr["InhosDepartmentID"]!=DBNull.Value&&_dtDepartment.Select("DepartmentID='"+dr["InhosDepartmentID"].ToString()+"'").Length>0)119万方数据 电子科技大学硕士学位论文{pcDepartment.Active=false;popupContainerEditInhosDepartment.Text=this._dtDepartment.Select("DepartmentID='"+dr["InhosDepartmentID"].ToString()+"'")[0]["DepartmentName"].ToString();popupContainerEditInhosDepartment.Tag=dr["InhosDepartmentID"];pcDepartment.Active=true;}if(dr!=null&&dr["InhosRoomID"]!=DBNull.Value&&_dtDepartment.Select("DepartmentID='"+dr["InhosRoomID"].ToString()+"'").Length>0){pcDepartment.Active=false;popupContainerEditInhosRoom.Text=this._dtDepartment.Select("DepartmentID='"+dr["InhosRoomID"].ToString()+"'")[0]["DepartmentName"].ToString();popupContainerEditInhosRoom.Tag=dr["InhosRoomID"];pcDepartment.Active=true;}if(dr!=null&&dr["TurnDepartmentID"]!=DBNull.Value&&_dtDepartment.Select("DepartmentID='"+dr["TurnDepartmentID"].ToString()+"'").Length>0){pcDepartment.Active=false;popupContainerEditTurnDepartment.Text=this._dtDepartment.Select("DepartmentID='"+dr["TurnDepartmentID"].ToString()+"'")[0]["DepartmentName"].ToString();popupContainerEditTurnDepartment.Tag=dr["TurnDepartmentID"];pcDepartment.Active=true;120万方数据 附录四病案首页部分源代码}dateEditOuthosDate.EditValue=dr["OuthosDate"];if(dr!=null&&dr["OuthosDepartmentID"]!=DBNull.Value&&_dtDepartment.Select("DepartmentID='"+dr["OuthosDepartmentID"].ToString()+"'").Length>0){pcDepartment.Active=false;popupContainerEditOuthosDepartment.Text=this._dtDepartment.Select("DepartmentID='"+dr["OuthosDepartmentID"].ToString()+"'")[0]["DepartmentName"].ToString();popupContainerEditOuthosDepartment.Tag=dr["OuthosDepartmentID"];pcDepartment.Active=true;}if(dr!=null&&dr["OuthosRoomID"]!=DBNull.Value&&_dtDepartment.Select("DepartmentID='"+dr["OuthosRoomID"].ToString()+"'").Length>0){pcDepartment.Active=false;popupContainerEditOuthosRoom.Text=this._dtDepartment.Select("DepartmentID='"+dr["OuthosRoomID"].ToString()+"'")[0]["DepartmentName"].ToString();popupContainerEditOuthosRoom.Tag=dr["OuthosRoomID"];pcDepartment.Active=true;}if(dr["InhosDate"]!=DBNull.Value&&dr["OuthosDate"]!=DBNull.Value){spinEditDays.EditValue=Convert.ToInt32(xHRP.Client.Common.CommonFunction.CalcDateTimeDiffDays(Convert.ToDateTime(dr["InhosDate"]),Convert.ToDateTime(dr["OuthosDate"])));121万方数据 电子科技大学硕士学位论文}else{spinEditDays.EditValue=null;}comboBoxEditOuthosType.SelectedItem=newxHRP.Client.Common.comboBoxItem(dr["OutHospitalType"],"");comboBoxEditCureType.SelectedItem=newxHRP.Client.Common.comboBoxItem(dr["CureType"],"");comboBoxEditSelfZMed.SelectedItem=newxHRP.Client.Common.comboBoxItem(dr["SelfZMed"],"");comboBoxEditDialectics.SelectedItem=newxHRP.Client.Common.comboBoxItem(dr["Dialectics"],"");//门诊中医病if(dr!=null&&dr["ChineseClinicSickCode"]!=DBNull.Value){pcDiseaseCatalog.Active=false;popupContainerEditChineseClinicSick.Text=dr["ChineseClinicSickName"].ToString();popupContainerEditChineseClinicSick.Tag=dr["ChineseClinicSickCode"];pcDiseaseCatalog.Active=true;}//门诊中医症if(dr!=null&&dr["ChineseClinicZhengCode"]!=DBNull.Value){pcDiseaseCatalog.Active=false;popupContainerEditChineseClinicZheng.Text=dr["ChineseClinicZhengName"].ToString();popupContainerEditChineseClinicZheng.Tag=dr["ChineseClinicZhengCode"];122万方数据 附录四病案首页部分源代码pcDiseaseCatalog.Active=true;}//门诊ICDif(dr!=null&&dr["ClinicICDCode"]!=DBNull.Value){pcDiseaseCatalog.Active=false;popupContainerEditClinicICDCode.Text=dr["ClinicICDName"].ToString();popupContainerEditClinicICDCode.Tag=dr["ClinicICDCode"];pcDiseaseCatalog.Active=true;}//门诊ICD1if(dr!=null&&dr["ClinicICDCode1"]!=DBNull.Value){pcDiseaseCatalog.Active=false;popupContainerEditClinicICDCode1.Text=dr["ClinicICDName1"].ToString();popupContainerEditClinicICDCode1.Tag=dr["ClinicICDCode1"];pcDiseaseCatalog.Active=true;}//门诊ICD2if(dr!=null&&dr["ClinicICDCode2"]!=DBNull.Value){pcDiseaseCatalog.Active=false;popupContainerEditClinicICDCode2.Text=dr["ClinicICDName2"].ToString();popupContainerEditClinicICDCode2.Tag=dr["ClinicICDCode2"];pcDiseaseCatalog.Active=true;}123万方数据

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭