# 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 共同完善本模块。