基于JavaWEB技术的云医院HIS系统_挂号模块
基于JavaWEB技术的云医院HIS系统
1.首先要进行门诊挂号,在挂号处登记患者的基本信息、挂号级别、挂号科室及医生,患者缴费之后,打印挂号发票。挂号完成患者就可以到医生站接受看诊服务,对于限号的医生,人数挂满之后,不能再进行挂号。
挂号时输入的信息包括:病历号(自动生成,唯一、必填)、姓名(必填)、性别(必填)、年龄、出生日期(年龄和出生日期填一个,另一个自动计算)、结算类别(必填)、身份证号、家庭住址、挂号级别(必填)、挂号科室(必填)、看诊医生(必填)、是否要病历本(如要单独收费1元)、应收金额(由系统根据挂号的级别及看诊医生,是否要病历本,自动算出)
2.挂号:挂号收费员将患者信息录入后,进行挂号操作,患者状态为“已挂号”。可以被挂号医生查询到。
3.清空:如果想重新输入患者挂号信息,可以清空已输入的内容。
4.更新当前发票号:当系统中发票号与实际发票号不一致时,需要修改系统中当前的发票号,以免实际使用的发票号和系统中记录的发票号不一致。
5.退号:
当患者由于挂错了号或者是挂了号没有看诊,此时可以通过退号的操作来完成取消挂号,退还患者费用后,收回患者发票,同时打印发票收据(也叫冲红发票,相应金额为负值),收费人员把两张发票订在一起,金额相互抵消。
退号流程:输入发票上的病历号,查询显示患者挂号信息。只有“未看诊”状态的挂号记录才可以执行退号操作,点击“退号”按钮,显示应该退换患者的挂号费,退回相应金额后,打印冲红退号票据.
6.缴费:
当患者到医生站看诊后,医生会根据患者病情开立相应的检查、检验或药品等收费项目,该功能主要实现对这些项目进行收费,收费同时同时打印发票。
收费流程:输入患者病历号,自动显示患者挂号信息、该患者未收费状态的项目及预收费总额。点击“收费”按钮,需要录入支付方式,实收金额,系统自动算出找零金额。点击“确认”按钮,收费结束,打印发票。收费结束后,医生站、药房、医技站看到该项目为已收费状态,可以进行药品发放、医技检查/化验登记等。
7.退费:
用于患者交费后,未进行相应项目的消费,需要退费的场景。退费时,要收回患者相应的发票,同时打印冲红发票。
退费流程:通过患者病历号,自动显示患者信息、和所有已开立的项目及当前状态,只有状态为未消费的项目,可以退费。未消费的项目可以退掉全部数量,也可以退掉部分数量。输入结束后,退回患者相应金额,并重打剩余项目的发票,收回患者手中已有的发票。
注:要退费的项目,如果是药品,且患者已领药,必须先到药房退药,如果是非药品(检查、化验、处置、卫材等),必须是未登记的状态,方可退费。
8.发票补打/重打:
发票补打:有些时候,因为打印机缺纸,或其他原因导致的打印机未走纸,发票打印失败。此时,需要为患者进行补打。注意:补打发票前,需要更新当前发票号,以免系统中记录的发票号和实际使用的发票号不一致。
发票重打:有些时候,发票虽然打印成功,但发票上的信息可能有误或者模糊不清,此时需要重打发票。重打发票时,原发票要收回并作废。
9.查询
查询流程:输入患者病历号(必输)、开始时间和结束时间选填。查询该患者的所有收费项目列表,默认按收费时间降序排序。
数据流图
根据系统目标以及功能需求分析,可以画出挂号系统的数据流图。
图3.1 挂号数据流图
图3.2 退号退费数据流图
图3.3缴费数据流图
系统结构图
经过对挂号管理系统的需求进行分析,可以了解到挂号系统的主体功能为五个:病例查询、挂号、退号、缴费、退费。根据各自功能设计出不同的功能模块图,于是用一个页面包含了五个功能模块如图4.1所示。
图4.1 功能结构图
经过对挂号模块的需求进行分析,可以了解到挂号模块的主体内容为五个:输入病人信息、选择挂号科室、选择医生、生成挂号单、交挂号费。
图4.2 挂号功能结构图
经过对退号模块的需求进行分析,可以了解到退号模块的主体内容为五个:病人信息、缴费状态、是否看诊、选择是否退费、打印发票。
图4.3 退号功能结构图
经过对缴费模块的需求进行分析,可以了解到缴费模块的主体内容为五个:病人信息、缴费状态、缴费金额、选择缴费方式、打印发票。
图4.4缴费功能结构图
E-R图
数据库设计是从数据库需求设计到概念设计的一个过程,概要设计包括概要模型到E-R图的转变。挂号系统的逻辑结构设计是挂号流程中实体与实体之间的相互作用关系,而物理结构设计是结合了概念设计和逻辑结构设计的整体过程来实现数据库的设计。概念模型能够让复杂的事物呈现出清晰的逻辑结构,能够满足用户对数据的请求处理,而对于概念模型来说,最有利的工具是E-R图,接下来我将使用E-R图对挂号系统中实体与数据间的联系来进行分析,系统E-R图如图5.1所示。
图5.1 系统实体图
数据字典
数据库物理设计是把一个逻辑结构实施到一个具体的环境,再结合逻辑模型选择一个合理的工作环境,工作环境就是提供数据存储的地方和方法,产生了数据库表。根据挂号系统的需求分析,为本次挂号设计了4张数据表,表5.1列出了所有的数据表清单,分别包括病历信息表(见表5.2)、医生信息表(见表5.3)、发票信息表(见表5.4)、病人基本信息表(见表5.5)、发票张数表(5.6)、挂号单张数表(5.7)。
表5.1 数据清单表
名称 表名
病历信息表 case
医生信息表 doctor
发票信息表 invoice
病人基本信息表 register
发票张数表 invoicenum
挂号单张数表 registernum
用于统计每个病人得相关信息,并打印出来:
表5.2病历信息表
字段 类型 长度 主键 说明
ID varchar 30 是 主键id
CaseNumber varchar 30 否 病历号
RealName varchar 255 否 名字
History varchar 255 否 看病历史
CheckResult varchar 255 否 看诊状态
Gender varchar 255 否 性别
显示医院正在值班的医生的所有信息:
5.3医生信息表
字段 类型 长度 主键 说明
ID varchar 30 是 主键id
Name varchar 30 否 医生名字
Department varchar 255 否 科室
Level varchar 255 否 医生级别
Money varchar 255 否 预约费
Noon varchar 255 否 午别
LeftNumber varchar 255 否 剩下看诊数
用于生成发票信息,可用于来退费:
5.4发票信息表
字段 类型 长度 主键 说明
ID varchar 50 是 主键id
InvoiceNum varchar 50 否 发票号
RegistID varchar 255 否 挂号号
Time varchar 255 否 打印时间
FeeType varchar 255 否 付费类型
Money varchar 255 否 缴费费用
State varchar 255 否 是否缴费
用于生成统计病人信息:
表5.5病人基本信息表
字段 类型 长度 主键 说明
ID varchar 30 是 主键id
CaseNumber varchar 30 否 病历号
RegistID varchar 30 否 挂号号
RealName varchar 255 否 姓名
Gender varchar 255 否 性别
DoctorID int 30 否 医生ID
DeptName varchar 255 否 病类
RegisterID int 30 否 挂号员id
RegistTime varchar 30 否 挂号时间
State varchar 255 否 缴费状态
用于统计发票张数:
表5.6发票张数表
字段 类型 长度 主键 说明
Number varchar 10000 否 统计发票张数
用于统计发票张数:
表5.7挂号单张数表
字段 类型 长度 主键 说明
Number varchar 10000 否 统计挂号单张数
**
数据库
case表:
数据变量说明:
private String ID; //身份证号
private String CaseNumber; //病历号
private String RealName; //姓名
private String History; //病史
private String CheckResult; //检查结果
private String Gender; //性别
图5.2case表
医生doctor表:
数据变量说明:
private String Department; // 科室
private String Level; // 等级
private String Name; // 医生的名字
private String ID; // 身份证号
private String Money; // 挂号费
private String Noon; // 午别
private String LeftNumber; // 医生剩余号数
图5.3 doctor表
发票表invoice:
变量说明:
private String ID; // 患者身份证
private String InvoiceNum; // 发票号码
private String Money; // 发票金额
private String State; // 发票状态
private String Time; // 发票时间
private String RegistID; // 挂号ID
private String FeeType; // 收费方式
图5.4 invoice表
挂号单表(register):
变量说明:
private String ID; // 病人身份证号
private String CaseNumber; // 病历号
private String RegistID; // 挂号ID
private String RealName; // 姓名
private String Gender; // 性别
private String DoctorID; // 本次挂号医生ID
private String DeptName; // 挂号科室名称
private String RegisterID; // 挂号员ID
private String RegistTime; // 挂号时间
private String State; // 缴费状态
private String InvoiceNum; //发票号
图5.5 register表
数据库名称:six
数据库版本:MySQL5.7。
挂号系统的各个数据表之间的映射关系如下所述:
1)挂号员与数据库形成一对多的关系,挂号员可以添加多个病人信息,即生成多个挂号单;
2)挂号单表与缴费表形成一对多的关系,挂号员可以提交多个订单;
3)病人信息表与挂号单表、病例表形成一对多的关系,一个用户可以提交多个订单;
4)挂号单表与病例表形成一对一的关系,一个挂号单只对应一条病例;
5)医生信息表与病人信息表形成一对多的关系,一个医生能够诊断多个病人数据表之间的映射关系有三种,分别是一对一、一对多和多对多,在本挂号系统中,数据表之间的映射主要是一对一和一对多的关系。每张表之间的映射如图5.6所示。
图5.6 各表关系映射图
##主要模块实现
前台首页主要从以下几个模块分析:
(1)挂号模块:包括病人信息、挂号需要选择的科室、医生;
(2)退号模块:通过退号的操作来完成取消挂号,退还患者费用后,收回患者发票,同时打印发票收据;
(3)退费模块:患者交费后,未进行相应项目的消费,需要退费的场景。退费时,要收回患者相应的发票,同时打印冲红发票。
(4)缴费模块:当患者到医生站看诊后,医生会根据患者病情开立相应的检查、检验或药品等收费项目,该功能主要实现对这些项目进行收费,收费同时同时打印发票。
(5)病例查询模块:用于查询患者的病例信息。
图7.1 挂号管理系统首页
7.1.1 挂号模块
挂号员登记患者基本信息,选择挂号科室,选择医生,生成挂号单
如图7.2、7.3所示。
图7.2 生成挂号单详情页
图7.3 挂号详情页
图7.4挂号单样例
图7.5挂号信息查询
7.1.2 退号、退费模块
输入发票上的病历号,查询显示患者挂号信息。只有“未看诊”状态的挂号记录才可以执行退号操作,点击“立即退费”按钮,显示应该退换患者的挂号费,退回相应金额后,打印冲红退号票据
图7.6 退号页面
7.1.3 缴费模块
患者看诊后,医生开印相应的检查,检验以及药品费用。统计收费
图7.7缴费页面
7.1.4 病例查询模块
用于查询病人病情信息查询
图7.8病例查询页面
### 导入
如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。[1]: http://meta.math.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference[2]: https://mermaidjs.github.io/[3]: https://mermaidjs.github.io/[4]: http://adrai.github.io/flowchart.js/