# hanyiModule
**Repository Path**: phpstudy_poi/hanyi-module
## Basic Information
- **Project Name**: hanyiModule
- **Description**: 瀚亿功能模块封装,方便后续多个设备使用,如自助机,问卷筛查,通用设备监测
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-08-14
- **Last Updated**: 2026-08-11
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# hanyi 医疗健康设备集成与动态问卷渲染模块
## 项目简介
hanyi 是一个基于 Flutter 的通用医疗健康设备集成与动态问卷渲染模块。由于涉及 APP 及自助机终端应用,抽离通用页面以便于集中维护和复用。本模块主要包含两大核心功能:蓝牙医疗设备接入层和动态问卷渲染引擎,同时提供语音播放、Toast 提示、瀑布流布局等辅助功能。
## 核心功能
### 蓝牙设备接入层(lib/devices/)
支持多种医疗健康检测设备的蓝牙连接与数据交互,采用分层设计,便于扩展新设备驱动。
#### 支持的设备类型
- **血压计**:包括博莱宝特(baolaite)、博朗(bioland)、CbP(cbp)、Lintemed(lintemed)、MbB(mbb)、 Sino(sino)等品牌
- **血糖仪**:包括爱克(aike)、博朗(prodoctor)、 Sino(Sino)、华益精点(sino_wl)、SLX120(sino_slx120)等品牌
- **血氧仪**:包括博莱宝特(baolaite)、Choice(choice)、Mmed(choice/med)等品牌
- **体温计**:蓝牙体温计(blt)设备
- **体重秤**:体脂秤(tizhong),支持 BMI 和人体成分分析数据
- **尿酸检测仪**:Sino 尿酸检测设备
- **尿液分析仪**:爱克尿叶检测设备
- **血红蛋白仪**:唐华血红蛋白检测设备
- **血脂仪**:爱克、Sino SLX 血脂检测设备
- **血酮仪**:Sino 血酮检测设备
- **身份证读卡器**:CvB 身份证识别设备
#### 核心模块
- **bule/**:BLE 蓝牙基础层,包含设备扫描、连接、数据监听、绑定等功能
- **model/**:通用数据模型,定义设备数据的标准化格式
- **state/**:设备状态管理 provider
- **widget/**:通用 UI 组件,如连接中、等待测量、倒计时等界面
### 动态问卷渲染引擎(lib/formRender/)
基于 JSON 配置动态渲染问卷表单,支持多种题型,满足灵活的业务需求。
#### 支持题型
- **BaseRender**:基础题型组件
- **CheckRender**:复选框题型
- **SelectTags**:标签选择题型
- **InputRender**:输入框题型
- **TimeRender**:时间选择题型
- **SmokeRender**:吸烟情况调查题型
- **DrinkRender**:饮酒情况调查题型
- **ExerciseRender**:运动情况调查题型
#### 核心组件
- **Render**:主渲染组件
- **RenderList**:列表渲染器
- **RenderState**:渲染状态管理
- **RenderUtils**:渲染工具类
### 辅助功能
- **语音播放(MyAudioPlayer)**:设备操作反馈语音提示
- **Toast 提示(HanyiToast)**:统一的 Toast 组件
- **瀑布流布局(WaterfallFlow)**:设备卡片瀑布流展示
## 项目结构
```
hanyi/
├── lib/
│ ├── devices/ # 设备接入层
│ │ ├── bule/ # 蓝牙基础层
│ │ ├── model/ # 数据模型
│ │ ├── state/ # 状态管理
│ │ ├── xueya/ # 血压计
│ │ ├── xuetang/ # 血糖仪
│ │ ├── xueyang/ # 血氧仪
│ │ ├── tiwen/ # 体温计
│ │ ├── tizhong/ # 体重秤
│ │ ├── niaosuan/ # 尿酸仪
│ │ ├── niaoye/ # 尿液分析仪
│ │ ├── xuezhi/ # 血脂仪
│ │ ├── xueyang/ # 血氧仪
│ │ ├── tanghuaxuehongdanbai/ # 血红蛋白仪
│ │ ├── idcard/ # 身份证读卡器
│ │ └── widget/ # 通用 UI 组件
│ ├── formRender/ # 动态问卷渲染
│ │ └── components/ # 题型组件
│ ├── toast/ # Toast 组件
│ ├── waterFallFlow/ # 瀑布流布局
│ └── hanyi.dart # 主入口
├── example/ # 示例应用
├── assets/ # 资源文件
│ ├── voice/ # 语音文件
│ └── xuetang/ # 血糖相关图片
└── pubspec.yaml # 依赖配置
```
## 环境要求
- Flutter SDK 2.0 或更高版本
- Android SDK 21+
- iOS 11.0+
## 快速开始
### 添加依赖
在 `pubspec.yaml` 中添加:
```yaml
dependencies:
hanyi:
git:
url: https://gitee.com/phpstudy_poi/hanyi-module.git
```
### Android 权限配置
在宿主项目的 `AndroidManifest.xml` 中添加以下权限:
```xml
```
### iOS 配置
在 `Info.plist` 中添加:
```xml
NSBluetoothAlwaysUsageDescription
需要蓝牙权限以连接医疗设备
NSLocationWhenInUseUsageDescription
需要位置权限以扫描蓝牙设备
NSCameraUsageDescription
需要相机权限以扫描二维码
NSMicrophoneUsageDescription
需要麦克风权限以录制音频
```
## 使用示例
### 设备连接示例
```dart
import 'package:hanyi/hanyi.dart';
// 扫描并连接血压计
void connectBloodPressureDevice() {
HanyiBlueUtils.scanDevices((device) {
if (device.type == DeviceType.BLOOD_PRESSURE) {
HanyiBlueUtils.connectDevice(device);
}
});
}
```
### 问卷渲染示例
```dart
import 'package:hanyi/formRender/Render.dart';
void renderQuestionnaire() {
Render(
jsonData: surveyJson, // JSON 配置数据
onSubmit: (result) {
print('问卷提交结果: $result');
},
);
}
```
### 语音播放示例
```dart
import 'package:hanyi/devices/MyAudioPlayer.dart';
void playBindSuccess() {
MyAudioPlayer.play('assets/voice/bindsuccess.mp3');
}
```
## 依赖清单
主要依赖项包括:
- `provider`:状态管理
- `flutter_blue`:蓝牙通信
- `fl_chart`:图表绘制
- `shared_preferences`:本地存储
- `image_picker`:图片选择
- `permission_handler`:权限处理
- `json_annotation`:JSON 序列化
完整依赖清单请参阅 `pubspec.yaml` 文件。
## 扩展指南
### 新增设备驱动
1. 在对应设备类型目录下创建设备类,继承基础设备类
2. 实现数据解码逻辑
3. 在设备工厂中注册新设备
4. 更新数据模型
### 数据模型更新
使用 `json_serializable` 生成模型文件:
```bash
flutter pub run build_runner build
```
## 版本历史
详见 [CHANGELOG.md](./CHANGELOG.md)
## 许可证
本项目遵循 MIT 许可证,详见 [LICENSE](./LICENSE) 文件。
## 贡献指南
欢迎提交 Issue 和 Pull Request 共同完善本模块。