基于SSM的“医院门诊管理系统”的设计与实现(源码+数据库+文档)

  • 开发语言:Java

  • 数据库:MySQL

  • 技术:SSM

  • 工具:IDEA/Ecilpse、Navicat、Maven


系统展示

基于SSM的“医院门诊管理系统”的设计与实现(源码+数据库+文档)-LMLPHP
系统功能模块图

基于SSM的“医院门诊管理系统”的设计与实现(源码+数据库+文档)-LMLPHP
医院门诊管理系统首页页面图

基于SSM的“医院门诊管理系统”的设计与实现(源码+数据库+文档)-LMLPHP
用户登录界面图

基于SSM的“医院门诊管理系统”的设计与实现(源码+数据库+文档)-LMLPHP
管理员用户操作界面图

基于SSM的“医院门诊管理系统”的设计与实现(源码+数据库+文档)-LMLPHP
医生用户操作页面图

基于SSM的“医院门诊管理系统”的设计与实现(源码+数据库+文档)-LMLPHP
预约就医界面图

摘要

在当今的中国新经济体制下,我国的经济水平发展迅速。并且随着我国经济的快速发展,信息化也得到了充分的发展。在这个信息的的潮流之下,随着计算机性能的不断的提高,计算机从之前的一个只有政府或是科研事业才能触及到的信息化产品变为人们工作与生活中不可或缺的必需品并且伴随着国家经济水平与基础设施的不断提升,人们在满足日常温饱基本需求后,日益对更加健康的身体有了更高的追求,越来越多的医疗服务机构服务于人们日常的生活社会之中。例如医院门诊,随时保障着人们的身体健康。

而本医院门诊管理系统的设计与实现选用开发语言为JSP/JAVA,并且数据库采用MySQL,旨在实现门诊挂号、开药、收费、信息汇总处理等多个功能。医院信息管理系统可以在临床科以及门诊部或者其他行政后勤部门等系统共同工作,将用户信息,医生信息以及药品信息,后勤信息等多类信息综合起来管理,以此来进行各类医疗信息的储存和大数据分析。

系统需求分析

医院门诊管理系统的实际用户群体为就医的病人和医院门诊的管理的工作人员,在医院门诊医疗服务的管理工作之中,工作人员每天都需要对一些繁琐大量的数据,并且要进行统计与管理,并且需要对一些信息数据进行手动的记录等操作。这些操作关系到医院医疗服务的合理的分配和病人病例信息的准确的情况,也关系到医院医疗服务发展的内部的管理。并且还要实时的医疗服务信息的共享,可以让就医的病人和管理层实时的查看医疗服务信息和病人的相关的信息的情况。而这一切相关的操作只需要在本系统的查询和统计模块就可以在瞬间完成。对于医院门诊管理系统管理中,本系统有着特定的功能模块,使医生和病人的基本的信息和挂号等信息清晰明了,而且查询方便,使管理的工作人员可以随时使用本系统一键统计医疗服务的各种数据。从而来实现医院门诊医疗服务的信息化管理模式。

研究现状

由于 Internet 的迅猛发展,Web 页面可以给人们呈现出一种优美的,良好的交互页面[13],让人们能够轻松的在网页上进行门诊挂号、开药、收费、信息汇总处理,Web 页面也能实现网上医院门诊的信息管理[11],病人的信息反馈,方便了门诊的管理与病人之间的交流。所以有一个完整的,良好的Web网页是作为医院门诊信息化发展所必须的[12]。而一个完善的医院门诊信息管理系统,必须需要做到以下的几点:

  1. 做好Web页面,给用户良好的交互,使用户在使用中感到轻松便利。

  2. 做好用户的信息管理,方便管理用户的信息,这其中可能包括用户的隐私,需要进一步的保护好,不能泄露。

  3. 将挂号等相关的门诊功能实现完备,尽量保证网上的支付成功,例如支付宝/微信支付。

  4. 完成后台的管理,方便管理员无论是对用户的数据进行保护还是对病人的信息进行整理。

部分源码

public class BaseController {
	public static final Long EXPIRES_IN = 1000 * 3600 * 24 * 1L;// 1天

	@Autowired
	private SystemProperties systemProperties;

	/**
	 * 获得配置文件内容
	 */
	public String getConfig(String key) {
		return systemProperties.getProperties(key);
	}

	/**
	 * 返回服务器地址 like http://192.168.1.1:8441/UUBean/
	 */
	public String getHostUrl(HttpServletRequest request) {
		String hostName = request.getServerName();
		Integer hostPort = request.getServerPort();
		String path = request.getContextPath();

		if (hostPort == 80) {
			return "http://" + hostName + path + "/";
		} else {
			return "http://" + hostName + ":" + hostPort + path + "/";
		}
	}

