1. 项目概述:家庭医务助手APP的设计初衷
这个项目源于一个真实的痛点场景:去年我表弟深夜突发高烧,全家人翻箱倒柜找体温计时,发现早已没电;想查用药剂量,药品说明书却不知所踪。这种手足无措的经历让我意识到,每个家庭都需要一个数字化的医疗应急助手。
家庭医务助手APP定位为家庭健康管理的一站式解决方案,核心功能模块包括:
- 电子药箱管理(药品有效期提醒、用药记录)
- 症状自检知识库(AI导诊+专业医疗数据库)
- 紧急联系人联动(一键呼叫家庭医生/附近医院)
- 健康数据看板(体温、血压等趋势分析)
2. 技术架构设计
2.1 移动端技术选型
采用混合开发方案:
- 前端框架:Vue.js + Vant组件库
- 跨平台方案:Uni-app(实测编译到Android/iOS代码体积比Flutter小30%)
- 地图组件:高德地图SDK(特别处理了uniapp中map组件的层级问题)
javascript复制// 典型页面结构示例
<template>
<view class="medicine-box">
<amap
:controls="controls"
@complete="onMapComplete"
style="width:100%;height:300px">
</amap>
<van-form @submit="saveMedicine">
<van-field name="medName" label="药品名称" />
<van-datetime-picker type="date" v-model="expireDate" />
</van-form>
</view>
</template>
2.2 后端服务搭建
基于SpringBoot的微服务架构:
java复制@RestController
@RequestMapping("/api/medicine")
public class MedicineController {
@PostMapping("/add")
public Result addMedicine(@Valid @RequestBody MedicineDTO dto) {
// 实现药品添加逻辑
}
@Scheduled(cron = "0 0 9 * * ?")
public void checkExpiration() {
// 每日检查药品过期情况
}
}
数据库设计特别注意了医疗数据的特殊性:
sql复制CREATE TABLE `family_medicine` (
`id` BIGINT PRIMARY KEY,
`user_id` BIGINT NOT NULL COMMENT '关联用户',
`name` VARCHAR(50) NOT NULL COMMENT '药品名',
`expire_date` DATE NOT NULL COMMENT '有效期',
`dose` VARCHAR(100) COMMENT '服用剂量',
`image_url` VARCHAR(255) COMMENT '药品照片',
`is_deleted` TINYINT DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
3. 核心功能实现细节
3.1 药品智能识别
通过OpenCV实现药品包装识别:
python复制def recognize_medicine(image):
# 预处理图像
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 使用模板匹配识别药品特征
result = cv2.matchTemplate(gray, template, cv2.TM_CCOEFF)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
return max_loc
3.2 健康数据同步
采用MQTT协议实现多设备实时同步:
javascript复制// 小程序端订阅体温数据
mqttClient.subscribe('family/+/temperature', (topic, payload) => {
this.tempData = JSON.parse(payload)
})
4. 开发踩坑实录
4.1 安卓权限问题
在AndroidManifest.xml中必须声明这些权限:
xml复制<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.CALL_PHONE" />
4.2 微信小程序限制
遇到的主要障碍和解决方案:
- 视频抓包问题:使用Reqable等工具时需配置CA证书
- 地图组件性能:采用分片加载策略,每屏只渲染可视区域标记点
- 健康证生成:严格遵循平台规范,仅作信息展示用途
5. 项目部署与调试
5.1 远程调试方案
使用ADB over WiFi提高效率:
bash复制adb tcpip 5555
adb connect 192.168.1.100:5555
5.2 性能优化技巧
通过Android Profiler发现的内存问题:
- 图片加载改用Glide.with().load().into()链式调用
- 数据库查询添加LIMIT分页
- 避免在onDraw方法中创建对象
6. 扩展开发建议
- 鸿蒙适配:已验证可用ArkTS重写部分UI组件
- 智能硬件对接:通过蓝牙API连接血压计等设备
- 应急功能增强:添加SOS紧急呼叫快捷方式
这个项目最让我惊喜的是老人们也能快速上手使用。建议开发时多考虑银发族的操作习惯,比如:
- 按钮尺寸不小于48x48dp
- 重要操作提供语音引导
- 颜色对比度至少达到4.5:1
