目录
摘要 1
SUMMARY 2
一、开发背景 4
(一)、当今社会移动医疗的背景 4
(二)、移动医疗系统的参考模型 5
二、系统分析: 5
(一)、需求分析: 6
(二)、可行性分析: 6
三、系统设计 6
四、数据库设计 8
(一)数据库概要设计: 8
(二)、数据表: 11
1、表说明: 11
2、表操作: 12
五、登陆与注册模块设计 13
(一)、注册新用户 13
(二)、会员登陆 13
(三)、算法流程 13
(四)、界面展示 13
六、用户档案管理模块设计 14
(一)、完善用户健康资料 14
(二)、修改资料 14
(三)、病历拍照录入 14
(四)、算法流程 14
(五)、界面展示 15
七、血压测量模块设计 16
八、血糖测量模块设计 19
(一)、血糖测量装置及原理 19
(二)、文本动态显示操作提示 19
(三)、血糖正常值参照说明 19
(四)、算法流程 20
(五)、界面展示 21
九、心脏听诊模块设计 22
(一)、文本动态显示操作提示 22
(二)、心音实时存储 22
(三)、声波模拟 22
(四)、算法流程 22
(五)、界面展示 22
十、系统帮助与支持模块设计 23
(一)、设备使用 23
(二)、发送健康信息到亲情号码 23
(三)、关于软件及系统升级 23
(四)、算法设计 23
(五)、界面展示 24
十一、结论 25
参考文献 26
- 《疯狂Android讲义》李刚 26
- 《蓝牙通信原理与开发应用》 26
- 《Android最新界面设计大全》 26
- 《软件项目工程管理》 26
- 《数据库系统概论 第四版》王珊、萨师煊 26
- 《面向对象的系统分析 第2版》 邵维忠、杨芙清 26
- 《计算机网络 第5版》谢希仁 26
- 《算法分析与设计 第2版》王小东 26
- 《Java程序设计实用教程 第3版》 叶核亚、陈道蓄 26
二、系统分析:
(一)、需求分析:
老年人一直是我们关注的一个弱势群体,随着老龄化人口的日益增长,心脏病、高血压、糖尿病的发病率在老龄化人口中形成了一个固定的模式。更多的子女不能完全留在老人身边对老人身体健康进行实时监护,而我们知道,智能手机基本已经普及了各类人群。目前,市场上也有很多的医疗器械拥有自己的软件及平台,它们的弊端在于功能单一,操作对老年人来说也比较困难,作为子女也不能掌控到老人的实时健康信息。无论是心脏病还是高血压都是一把锋利的刀刃,发病就在一瞬间。那么,我们是不是应该拥有一款基于Android系统能够结合各种医疗器械对老人健康进行实时监听的软件呢?答案是肯定的,老人需要一款能够自主操作,功能齐全的健康手机软件,来给子女反馈自己的健康状态。所以,该需求是直观的,并且是可行的。
(二)、可行性分析:
基本要求:系统的主要功能是对老年人实现血压、血糖测量、心脏听诊和健康信息推送;
项目条件和限制:本项目是宁夏大学学生创新实验项目,最长需要在一年之内完成,提交一份完整Android医疗系统客户端应用程序和一份项目详细说明文档;
项目资费:学校提供资费2500左右用于硬件设备的采购、软件开发、技术资料论文打印、交通补贴等;
团队组织与人员分工:项目开发团队由一名指导老师和多名学生开发人员组成。本项目由一名指导老师进行指导,两名学生具体实施;
该项目实施人员所在的开发团队拥有多类技术开发人员,后期可对该项目进行延伸。
三、系统设计
(一)、系统实现目标:
根据前面所做的系统分析,可以得出,该系统在实施后,应达到以下基本目标:
界面设计友好、美观,方便用户操作;
数据存储安全可靠;
实现对用户血压、血糖、心脏的实时测量,诊断并推送其结论;
引导用户阅读医疗保健常识;
后期易维护、易扩展,操作简单。
(二)、系统功能基本结构:
(三)、程序基本流程图
当用户进入欢迎界面后,直接自动跳转到登陆界面,用户第一次使用必须进行新用户注册,填写基本信息后可以通过用户名和密码进行登陆,如果用户名和密码正确,进入主功能界面,若用户名和密码不正确,则进行提示。进入主功能界面后可以对功能进行选择,如:档案、血压、血糖、听诊、帮助。本文转载自http://www.biyezuopin.vip/onews.asp?id=12558子功能选项卡包括:基本信息、健康信息、电子病历;血压测量、结果诊断、历史血压;血糖测试、结果诊断、历史血糖;心脏听诊、心跳录音、操作说明;使用设备、消息推送、关于软件(版本升级);退出系统。当用户使用完相应的功能后可以点击退出系统按钮进行退出。
package com;import android.app.TabActivity;import android.content.Intent;
import android.os.Bundle;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.TabHost;
import android.widget.TabHost.TabSpec;
import com.AskHelp.SystemHelp;
import com.BloodPressure.BloodPressureActivity;
import com.BloodSugar.BloodSugarActivity;
import com.FileManager.FileManagerActivity;
import com.HeartAuscultation.HeartListen;
import com.geniuseoe.demo.R;/*** 功能描述:将系统的各个功能模块添加在TabHost选项卡中,实现在各选项卡之间手动切换以显示不同模块的内容* * @author 樊俊彬* @Time 2013-09-01* */
@SuppressWarnings("deprecation")
public class MainTabHost extends TabActivity
{private TabHost tabHost;private RadioGroup radioGroup;// Tab选项卡的图标数组private int[] tabIconViewArray ={ R.drawable.tab_icon1, R.drawable.tab_icon2, R.drawable.tab_icon3,R.drawable.tab_icon4, R.drawable.tab_icon5 };// Tab选项卡的文字数组private String[] tabNameTextArray ={ "档案", "血压", "血糖", "听诊", "帮助" };// Tab选项卡中的内容(类)数组private Class[] tabContentClassArray ={ FileManagerActivity.class, BloodPressureActivity.class,BloodSugarActivity.class, HeartListen.class, SystemHelp.class };@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main_tab_host);// 为每一个选项卡设置按钮、图标、文字和内容,将Tab按钮添加进Tab选项卡中tabHost = getTabHost();for (int i = 0; i < tabContentClassArray.length; i++) {TabSpec tabSpec = tabHost.newTabSpec(tabNameTextArray[i]).setIndicator(tabNameTextArray[i]).setContent(getTabItemIntent(i));tabHost.addTab(tabSpec);}initData();}// 对选项卡上的每个按钮进行监听,以实现模块的切换private void initData(){radioGroup = (RadioGroup) findViewById(R.id.main_radiogroup);radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener(){@Overridepublic void onCheckedChanged(RadioGroup group, int checkedId){switch (checkedId){case R.id.RadioButton0:tabHost.setCurrentTabByTag(tabNameTextArray[0]);break;case R.id.RadioButton1:tabHost.setCurrentTabByTag(tabNameTextArray[1]);break;case R.id.RadioButton2:tabHost.setCurrentTabByTag(tabNameTextArray[2]);break;case R.id.RadioButton3:tabHost.setCurrentTabByTag(tabNameTextArray[3]);break;case R.id.RadioButton4:tabHost.setCurrentTabByTag(tabNameTextArray[4]);break;}}});((RadioButton) radioGroup.getChildAt(0)).toggle();}// 给Tab选项卡设置Activity内容,并且将LoginActivity传入的swapUsername数据转让每个Intent携带分发给每个Tab选项private Intent getTabItemIntent(int index){Bundle swapData = new Bundle();swapData.putString("swapUsername", this.getBundleData());Intent intent = new Intent(this, tabContentClassArray[index]);intent.putExtras(swapData);return intent;}// 获取启动该MainTabHostAcitivity的Intent,传入Intent携带的 username数据public String getBundleData(){Intent intent = getIntent();Bundle data = intent.getExtras();String swapData = data.getString("username").toString();return swapData;}
}