基于云计算技术的B/S架构的医院管理系统(简称云HIS),为医疗机构提供标准化的、信息化的、高效可靠的医疗信息管理系统,实现医患事务管理和临床诊疗管理等标准医疗管理信息系统的功能。利用云计算平台的技术优势,建立统一的云HIS、云病历、云PACS、云LIS,有效实现协同门诊、住院、药房药库管理、双向转诊转检、远程会诊诊断及医疗数据共享与交换,解决数据重复采集及信息孤岛等问题,为实现区域协同医疗卫生信息化平台奠定了基础。
一、云 his系统定义
云 his 系统是运用云计算、大数据、物联网等新兴信息技术,按照现代医疗卫生管理要求,在一定区域范围内以数字化形式提供医疗卫生行业数据收集、存储,传递、处理的业务和技术平台,实现区域内医疗卫生信息资源的集中统管、统一调配、按需服务,提供面向居民的健康云服务、面向医疗机构的医疗云服务、面向卫生管理机关的决策管理云服务、面向其它机构的业务协同云服务。
“云”指系统采用云计算的技术和建设模式,具有可扩展、易共享、区域化、易协同、低成本、易维护、体验好的优势。“H”是医疗卫生,由原来医院 (Hospital)到现在的医疗卫生 (Healthcare),拓展了 H的内涵与外延。云 HIS 重新定义了医院信息系统,旨在重建信息架构体系,重构管理服务流程,重造病人服务环境,重塑运维服务方式,实现医疗卫生信息化由局域网医院信息系统向广域网医疗卫生信息系统的转型转变。
云HIS是在一定范围内面向一家或多家医疗机构采用云模式构建的系统,采取模块化设计,组装灵活,纵向可支持医院等级能力提升与跨机构医疗协同,横向可扩展公共卫生与家庭医生服务,接口丰富。
基于云架构的模式,部署于云端,SaaS模式支持多租户。一个区域内的医疗机构可以共用一套软件,节约了建设成本、缩短了实施周期,方便后期维护。一套软件也有利于医疗机构间的信息共享。项目产品非常适合基层医疗机构,并在多家医疗机构得到实际应用,系统运行稳定、响应速度快、界面操作便捷,得到用户的一致好评。
传统的HIS经历了20多年的建设,已经从单机版发展到局域网的版本,更被深入应用到医院的各项业务活动,成为医院必不可缺的基础设施平台,7×24小时不间断地支撑医院运行。因此医院都十分重视信息化建设。随着医改的不断推进和医疗行业的发展,医院系统越来越多、机房越建越大、IT人员却越来越稀缺、资金负担也越来越重,对于一套医院信息化系统的整体建设和运维来说,资源的耗费似乎永远没有尽头。另一方面,医疗IT厂家基本采取项目型建设,软件没有产品化,完全依靠人海战术。要解决这个问题,就必须以云来重新定义HIS,全方位打造新的业态。
一个好的HIS系统,要具有开放性,便于扩展升级,增加新的功能模块,支撑好医院的业务的拓展,而且可以反过来给医院赋能,最终向更多的患者提供更好地服务。
二、本套基于云计算的云医疗信息系统(云HIS)。以SaaS的方式提供服务,系统遵循服务化、模块化原则开发,具有强大的可扩展性,二次开发方便快捷。
系统采用前后端分离架构,前端由Angular语言、JavaScript开发;后端使用Java语言开发。融合B/S版电子病历系统,支持电子病历四级。系统运行稳定、功能齐全,界面布局合理、操作简便。
三、系统功能模块
1、门诊模块
门急诊收费系统主要对就诊卡、预交金、发票等信息进行综合管理的系统。系统支持现金、记账、医保多种收费方式;可进行费用结算、退费处理、收款员结帐与冲销处理、收退病人预交金、打印发票和分门别类的费用明细等;控制第三方付费病人(保险病人)的费用额度,严格的票据管理(发票、收据)。
门诊医生工作站主要支持医生处理门诊记录、检查、检验、诊断、处方、治疗处置、卫生材料、收入院等诊疗活动。利用循证医学,提供辅助诊疗专家系统,适应医疗保险制度的需要。
门诊护士工作站主要是接受医生的指令,对病人进行注射、治疗等诊疗活动。具体主要功能包括:排班及交接班管理、门诊注射静滴皮试登记及计费、病人用药瓶签、巡视卡打、科室消毒药品及耗材请领、具有多种统计查询分析功能。
2、住院模块
住院收费系统主要包括:住院登记,退院,住院收预交金,住院退预交金,住院收费结算;病人医嘱费用信息查询,住院欠费病人查询,住院病人催款单打印,病人一日清单打印,病人结算清单打印;收费员日报,收费员日报汇总,财务预交金账务,财务应收款账务等。
住院医生工作站是协助医生完成病房日常医疗工作的计算机应用程序。其主要任务是处理诊断、处方、检查、检验、治疗处置、护理、卫生材料以及会诊、转科、出院等信息。系统提供医院、科室、医生常用临床项目字典,医嘱模板及相应编辑功能,能协助医生快速完成日常医疗工作。
住院护士工作站是协助病房护士对住院患者完成日常的护理工作的计算机应用程序。
其主要任务是协助护士核对并处理医生下达的长期和临时医嘱,对医嘱执行情况进行管理。同时协助护士完成护理及病区床位管理等日常工作。基本功能包含:床位管理、医嘱处理、护理管理、费用管理等。
3、药房、药库模块
药房管理系统主要是对药房提供的管理系统,对药品批次、药品有效期、药品结存、调拨、药品盘点等信息进行有效管理,同时门诊各业务科室进行合理用药监测,包括处方或医嘱的合理用药审查、药品信息咨询、用药咨询、处方发药、退药等。主要功能包括发药统计、工作量统计、药品库存报警查询、效期报警查询、库存请领等。
药库管理系统主要用于药品信息维护、库存管理、药品调价、盘点结存、药品采购计划以及一些药品信息汇总查询统计等管理。
4、电子病历模块
其主要任务是处理病历书写,病历模版维护及管理病案首页,病历管理,病人信息查询,医嘱管理,病历质控,处方管理,以及会诊、转科、出院等信息,是辅助医生日常工作的中心环节。
5、统计报表模块
门诊收入汇总、住院收入汇总、收费统计报表、收费明细报表、缴款日报、门诊收费汇总、住院科室日志、住院结算汇总、医疗项目统计、检查项目统计、检验项目统计、月末收支汇总、药品进销存统计。
6、系统管理模块
功能包括:机构信息、科室管理、员工管理、角色管理、字典管理、参数设置、报表模板管理、医嘱模板管理。
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class HospitalModule {
private static List<Patient> patientList = new ArrayList<>();
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("请选择操作:1.添加病人 2.查询病人信息 3.退出");
int choice = scanner.nextInt();
if (choice == 1) {
addPatient();
} else if (choice == 2) {
queryPatient();
} else if (choice == 3) {
System.out.println("程序已退出");
break;
} else {
System.out.println("输入有误,请重新输入");
}
}
}
private static void addPatient() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入病人姓名:");
String name = scanner.nextLine();
System.out.println("请输入病人年龄:");
int age = scanner.nextInt();
scanner.nextLine();
System.out.println("请输入病人性别:");
String gender = scanner.nextLine();
System.out.println("请输入病人病情:");
String disease = scanner.nextLine();
Patient patient = new Patient(name, age, gender, disease);
patientList.add(patient);
System.out.println("病人信息已添加成功!");
}
private static void queryPatient() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要查询的病人姓名:");
String name = scanner.nextLine();
Patient patient = findPatientByName(name);
if (patient == null) {
System.out.println("没有找到该病人信息!");
} else {
System.out.println("病人信息如下:");
System.out.println("姓名:" + patient.getName());
System.out.println("年龄:" + patient.getAge());
System.out.println("性别:" + patient.getGender());
System.out.println("病情:" + patient.getDisease());
}
}
private static Patient findPatientByName(String name) {
for (Patient patient : patientList) {
if (patient.getName().equals(name)) {
return patient;
}
}
return null;
}
}
class Patient {
private String name;
private int age;
private String gender;
private String disease;
public Patient(String name, int age, String gender, String disease) {
this.name = name;
this.age = age;
this.gender = gender;
this.disease = disease;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public String getGender() {
return gender;
}
public String getDisease() {
return disease;
}
}