进入21世纪,计算机技术迅速向着网络化的、集成化方向发展。传统的单机版应用软件正在逐渐退出舞台,取而代之的是支持网络、支持多种数据信息的新一代网络版应用软件,形成了信息化的社会。信息化社会的形成和微电子技术日新月异的发展,对落后低效的办公手段提出了挑战,信息是管理的基础,是进行决策的基本依据。在一个组织里,信息已作为人力、物力、财力之外的第四种资源,占有重要的地位。然而,信息是一种非物质的,有别于基本资源的新形式的资源。信息也是管理的对象,必须进行管理和控制。本基于B2B平台的医疗病历交互系统是将IT技术用于医疗病历信息的管理, 它能够收集与存储学习的档案信息,提供更新与检索学习信息档案的接口;提高工作效率。
本系统是基于JAVA平台开发的一套基于B2B平台的医疗病历交互系统。系统采用Java为编程语言,后台主要采用Spring Boot框架。数据库采用Mysql建立数据之间的转换。论文主要介绍了本课题的开发背景,所要完成的功能和开发的过程。重点的说明了系统设计的重点、设计思想、难点技术和解决方案。
编程语言:Java
数据库 :Mysql
系统架构:B/S
后端框架:SpringBoot
编译工具:idea或者eclipse,jdk1.8,maven
支持定做:java/php/python/android/小程序vue/爬虫/c#/asp.net
5.1 管理员角色
5.1.1 医院管理
管理员可以在医院管理界面对医院信息进行添加,修改,删除,查询操作。医院管理页面的运行结果如图5-1所示:
图5-1医院管理界面
5.1.2 医院注册
管理员可以在医院注册界面对医院信息进行添加,修改,删除,查询操作。医院注册页面的运行结果如图5-2所示:
图5-2 医院注册界面
5.1.3 医院文章
管理员可以在医院文章界面对医院文章进行查看和查询操作。医院文章页面的运行结果如图5-3所示:
图5-3 医院文章界面
5.1.4 医生信息
管理员可以在医生信息界面对医生信息进行查看以及查询操作。医生信息页面的运行结果如图5-3所示:
图5-4 医生信息界面
5.2 用户角色
5.2.1 医院注册
用户可以在医院注册界面对注册医院信息。医院注册页面的运行结果如图5-3所示:
图5-5 医院注册界面
5.2.2 医疗安排
用户可以在医疗安排界面查看医疗安排信息。医疗安排页面的运行结果如图5-3所示:
图5-6 医疗安排界面
5.3 医院角色
5.3.1 院区注册
医院可以在院区注册界面对注册院区信息。院区注册页面的运行结果如图5-3所示:
图5-7 院区注册界面
5.3.2 医院公告
医院可以在医院公告界面对医院公告信息进行添加,修改,删除,查询等操作。医院公告页面的运行结果如图5-3所示:
图5-8 医院公告界面
5.4 医生角色
5.4.1 医院工作人员
医生可以在医院工作人员界面查看医院工作人员人员。医院工作人员页面的运行结果如图5-3所示:
图5-9 医院工作人员界面
5.4.2 病人病历
医生可以在病人病历界面对病人病历信息进行添加,修改,删除,查询等操作。病人病历页面的运行结果如图5-3所示:
图5-10 病人病历界面
package com.controller;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;
import com.entity.BingrenbingliEntity;
import com.entity.view.BingrenbingliView;
import com.service.BingrenbingliService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;
/**
* 病人病历
* 后端接口
* @author
* @email
* @date
*/
@RestController
@RequestMapping("/bingrenbingli")
public class BingrenbingliController {
@Autowired
private BingrenbingliService bingrenbingliService;
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,BingrenbingliEntity bingrenbingli,
HttpServletRequest request){
String tableName = request.getSession().getAttribute("tableName").toString();
if(tableName.equals("yonghu")) {
bingrenbingli.setZhanghao((String)request.getSession().getAttribute("username"));
}
if(tableName.equals("yiyuan")) {
bingrenbingli.setYiyuanbianhao((String)request.getSession().getAttribute("username"));
}
if(tableName.equals("yisheng")) {
bingrenbingli.setYishengzhanghao((String)request.getSession().getAttribute("username"));
}
EntityWrapper<BingrenbingliEntity> ew = new EntityWrapper<BingrenbingliEntity>();
PageUtils page = bingrenbingliService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, bingrenbingli), params), params));
return R.ok().put("data", page);
}
/**
* 前端列表
*/
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,BingrenbingliEntity bingrenbingli, HttpServletRequest request){
EntityWrapper<BingrenbingliEntity> ew = new EntityWrapper<BingrenbingliEntity>();
PageUtils page = bingrenbingliService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, bingrenbingli), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/lists")
public R list( BingrenbingliEntity bingrenbingli){
EntityWrapper<BingrenbingliEntity> ew = new EntityWrapper<BingrenbingliEntity>();
ew.allEq(MPUtil.allEQMapPre( bingrenbingli, "bingrenbingli"));
return R.ok().put("data", bingrenbingliService.selectListView(ew));
}
/**
* 查询
*/
@RequestMapping("/query")
public R query(BingrenbingliEntity bingrenbingli){
EntityWrapper< BingrenbingliEntity> ew = new EntityWrapper< BingrenbingliEntity>();
ew.allEq(MPUtil.allEQMapPre( bingrenbingli, "bingrenbingli"));
BingrenbingliView bingrenbingliView = bingrenbingliService.selectView(ew);
return R.ok("查询病人病历成功").put("data", bingrenbingliView);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
BingrenbingliEntity bingrenbingli = bingrenbingliService.selectById(id);
return R.ok().put("data", bingrenbingli);
}
/**
* 前端详情
*/
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
BingrenbingliEntity bingrenbingli = bingrenbingliService.selectById(id);
return R.ok().put("data", bingrenbingli);
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody BingrenbingliEntity bingrenbingli, HttpServletRequest request){
bingrenbingli.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(bingrenbingli);
bingrenbingliService.insert(bingrenbingli);
return R.ok();
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody BingrenbingliEntity bingrenbingli, HttpServletRequest request){
bingrenbingli.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(bingrenbingli);
bingrenbingliService.insert(bingrenbingli);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody BingrenbingliEntity bingrenbingli, HttpServletRequest request){
//ValidatorUtils.validateEntity(bingrenbingli);
bingrenbingliService.updateById(bingrenbingli);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
bingrenbingliService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
/**
* 提醒接口
*/
@RequestMapping("/remind/{columnName}/{type}")
public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request,
@PathVariable("type") String type,@RequestParam Map<String, Object> map) {
map.put("column", columnName);
map.put("type", type);
if(type.equals("2")) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
Date remindStartDate = null;
Date remindEndDate = null;
if(map.get("remindstart")!=null) {
Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
c.setTime(new Date());
c.add(Calendar.DAY_OF_MONTH,remindStart);
remindStartDate = c.getTime();
map.put("remindstart", sdf.format(remindStartDate));
}
if(map.get("remindend")!=null) {
Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
c.setTime(new Date());
c.add(Calendar.DAY_OF_MONTH,remindEnd);
remindEndDate = c.getTime();
map.put("remindend", sdf.format(remindEndDate));
}
}
Wrapper<BingrenbingliEntity> wrapper = new EntityWrapper<BingrenbingliEntity>();
if(map.get("remindstart")!=null) {
wrapper.ge(columnName, map.get("remindstart"));
}
if(map.get("remindend")!=null) {
wrapper.le(columnName, map.get("remindend"));
}
String tableName = request.getSession().getAttribute("tableName").toString();
if(tableName.equals("yonghu")) {
wrapper.eq("zhanghao", (String)request.getSession().getAttribute("username"));
}
if(tableName.equals("yiyuan")) {
wrapper.eq("yiyuanbianhao", (String)request.getSession().getAttribute("username"));
}
if(tableName.equals("yisheng")) {
wrapper.eq("yishengzhanghao", (String)request.getSession().getAttribute("username"));
}
int count = bingrenbingliService.selectCount(wrapper);
return R.ok().put("count", count);
}
}
目 录
第1章 绪论 5
1.1 选题的依据及意义 5
1.2 国内外现状研究 6
1.3 研究目的 6
第2章 设计技术与开发环境 7
2.1 相关技术介绍 7
2.1.1 B/S模式分析 7
2.1.2 mysql简介 7
2.1.3 Spring Boot 简介 8
2.2 开发环境介绍 8
2.2.1 eclipse简介 8
2.2.2 Tomcat简介 8
第3章 需求分析与可行性分析 9
3.1 需求分析 9
3.1.1 应用需求分析 9
3.1.2 运行需求分析 10
3.1.3 其他需求分析 10
3.2 数据流程分析 11
3.2.1 系统操作流程 11
3.2.2 数据增加流程 11
3.2.3 数据修改流程 12
3.2.4 数据删除流程 13
3.3 可行性研究 14
3.3.1 经济可行性 14
3.3.2 技术可行性 14
3.3.3 运行可行性 14
3.3.4 时间可行性 15
3.3.5 法律可行性 15
第4章 系统设计 15
4.1 系统总体设计 15
4.2 系统开发步骤 17
4.3 概要设计 17
4.4 数据库概念结构设计 17
4.5 数据库逻辑结构设计 19
第5章 系统实现 27
5.1 管理员角色 27
5.1.1 医院管理 27
5.1.2 医院注册 28
5.1.3 医院文章 28
5.1.4 医生信息 29
5.2 用户角色 29
5.2.1 医院注册 29
5.2.2 医疗安排 30
5.3 医院角色 30
5.3.1 院区注册 30
5.3.2 医院公告 31
5.4 医生角色 31
5.4.1 医院工作人员 31
5.4.2 病人病历 32
第6章 程序测试与评价 33
6.1 程序调试 33
6.2 程序的测试 33
6.2.1 测试的重要性及目的 33
6.2.2 测试的步骤 35
6.2.3 测试的主要内容 35
6.2.4 测试用例 37
6.3 系统的特点和优点 38
6.4 系统存在的不足和改进方案 39
6.5 设计收获和心得 40
结论 41
致谢 41
参考文献 42