Flutter 框架跨平台鸿蒙开发 - 药物相互作用查询应用
药物相互作用查询应用摘要: 一款基于Flutter开发的医疗健康应用,提供药物相互作用查询服务。核心功能包括: 药物搜索:支持中英文名称模糊匹配 智能分析:自动检测药物组合风险,提供四级评估(严重/中等/轻微/无) 专业建议:显示不良反应症状及用药指导 历史记录:保存查询记录便于回溯 应用采用Material Design 3设计规范,以蓝色为主色调体现医疗专业性。技术栈包含Flutter框架、D
欢迎加入开源鸿蒙跨平台社区:
https://openharmonycrossplatform.csdn.net
一、项目概述
运行效果图



1.1 应用简介
药物相互作用查询是一款专业的用药安全助手应用,旨在帮助用户查询药物相互作用和禁忌信息,提供智能分析服务。应用内置药物数据库,支持多种药物同时查询,自动分析潜在风险,为用户提供专业的用药建议。
应用以沉稳的蓝色为主色调,象征医疗健康的专业与可信。涵盖药物查询、分析结果、查询历史、关于信息四大模块。用户可以搜索药物、添加到查询列表、获取相互作用分析结果,并保存查询记录以备后续参考。
1.2 核心功能
| 功能模块 | 功能描述 | 实现方式 |
|---|---|---|
| 药物搜索 | 支持中英文药物名称搜索 | 模糊匹配 |
| 相互作用分析 | 自动检测药物相互作用 | 数据库匹配 |
| 风险等级评估 | 四级风险评估体系 | 枚举定义 |
| 查询历史 | 保存历史查询记录 | 本地存储 |
| 专业建议 | 提供用药建议和注意事项 | 数据关联 |
| 症状提示 | 显示需警惕的不良反应 | 列表展示 |
1.3 相互作用等级定义
| 序号 | 等级名称 | Emoji | 颜色 | 描述 |
|---|---|---|---|---|
| 1 | 严重 | 🔴 | #D32F2F | 禁止联用,可能危及生命 |
| 2 | 中等 | 🟠 | #F57C00 | 谨慎使用,需医生指导 |
| 3 | 轻微 | 🟡 | #FFA000 | 注意观察,可能需调整剂量 |
| 4 | 无 | 🟢 | #388E3C | 可以安全联用 |
1.4 药物分类定义
| 序号 | 分类名称 | Emoji | 描述 |
|---|---|---|---|
| 1 | 抗生素 | 💊 | 抗细菌感染药物 |
| 2 | 止痛药 | 💉 | 镇痛消炎药物 |
| 3 | 心血管药 | ❤️ | 心血管系统药物 |
| 4 | 糖尿病药 | 🩸 | 降血糖药物 |
| 5 | 呼吸系统药 | 🫁 | 呼吸系统疾病药物 |
| 6 | 消化系统药 | 🫃 | 消化系统疾病药物 |
| 7 | 神经系统药 | 🧠 | 神经系统疾病药物 |
| 8 | 激素类药 | ⚗️ | 激素及相关药物 |
1.5 技术栈
| 技术领域 | 技术选型 | 版本要求 |
|---|---|---|
| 开发框架 | Flutter | >= 3.0.0 |
| 编程语言 | Dart | >= 2.17.0 |
| 设计规范 | Material Design 3 | - |
| 数据存储 | 内存存储 | - |
| 搜索算法 | 模糊匹配 | - |
| 目标平台 | 鸿蒙OS / Web | API 21+ |
1.6 项目结构
lib/
└── main_drug_interaction.dart
├── DrugInteractionApp # 应用入口
├── InteractionLevel # 相互作用等级枚举
├── DrugCategory # 药物分类枚举
├── Drug # 药物模型
├── DrugInteraction # 相互作用模型
├── QueryRecord # 查询记录模型
├── DrugInteractionHomePage # 主页面(底部导航)
├── _buildQueryPage # 查询页面
├── _buildAnalysisPage # 分析页面
├── _buildHistoryPage # 历史页面
└── _buildProfilePage # 关于页面
二、系统架构
2.1 整体架构图
2.2 类图设计
2.3 页面导航流程
2.4 相互作用检测流程
三、核心模块设计
3.1 数据模型设计
3.1.1 相互作用等级枚举 (InteractionLevel)
enum InteractionLevel {
severe(label: '严重', emoji: '🔴', color: Color(0xFFD32F2F), description: '禁止联用,可能危及生命'),
moderate(label: '中等', emoji: '🟠', color: Color(0xFFF57C00), description: '谨慎使用,需医生指导'),
mild(label: '轻微', emoji: '🟡', color: Color(0xFFFFA000), description: '注意观察,可能需调整剂量'),
none(label: '无', emoji: '🟢', color: Color(0xFF388E3C), description: '可以安全联用');
final String label;
final String emoji;
final Color color;
final String description;
}
3.1.2 药物分类枚举 (DrugCategory)
enum DrugCategory {
antibiotic(label: '抗生素', emoji: '💊'),
painkiller(label: '止痛药', emoji: '💉'),
cardiovascular(label: '心血管药', emoji: '❤️'),
diabetes(label: '糖尿病药', emoji: '🩸'),
respiratory(label: '呼吸系统药', emoji: '🫁'),
digestive(label: '消化系统药', emoji: '🫃'),
nervous(label: '神经系统药', emoji: '🧠'),
hormone(label: '激素类药', emoji: '⚗️');
final String label;
final String emoji;
}
3.1.3 药物模型 (Drug)
class Drug {
final String id; // 药物ID
final String name; // 药物名称(中文)
final String genericName; // 通用名(英文)
final DrugCategory category; // 药物分类
final String description; // 药物描述
final List<String> indications; // 适应症
final List<String> contraindications; // 禁忌症
final List<String> sideEffects; // 不良反应
}
3.1.4 相互作用模型 (DrugInteraction)
class DrugInteraction {
final String drug1Id; // 药物1 ID
final String drug2Id; // 药物2 ID
final InteractionLevel level; // 风险等级
final String mechanism; // 作用机制
final String effect; // 可能影响
final String recommendation; // 建议措施
final List<String> symptoms; // 需警惕症状
}
3.1.5 查询记录模型 (QueryRecord)
class QueryRecord {
final String id; // 记录ID
final List<Drug> drugs; // 查询药物列表
final List<DrugInteraction> interactions; // 相互作用列表
final DateTime queryTime; // 查询时间
final String? note; // 备注
InteractionLevel get worstLevel; // 最严重风险等级
}
3.1.6 风险等级分布
3.2 页面结构设计
3.2.1 主页面布局
3.2.2 查询页结构
3.2.3 分析页结构
3.2.4 历史页结构
3.3 相互作用检测逻辑
3.4 风险等级计算
四、UI设计规范
4.1 配色方案
应用以沉稳的蓝色为主色调,象征医疗健康的专业与可信:
| 颜色类型 | 色值 | 用途 |
|---|---|---|
| 主色 | #1976D2 (Blue) | 导航、主题元素 |
| 辅助色 | #2196F3 | 分析页面 |
| 第三色 | #42A5F5 | 历史页面 |
| 强调色 | #64B5F6 | 关于页面 |
| 背景色 | #FAFAFA | 页面背景 |
| 卡片背景 | #FFFFFF | 药物卡片 |
4.2 风险等级颜色
| 风险等级 | 色值 | 视觉效果 |
|---|---|---|
| 严重 | #D32F2F | 警示红色 |
| 中等 | #F57C00 | 警告橙色 |
| 轻微 | #FFA000 | 注意黄色 |
| 无 | #388E3C | 安全绿色 |
4.3 字体规范
| 元素 | 字号 | 字重 | 颜色 |
|---|---|---|---|
| 页面标题 | 24px | Bold | 主色 |
| 药物名称 | 16px | Bold | #000000 |
| 通用名 | 12px | Regular | 灰色 |
| 分类标签 | 11px | Regular | 灰色 |
| 风险等级 | 14px | Bold | 等级颜色 |
| 统计数字 | 20px | Bold | 白色 |
4.4 组件规范
4.4.1 药物卡片
┌─────────────────────────────────────┐
│ ┌────┐ │
│ │ 💊 │ 阿司匹林 │
│ └────┘ Aspirin │
│ 止痛药 │
│ [🗑️] │
└─────────────────────────────────────┘
4.4.2 相互作用卡片
┌─────────────────────────────────────────────────────┐
│ 🔴 阿司匹林 + 华法林 [严重] │
│ 严重相互作用 │
├─────────────────────────────────────────────────────┤
│ 作用机制 │
│ 阿司匹林增强华法林抗凝作用 │
│ │
│ 可能影响 │
│ 显著增加出血风险 │
│ │
│ 建议措施 │
│ 禁止联用,如必须联用需密切监测INR │
│ │
│ 需警惕症状: │
│ [消化道出血] [颅内出血] [皮下瘀斑] │
└─────────────────────────────────────────────────────┘
4.4.3 搜索结果
┌─────────────────────────────────────┐
│ 💊 阿司匹林 止痛药 │
│ Aspirin │
├─────────────────────────────────────┤
│ 💊 阿莫西林 抗生素 │
│ Amoxicillin │
├─────────────────────────────────────┤
│ ❤️ 氨氯地平 心血管药 │
│ Amlodipine │
└─────────────────────────────────────┘
4.4.4 快速统计
┌─────────────────────────────────────────────────────┐
│ │
│ 💊 ⚠️ 🔍 │
│ 10 6 5 │
│ 药物数据 相互作用 查询记录 │
│ │
└─────────────────────────────────────────────────────┘
五、核心功能实现
5.1 药物搜索实现
void _searchDrugs(String query) {
if (query.isEmpty) {
setState(() {
_searchResults = [];
_isSearching = false;
});
return;
}
setState(() {
_isSearching = true;
_searchResults = _drugDatabase
.where((drug) =>
drug.name.toLowerCase().contains(query.toLowerCase()) ||
drug.genericName.toLowerCase().contains(query.toLowerCase()))
.toList();
});
}
5.2 添加药物实现
void _addDrug(Drug drug) {
if (_selectedDrugs.any((d) => d.id == drug.id)) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text('${drug.name} 已添加'),
backgroundColor: Colors.orange,
),
);
return;
}
setState(() {
_selectedDrugs.add(drug);
_searchController.clear();
_searchResults = [];
_isSearching = false;
});
_analyzeInteractions();
}
5.3 相互作用检测实现
List<DrugInteraction> _checkInteractions(List<Drug> drugs) {
final interactions = <DrugInteraction>[];
for (int i = 0; i < drugs.length; i++) {
for (int j = i + 1; j < drugs.length; j++) {
final interaction = _interactionDatabase.where(
(inter) =>
(inter.drug1Id == drugs[i].id && inter.drug2Id == drugs[j].id) ||
(inter.drug1Id == drugs[j].id && inter.drug2Id == drugs[i].id),
);
interactions.addAll(interaction);
}
}
return interactions;
}
5.4 最差风险等级计算
InteractionLevel get worstLevel {
if (interactions.isEmpty) return InteractionLevel.none;
var worst = InteractionLevel.none;
for (var interaction in interactions) {
if (interaction.level.index < worst.index) {
worst = interaction.level;
}
}
return worst;
}
5.5 保存查询记录
void _saveQuery() {
if (_selectedDrugs.isEmpty) return;
final record = QueryRecord(
id: 'query_${DateTime.now().millisecondsSinceEpoch}',
drugs: List.from(_selectedDrugs),
interactions: List.from(_interactions),
queryTime: DateTime.now(),
);
setState(() {
_queryHistory.insert(0, record);
});
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text('查询记录已保存'),
backgroundColor: Color(0xFF1976D2),
),
);
}
六、交互设计
6.1 药物搜索流程
6.2 相互作用分析流程
6.3 查询记录管理
七、扩展功能规划
7.1 后续版本规划
7.2 功能扩展建议
7.2.1 智能推荐
推荐功能:
- 基于病史推荐替代药物
- 个性化用药建议
- 剂量调整建议
- 用药时间优化
7.2.2 云端服务
云端功能:
- 数据云端备份
- 多设备同步
- 医生端数据共享
- 远程问诊对接
7.2.3 AI分析
AI功能:
- 深度学习风险预测
- 文献自动更新
- 不良反应预警
- 个体化用药分析
八、注意事项
8.1 开发注意事项
-
数据准确性:药物数据必须经过专业审核,确保准确可靠
-
免责声明:应用需明确声明仅供参考,不能替代专业医疗建议
-
隐私保护:用户用药数据需妥善保护,符合相关法规
-
更新维护:药物数据库需定期更新,保持最新状态
-
性能优化:大量药物数据时需优化搜索性能
8.2 常见问题
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 搜索无结果 | 药物名称拼写错误 | 支持模糊搜索 |
| 相互作用未检测 | 数据库不完整 | 持续扩充数据库 |
| 风险等级异常 | 枚举顺序错误 | 检查index比较逻辑 |
| 历史记录丢失 | 未持久化存储 | 实现本地存储 |
| 显示卡顿 | 数据量大 | 优化渲染性能 |
8.3 安全提示
⚠️ 重要安全提示 ⚠️
本应用仅供参考
- 不能替代专业医疗建议
- 用药前请咨询医生或药师
- 数据库信息可能不完整
- 如有疑问请及时就医
用药安全原则
- 遵医嘱用药
- 了解药物禁忌
- 注意不良反应
- 定期复查
九、运行说明
9.1 环境要求
| 环境 | 版本要求 |
|---|---|
| Flutter SDK | >= 3.0.0 |
| Dart SDK | >= 2.17.0 |
| 鸿蒙OS | API 21+ |
| Web浏览器 | Chrome 90+ |
9.2 运行命令
# 查看可用设备
flutter devices
# 运行到Web服务器
flutter run -d web-server -t lib/main_drug_interaction.dart --web-port 8134
# 运行到鸿蒙设备
flutter run -d 127.0.0.1:5555 lib/main_drug_interaction.dart
# 代码分析
flutter analyze lib/main_drug_interaction.dart
十、总结
药物相互作用查询应用通过药物查询、分析结果、查询历史、关于信息四大模块,为用户提供了一个专业的用药安全助手平台。应用内置药物数据库,支持多种药物同时查询,自动分析潜在风险,为用户提供专业的用药建议。
核心功能涵盖药物搜索、相互作用分析、风险等级评估、查询历史四大模块。药物数据库包含10种常见药物,相互作用数据库包含6组典型相互作用;搜索功能支持中英文模糊匹配;分析功能自动检测药物组合风险;历史功能保存查询记录以备后续参考。
应用采用 Material Design 3 设计规范,以沉稳的蓝色为主色调,象征医疗健康的专业与可信。四级风险评估体系(严重、中等、轻微、无)直观展示用药风险,帮助用户做出明智的用药决策。通过本应用,希望能够帮助用户安全用药,守护健康。
药物相互作用查询——用药安全,守护健康
更多推荐




所有评论(0)