周笑宇
(中国人民解放军联勤保障部队第九六三医院,佳木斯 154002)
对于医院而言,HIS系统的稳定性是不言而喻的,大到临床科室与辅诊科室之间的信息交互系统(如LIS、PACS 等),小到医生对于患者所下的每一条计价处方、每一种耗材等,都需要对HIS 系统进行数据操作。但对于临床科室的耗材、辅诊科室的工作量,却很少有相应的系统进行准确的统计。数据库用户权限的发放、分配及回收,更是困扰着部分数据库管理员。本文旨在对该问题提出一种解决办法,以PowerBuilder9.0 为开发工具,基于Oracle 数据库进行数据表的创建和部署。
开发本系统的目的是实现院内耗材、诊疗项目等的精确统计、辅诊科室工作量的统计、以及对于数据库用户的权限复制和管理,主要包括以下几个部分:①单一科室的某种项目计价情况统计,为系统使用人员提供指定科室的某种耗材或诊疗项目的计价数量及明细;②全院的某种项目计价情况统计,为系统使用人员提供全院某种耗材或诊疗项目的计价数量及明细;③全院科室所有项目计价情况统计,为系统使用人员提供所选时间内,全院所有耗材的计价情况;④辅诊科室工作量统计,为系统使用人员提供指定时间内辅诊科室的总计价收入和所有项目的总项数,并支持将明细导成excel格式的文件;⑤数据库用户权限复制及管理系统,可以将系统中的关键用户的权限复制给新创建的用户或需要更改权限的用户,并支持增加、删除数据库用户。
系统各模块的功能如图1所示。
图1 系统各模块功能
该模块共分为四个部分:科室服务项目统计、科室耗材统计、全院服务项目统计及全院耗材统计。科室服务项目统计及科室耗材统计,可以针对某科室,统计指定时间段内,该科室所计价的服务项目数量,以及该时间段内该科室计价的所有耗材的总数量。全院服务项目统计及全院耗材统计,可以统计指定时间段内,全院所有科室计价的服务项目数量及所有计价耗材的总数量。该功能可以清晰地体现出指定时间段内科室或全院服务项目及耗材方面的工作量,既方便相关科室统计工作量,又方便科室与耗材管理相关科室之间进行账目的核对,也可以辅助院领导或相关科室领导进行决策。
该模块共分为两个部分:辅诊科室年度工作量查询和辅诊科室指定时间段工作量查询。可以针对所有辅诊科室,如检验科、放射科、超声科等科室,进行指定时间内或某年度的工作量统计。该功能可以清晰地体现出单位时间内相应科室进行的所有服务项目数量,并按照数量从高到低的顺序排列,既方便相应科室统计指定时间内的工作量,又可直观地体现出服务项目的开具情况,为辅助院领导及相关科室领导做决策、相关科室数据分析提供有效的支撑。
该模块主要功能分为四个部分:新用户创建、用户角色授权、老用户权限修改以及老用户科室修改。新用户创建,当输入新用户相关的身份信息(用户身份、用户姓名、用户密码)之后,系统会通过自增主键,默认为新用户分配相应的工号,点击保存之后,系统就会在数据库中创建新用户,并对其赋予基本权限;角色授权,当用户未分配任何权限或角色时,可选择现有角色将该角色授予给选择的用户;权限修改,当想修改用户现有权限或角色时,可选择关键用户,将关键用户的所有角色和系统权限一键赋值给当前的用户;科室修改,当老用户因为工作安排等原因调用至其余科室时,该系统可方便地修改用户现有的科室信息并保存。该模块可以极其方便地管理新用户及原有用户,尤其是权限修改功能,可以大大地节约数据库管理者的时间和精力,不用费时费力地考虑原有用户的角色和系统权限的分配,可以为数据库的管理等做出一定的贡献。
本系统采用PowerBuilder9.0 工具开发,基于Oracle 数据库来部署,可方便地布置在win⁃dowsXP 乃至Windows10 等所有主流操作系统上。
PowerBuilder 是美国Sybase 公司研制的一种新型、快速开发工具,该工具基于C/S 架构(客户端-服务器),具有轻量、方便部署、查询速度快、拓展性强、使用简单等优点,广泛地应用于医院、银行等领域。
Oracle是当今世界上应用最广泛的关系型数据库之一,是一种效率高、稳定性强、可靠性好、吞吐量大的数据库。因其特有的安全性和稳定性等优势,被广泛运用在银行、医院、大型企业等领域。
3.2.1 关于数据查询功能数据库的构建
数据库表结构的设计,对于系统的稳定性和可拓展性等是不言而喻的。查询模块在设计之初,主要分为门诊数据和住院数据两个方面的统计,之后再通过编写相应的SQL 语句将门诊数据和住院数据合在一起,体现在程序的数据窗口中。门诊数据通过创建门诊病人诊疗费用项目表,并统计表中的数据即可分析出来,该表由病人就诊日期(patient_visit_date)、收据号(receipt_number)、项目类别(item_class)、项目代码(item_code)、项目名称(item_name)、项目规格(item_spec)、数量(amount)、执行科室(performed_by_dept)等字段组成,其主键为收据号(receipt_number);住院数据通过创建住院病人诊疗费用项目表,并统计表中的数据即可分析出来,该表由病人ID 号(patient_id)、病人本次 住 院 标 识(patient_visit_id)、 项 目 类 别(item_class)、项目代码(item_code)、项目名称(item_name)、项 目 规 格(item_spec)、数 量(amount)、执行科室(performed_by_dept)、住院计价时间(billing_date_time)等字段组成,病人ID 号(patient_id)及 病 人 本 次 住 院 标 识(pa⁃tient_visit_id)作为联合主键。
3.2.2 关于权限管理功能数据库的构建
权限管理对于数据库来说是非常重要的,一旦授予权限过程中出现问题,则会导致不可预计的后果,甚至会严重影响数据库的安全性和用户的正常使用。该功能主要以用户表为核心进行构建,用户表由数据库用户名(user),用户标识(user_id),用户姓名(user_name),用户科室(user_dept)组成,其中数据库用户名(user)为该表的主键。创建好用户后,需要对用户分配相应的科室、工作站、系统使用权限等,所以还需要医院人员信息表来存放相应的信息,该 表 由 科 室 代 码(dept_code)、 人 员 姓 名(user_name)、人员编号(emp_no)、工作类别(user_job)组成,其中人员编号(emp_no)为该表的主键。
数据表创建完毕后,就可以根据设计,进入到具体的编码阶段,该部分以几个模块为例,简要介绍一下系统的设计。
3.3.1 系统与数据库之间的连接
任何数据库相关的系统在使用之前,首要步骤都是与该系统所使用的数据库进行连接。本文通过PowerBuilder 自带的SQLCA 事务对象进行连接数据库,连接数据库时,系统通过读取外部INI 文件的方式来获取数据库的版本(DBMS)、本地数据库名称(ServerName)、用户登录ID(LogId)、用户密码(LogPassword)等关键信息,其中用户登录ID、用户密码待用户在登陆界面输入其用户名和密码之后,系统通过校验后,通过函数将用户登录ID、用户密码写入到配置文件中。
3.3.2 科室执行项目统计的具体实现
创建一个窗口对象(window),之后将所需要的控件拖动到数据窗口中,该功能主要使用了如下几个控件:静态文本控件(StaticText Con⁃trol)、单行编辑控件(SingleLineEdit Control)、按钮控件(CommandButton Control)、数据窗口控件(DataWindow Control),其界面如图2所示。
图2 科室执行项目统计
自动获取时间、以及选择科室和选择项目功能是本模块的特色功能。通过PowerBuilder 自带的RelativeDate()函数获取当前的时间,具体代码如下:
在遇到特殊情况时,如跨月、跨年等场景下,需要对统计日期和结束日期进行特殊处理,本系统通过自定义函数进行处理,确保该日期的准确性。
选择科室和选择项目功能依赖于KeyDown函数,当使用者按照提示在获取文本框焦点后进行按键时,会弹出相应的窗口来选择科室或项目,弹出窗口中的所有科室列表和项目列表均为动态查询获取,当选择科室和服务项目均选择完毕后,在时间不为空的情况下,点击查询则可获取到相关的数据,查询语句具体如下:
另外,点击查询按钮时,数据窗口中也要提取出相应的数据,该功能依赖的是Power⁃Builder 自带的事物对象的实例SQLCA 与后台数据库之间的交互,以及rerieve()函数,具体的实现代码如下:
3.3.3 科室耗材统计功能的具体实现
创建一个窗口对象(window),之后将所需要的控件拖动到数据窗口中,该功能主要使用了如下几个控件:静态文本控件(StaticText Con⁃trol)、单行编辑控件(SingleLineEdit Control)、按钮控件(CommandButton Control)、数据窗口控件(DataWindow Control)、下拉列表控件(Drop⁃DownListBox Control),其界面如图3所示。
图3 科室耗材统计
将结果保存成EXCEL 文件是本模块的特色功能,该功能主要依赖于GetFileSaveName()函数,并通过使用自定义函数,使用户可以看到导出进度,该功能具体代码如下:
当点击查询按钮时,数据窗口则会提取出相应的数据,具体代码如下:
3.3.4 权限管理功能的具体实现
创建一个窗口对象(window),之后将所需要的控件拖动到数据窗口中,该功能主要使用了如下几个控件:静态文本控件(StaticText Con⁃trol)、单行编辑控件(SingleLineEdit Control)、按钮控件(CommandButton Control)、数据窗口控件(DataWindow Control),其界面如图4所示。
图4 权限管理
当用户在用户名文本框中输入相应的用户后,按下回车键,若为已经存在的用户,则会自动获取到当前用户的用户身份、用户姓名、用户单位、创建日期、用户ID 等信息,若用户想更改当前用户的信息,则可以任意选择更改除用户名外的所有其他文本框,之后点击修改按钮即可完成信息修改。若为不存在的用户,则会将创建日期自动置为服务器中的当前日期,同时将用户ID 置为自增序列中的最新值,之后使用者需要手动录入用户身份、用户姓名、用户单位等信息,当完成上述信息的录入后,点击保存按钮,新录入的用户就会创建成功。按下回车键之后,左下角中的权限人员即可显示出来,此时单击想复制的权限人员,即可将该权限人员的所有权限以及角色复制或修改给用户名文本框中输入的用户,该功能的具体代码如下:
本文通过PowerBuilder 与Oracle 数据库的交互实现了该系统的功能,该系统大大地加快了统计部分数据的效率并解决了人员权限分配的问题,下一步需进一步丰富该系统的功能,同时改进现有模块以优化查询效率,进一步提升本院信息化水平。