概述
2016年广东省电子设计竞赛作品:《基于C/S的闭环控制智能药柜系统》 ,获二等奖。
- 官网:https://ursb.me/drug
- 上位机GitHub:https://github.com/airingursb/drug
技术框架
- 前端:Angular2(ionic2)
- 后端:JavaEE(Sturts2 + Hibernate)
- 服务器环境:JDK7 + Tomcat7 + MySQL
- 部署环境:Docker(Ubuntu 系统环境,Docker 虚拟化,Apache 官方 Tomcat7 镜像)
前端架构
简介
框架采用基于 Angular2 的 ionic2 框架(注:ionic 更新较快,开发该项目时版本为 v2 beta32),支持的开发语言为基于 es6 的 typescript,开发过程中所使用的编辑器为 WebStorm (version 16.02)。
调试环境为 Chrome 52,搭配浏览器跨域插件 Allow-Control-Allow-Origin。
模块与功能
主要分为三大模块:病号模块、药品模块、病例模块,对应于 UI tab 栏从左到右每个 tab。
病号模块
注:以下所有 Android 端 Screenshot 取自 Galaxy S5,iOS 端 Screenshot 取自 iPhone 5。
- 能够展示用户的基本信息,包括头像、姓名、简介、手机号。
- 能够通过点击右下角的按钮,可以跳转至添加病号界面
- 能够点击每个病号右侧的黄色小药箱按钮,打开对应病号的所有药箱
Android 端 UI 如图:
iOS 端 UI 如图:
药品模块
- 能够展示药品的基本信息,包括药品照片、药品名、药品所在药柜、药品更新日期、药品状态
- 每个药品右侧的图标表明了药品的状态,如果是黄色警告图标,代表药品环境不达标,如果是红色警告图标,代表药品过期,亟需更新
- 点击每个药品卡片左下角的药柜图标,可以打开相应的药柜
- 点击右上角的添加按钮,可以调转至添加药品界面
Android 端 UI 如图:
iOS 端 UI 如图:
病例模块
- 列表呈现病例信息,包括每条病例对应的病号、药品、开病例的时间
- 左划病例,点击红色叉号按钮,可以删除病例
- 左划病例,点击蓝色钥匙按钮,可以打开对应病例所需药品的药柜
Android 端 UI 如图:
iOS 端 UI 如图:
服务端架构
简介
服务端采用 JavaEE 的框架 Struts2 与 Hibernate,开发语言为 Java,开发所使用的 IDE 为 MyEclipse 2015 CI。数据库选用 MySQL,数据库管理工具使用 PHPAdmin,设计工具使用 MySQLWorkbench。
服务器环境为 JDK7 + Tomcat7 + MySQL5.6,部署于阿里云 ECS 上,操作系统为 Ubuntu。结合国内 Docker 云平台 DaoCloud 使用,采用 Apache 官方 Tomcat7 镜像。
客户端与服务端通信使用 HTTP 协议 GET方式,文本格式为 JSON。
数据字典
药品信息:
- 药品ID
- 药品名称
- 药品对应的柜号
- 药品添加时间
- 药品更新时间
- 药品是否过期
病号信息:
- 病号ID
- 病号姓名
- 病号看病时间
- 病号年龄
- 病号手机号
病例信息:
- 病例ID
- 病号ID
- 药品ID
- 所需药品质量
- 是否取药
- 取药时间
E-R图
接口设计
接口路由配置如下(struts.xml):
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="default" extends="struts-default">
<action name="open_room" class="com.drug.action.OpenRoomAction"></action>
<action name="bad_room" class="com.drug.action.BadRoomAction"></action>
<action name="update_room" class="com.drug.action.UpdateDrugAction"></action>
<action name="patient_room" class="com.drug.action.PatientRoomsAction"></action>
<action name="home_page" class="com.drug.action.HomePageAction"></action>
<action name="drug_page" class="com.drug.action.DrugPageAction"></action>
<action name="case_page" class="com.drug.action.CasePageAction"></action>
<action name="add_patient" class="com.drug.action.AddPatientAction"></action>
<action name="add_drug" class="com.drug.action.AddDrugAction"></action>
<action name="add_case" class="com.drug.action.AddCaseAction"></action>
<action name="want_room" class="com.drug.action.WantRoomAction"></action>
<action name="ask_room" class="com.drug.action.AskRoomAction"></action>
</package>
</struts>
- open_room 接口:开柜接口,用于客户端申请开柜,格式略。
- bad_room 接口:硬件警告接口,用于通知药品过期警告与环境警告,格式如下。
- update_room 接口:更新药柜接口,格式略。
- patient_room 接口:根据病号开柜接口,用户客户端申请通过病号开柜,格式略。
- home_page 接口:首页接口,返回病号列表信息,格式略。
- drug_page 接口:药品页面接口,返回药品列表信息,格式略。
- case_page 接口:病例页面接口,返回病例列表信息,格式略。
- add_patient 接口:添加病号接口,用于客户端添加病号,格式略。
- add_drug 接口:添加药品接口,用于客户端添加药品,格式略。
- add_case 接口:添加病例接口,用于客户端添加病例,格式略。
- want_room 接口:硬件申请开柜接口,用于向硬件端申请开柜的接口,详情如下。
- ask_room 接口:硬件循问接口,用于硬件端轮询服务端是否开柜,详情如下。
这里详细说明硬件端与服务端通信的有关接口的通信格式。
-
过期警报接口(bad_room)
- 接口url:http://localhost:8080/drug/bad_room.action
- 参数:药品id(drugId)
- 返回:status
-
开柜申请接口(want_room)
- 接口url:http://localhost:8080/drug/want_room.action
- 参数:药品id(drugId)
- 返回:status
- 开柜轮询接口(ask_room)
- 接口url:http://localhost:8080/drug/ask_room.action
- 参数:药品id(drugId)
- 返回:status,drugRooms
status:200,OK;500,失败。
drugRooms:字符串数组,申请开柜的柜号。
本文由 Airing 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Dec 8, 2018 at 02:45 am