# MedicalApplicition
湘雅医疗数据 (基于android平台医疗数据采集系统)
[Download APK](https://github.com/sjaiwl/image_folder/blob/master/MedicalApplication.apk)
##项目整体介绍
* 旨在为医生打造医疗数据信息采集平台<br>
* 实现随时随地上传文字,图片,视频,音频等病人记录信息<br>
* 主要功能架构图<br>
<div class='raw'>
<img src='https://github.com/sjaiwl/image_folder/blob/master/MedicalApplication/app.png' height="300px" width="500px" style='border: #f1f1f1 solid 1px'/>
</div>
##项目主体采用fragmentactivity实现fragment切换
* **需要了解fragment工作机制和生命周期<br>**
``` java
mFragments = new Fragment[3];
fragmentManager = getSupportFragmentManager();
mFragments[0] = fragmentManager.findFragmentById(R.id.fragment_main);
mFragments[1] = fragmentManager.findFragmentById(R.id.fragment_file);
mFragments[2] = fragmentManager.findFragmentById(R.id.fragment_mine);
fragmentTransaction = fragmentManager.beginTransaction().hide(mFragments[0]).hide(mFragments[1]).hide(mFragments[2]);
fragmentTransaction.show(mFragments[0]).commit();
```
* **实现效果图<br>**
<div class='row'>
<img src='https://github.com/sjaiwl/image_folder/blob/master/MedicalApplication/mainPage.png' width="250px" style='border: #f1f1f1 solid 1px'/>
<img src='https://github.com/sjaiwl/image_folder/blob/master/MedicalApplication/filePage.png' width="250px" style='border: #f1f1f1 solid 1px'/>
<img src='https://github.com/sjaiwl/image_folder/blob/master/MedicalApplication/minePage.png' width="250px" style='border: #f1f1f1 solid 1px'/>
</div>
###主体中的关键技术
* **首页的listview实现了下拉刷新和点击加载更多功能,在listview中定义刷新和加载的接口,在activity中实现接口。**
``` java
public interface IXListViewListener {
//刷新
public void onRefresh();
//加载更多
public void onLoadMore();
}
```
* **首页获取数据请求,采用Volley框架,获取服务器返回的json数据后,使用fastjson解析。解析是直接使用静态类解析数组数据。**
``` java
private void getData(final int method) { // method=1 重新生成list method=2 增长list
doctor_id = UserInfo.user.getDoctor_id();
String url = Configuration.get_allPatientUrl + "?index="
+ index + "&&doctor_id=" + doctor_id;
RequestQueue mRequestQueue = Volley.newRequestQueue(getActivity());
JsonArrayRequest jar = new JsonArrayRequest(url,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
List<PatientInfo> list = JSON.parseArray(
response.toString(), PatientInfo.class);
if (method == 1) {
patientInfoList.clear();
}
for (int i = 0; i < list.size(); i++) {
patientInfoList.add(list.get(i));
}
if (!patientInfoList.isEmpty()) {
lastActivityId = patientInfoList.get(patientInfoList.size() - 1).getId();
}
if (method == 1) {
stopRefreshLoad();
} else {
stopMoreLoad();
}
mainIndexAdapter.notifyDataSetChanged();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getActivity(), "病人列表获取失败", Toast.LENGTH_SHORT).show();
stopMoreLoad();
}
});
mRequestQueue.add(jar);
}
```
* **文件页面中,主要使用可下拉刷新的ExpandableListView,重写ExpandableListView实现下拉的监听。**
* **我的页面主要就是一个圆形的图片控件,继承MaskedImage实现CircularLoginImage。**
### 对于多媒体数据实时上传
* **调用系统接口,实现视频,音频,图片的拍摄和录制,同时指定文件的保存路径,以便上传后清除缓存。**
* **上传时将媒体文件转换为file文件,采用AsyncHttpClient发送请求,将数据提交到服务器。**
``` java
// /*
// * 上传文件
// */
@SuppressLint("ShowToast")
public void upload(File file, Integer type) {
RequestParams params = new RequestParams();
try {
params.put("doctor_id", UserInfo.user.getDoctor_id().toString());
params.put("suffer_id", patientInfo.getId().toString());
params.put("resource_type", type.toString());
params.put("resource_size", UsedTools.generateFileSize(file));
params.put("resource_category", category);
params.put("resource_url", file);
} catch (IOException e) {
e.printStackTrace();
}
String url = Configuration.newResourceUrl;
AsyncHttpClient client = new AsyncHttpClient();
client.post(url, params, new JsonHttpResponseHandler() {
@SuppressLint("ShowToast")
@Override
public void onSuccess(JSONObject response) {
try {
successResponse = response.get("success").toString();
} catch (JSONException e) {
e.printStackTrace();
}
if (successResponse.equals("1")) {
Toast.makeText(UploadRecord.this, "上传成功", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(UploadRecord.this, "上传失败", Toast.LENGTH_LONG).show();
}
}
@SuppressLint("ShowToast")
@Override
public void onFailure(int statusCode, Header[] headers,
byte[] responseBody, Throwable error) {
Toast.makeText(UploadRecord.this, "网络访问异常,请重试", Toast.LENGTH_LONG).show();
}
});
}
```
* **上传前还会对多媒体数据进行压缩,以减轻服务器的压力。**
### 其他功能
* 短信验证找回密码
* 登录,注册
* 修改个人信息
* 上传和修改头像
* 在线播放上传的视频和音频
### 引用外部jar文件
* [fastjson.jar](https://github.com/sjaiwl/MedicalApplicition/blob/master/app/libs/fastjson.jar)
* [gson-2.1.jar](https://github.com/sjaiwl/MedicalApplicition/blob/master/app/libs/gson-2.1.jar)
* [volley.jar](https://github.com/sjaiwl/MedicalApplicition/blob/master/app/libs/volley.jar)
* [SMSSDK-1.1.9.jar](https://github.com/sjaiwl/MedicalApplicition/blob/master/app/libs/SMSSDK-1.1.9.jar)
赵闪闪168
- 粉丝: 1726
- 资源: 6943
最新资源
- DSPLLC开关电源模块设计资料DSP数字LLC电源源代码原理图软件学习,包含磁件设计、软件设计报告、硬件设计报告、硬件原理、主功率计算书、LLC环路设计、仿真、BOM、使用说明,调试波形等全面且详细
- 新能源整车动力性经济性仿真模型,包含NEDC WLTC CLTC、最大续航里程、匀速续航里程、百公里加速、最高车速、最大爬坡度等工况的仿真,经过多个项目实车验证测试,精确度高
- starccm和Amesim的联合仿真的目的:优势互补,starccm体现 三维维度的热,Amesim体现一维高精度的电池产热以及热管理策略的执行; 2.模型架构:starccm完整体现CAD数模,A
- matlab 魔术公式轮胎动力学仿真模型,可以获得不同轮胎纵向力和滑动率之间的关系,以及不同轮胎侧向力纵向力和侧偏角之间的关系
- 同步降压式单片DC-DC电源芯片 1.6V-6.3V宽输入电压 500K开关频率 最大6A输出电流 软启动、过温保护、过流保护、欠压保护 适合初学者入门学习 带版图 不带版图
- 1d人工势场法路径规划matlab代码 自己手写的人工势场法路径规划matlab代码,通过设定目标点和起始点,人工势场法进行路径规划,机械臂末端按照规划好的路径移动 通过修改参数可实现最佳配置
- 新能源控制器,多峰值mppt寻优仿真模型,传统扰动电导等寻优无法用在局部遮阴下,而粒子群pso算法克服了这个问题,可用于自行研究 压缩包附带使用说明及解析文档,包括传统扰动与粒子群算法模型
- 二阶系统模糊PID控制 仿真效果如图所示
- 纯电动汽车仿真、纯电动公交、纯电动客车、纯电动汽车动力性仿真、经济性仿真 模型包括电机、电池、车辆模型 有两种模型2选1: 1 完全用matlab simulink搭建的模型 2用simscap
- 双向DC DC磷酸铁锂蓄电池充放电储能matlab simulink仿真模型,采用双闭环控制,充放电电流,电压和功率均可控,电流为负则充电,电流为正则放电,可以控制电流实现充放电 (1)完整复现文献
- 217581163859991综合练习-案例源码(参考).zip
- 含多种需求响应及电动汽车的微网 电厂日前优化调度3 关键词:需求响应 空调负荷 电动汽车 微网优化调度 电厂调度 参考文档:《计及电动汽车和需求响应的多类电力市场下电厂竞标模型》参考其电动汽车
- SAR ADC 10bit 100M采样时钟 转速率50M s ENOB 9.8bit gpdk 45nm cadence 管方学习教程电路 两百多页文档 电路包括但不限于:栅压自举开关 CDA
- 多功能关机小助手V1.3版本
- 视觉检测框架,已经写好了框架,适用于各种产品检测场景,只需更图像处理算法即可
- 用123D design建模做的古代马车
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