	/***
	 * 获取当前的website路径 String
	 */
	public static String getWebSite(HttpServletRequest request) {
		String returnUrl = request.getScheme() + "://"
				+ request.getServerName();

		if (request.getServerPort() != 80) {
			returnUrl += ":" + request.getServerPort();
		}

		returnUrl += request.getContextPath();

		return returnUrl;
	}



	/**
	 * 初始化HTTP头.
	 * 
	 * @return HttpHeaders
	 */
	public HttpHeaders initHttpHeaders() {
		HttpHeaders headers = new HttpHeaders();
		MediaType mediaType = new MediaType("text", "html",
				Charset.forName("utf-8"));
		headers.setContentType(mediaType);
		return headers;
	}

	/**
	 * 返回 信息数据
	 * 
	 * @param status
	 * @param msg
	 * @return
	 */
	public ResponseEntity<String> renderMsg(Boolean status, String msg) {
		if (StringUtils.isEmpty(msg)) {
			msg = "";
		}
		String str = "{\"status\":\"" + status + "\",\"msg\":\"" + msg + "\"}";
		ResponseEntity<String> responseEntity = new ResponseEntity<String>(str,
				initHttpHeaders(), HttpStatus.OK);
		return responseEntity;
	}

	/**
	 * 返回obj数据
	 * 
	 * @param status
	 * @param msg
	 * @param obj
	 * @return
	 */
	public ResponseEntity<String> renderData(Boolean status, String msg,
			Object obj) {
		if (StringUtils.isEmpty(msg)) {
			msg = "";
		}
		StringBuffer sb = new StringBuffer();
		sb.append("{");
		sb.append("\"status\":\"" + status + "\",\"msg\":\"" + msg + "\",");
		sb.append("\"data\":" + JacksonJsonUtil.toJson(obj) + "");
		sb.append("}");

		ResponseEntity<String> responseEntity = new ResponseEntity<String>(
				sb.toString(), initHttpHeaders(), HttpStatus.OK);
		return responseEntity;
	}


	/***
	 * 获取IP(如果是多级代理,则得到的是一串IP值)
	 */
	public static String getIpAddr(HttpServletRequest request) {
		String ip = request.getHeader("x-forwarded-for");
		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
			ip = request.getHeader("Proxy-Client-IP");
		}

		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
			ip = request.getHeader("WL-Proxy-Client-IP");
		}

		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
			ip = request.getRemoteAddr();
		}

		if (ip != null && ip.length() > 0) {
			String[] ips = ip.split(",");
			for (int i = 0; i < ips.length; i++) {
				if (!"unknown".equalsIgnoreCase(ips[i])) {
					ip = ips[i];
					break;
				}
			}
		}

		return ip;
	}

	/**
	 * 国际化获得语言内容
	 * 
	 * @param key
	 *            语言key
	 * @param args
	 * @param argsSplit
	 * @param defaultMessage
	 * @param locale
	 * @return
	 */
	public static String getLanguage(String key, String args, String argsSplit,
			String defaultMessage, String locale) {
		String language = "zh";
		String contry = "cn";
		String returnValue = defaultMessage;

		if (!StringUtil.isEmpty(locale)) {
			try {
				String[] localeArray = locale.split("_");
				language = localeArray[0];
				contry = localeArray[1];
			} catch (Exception e) {
			}
		}

		try {
			ResourceBundle resource = ResourceBundle.getBundle("lang.resource",
					new Locale(language, contry));
			returnValue = resource.getString(key);
			if (!StringUtil.isEmpty(args)) {
				String[] argsArray = args.split(argsSplit);
				for (int i = 0; i < argsArray.length; i++) {
					returnValue = returnValue.replace("{" + i + "}",
							argsArray[i]);
				}
			}
		} catch (Exception e) {
		}

		return returnValue;
	}
}

结论

在这段时间的编程与我的论文的编写 的阶段,我的感悟颇多。首先通过本次的程序的编写工作,更大的程度之上把我之前在课堂所学进行了进一步的总结与使用。让我更好的把课堂所学的东西运用到了实际的程序的编写工作之中。更加详细的了解到了在完整的程序编写的过程之中的艰辛和不易。这次也让我更好的了解到了软件整体的编写流程和整体的编写思路,软件的编写不仅要进行代码的编写还需要对软件的需求、后台的业务思路进行详细的研究与制定。在程序完成之后,还要进行全面的测试的工作,

当然,此次设计也存在一定的缺陷,首先是对内容填充的不足,当前系统内加载信息量少,网站运行、后台管理运行都比较顺畅。如果加载了大量的信息,是否还会达到如此快的响应速度,还需要进一步测试才能确定。另外,网站在界面设计方面,美观程度还需要进一步的优化,该网页设计中规中矩,随着社会的不断发展,人们的审美观念也在不断提高,该页面能够吸引用户的进入、或者能够给与用户视觉上的舒适程度还有一定的欠缺,这也是后期需要加强改进的地方。本人计划后期再进一步学习研究html语言,对前端技术进行不断的补充完整。

05-25 12:00