这是一个基于浏览器扩展的医疗语音自动填表解决方案,通过以下流程实现:
# 在项目根目录启动服务
cd /Users/destiny/dev/emoon/demos/playwright_demo
mvn spring-boot:run
服务启动后,访问 http://localhost:8080 确认服务正常运行。
打开扩展管理页面
chrome://extensions/edge://extensions/开启开发者模式
加载扩展
/Users/destiny/dev/emoon/demos/playwright_demo/medical-voice-extension确认安装成功
打开扩展管理页面
about:debugging#/runtime/this-firefox加载临时扩展
manifest.json 文件如果需要修改后端服务地址,编辑扩展配置:
medical-voice-extension/content.js修改配置:
const CONFIG = {
BACKEND_URL: 'http://localhost:8080', // 修改为你的后端地址
API_ENDPOINT: '/api/extract'
};
示例对话:
医生:您好,请报一下您的姓名和年龄。
患者:我叫张三,今年35岁,男性。
医生:您今天来是因为什么不舒服?
患者:我咳嗽、发烧已经3天了,还伴有咽痛。
┌─────────────────────────────────────────────────┐
│ 浏览器环境 │
├─────────────────────────────────────────────────┤
│ ┌──────────┐ ┌──────────────┐ │
│ │ HIS页面 │ ↔ │ 浏览器扩展 │ │
│ │ (表单) │ │ (content.js) │ │
│ └──────────┘ └──────────────┘ │
│ ↑ ↕ │
│ │ ┌──────────────┐ │
│ │ │ Web Speech │ │
│ │ │ API (语音) │ │
│ │ └──────────────┘ │
│ │ ↕ │
│ └────────────→│ 后端服务 │ │
│ │ (千问大模型) │ │
│ └──────────────┘ │
└─────────────────────────────────────────────────┘
语音识别阶段
信息提取阶段
表单填写阶段
扩展可以自动识别并填写以下字段:
| 字段名 | 中文名称 | 示例值 |
|---|---|---|
| patientName | 患者姓名 | 张三 |
| patientAge | 年龄 | 35 |
| patientGender | 性别 | 男 |
| patientPhone | 联系电话 | 13800138000 |
| chiefComplaint | 主诉 | 咳嗽、发烧伴咽痛3天 |
| presentIllness | 现病史 | 3天前受凉后出现发烧 |
| pastHistory | 既往史 | 高血压病史5年 |
| allergyHistory | 过敏史 | 对青霉素过敏 |
| symptoms | 症状列表 | ["咳嗽", "发烧", "咽痛"] |
| visitType | 就诊类型 | 门诊 |
扩展使用多种策略智能匹配表单字段:
通过 ID 匹配
patientName, patient_name, xingming 等通过 Name 属性匹配
通过 Placeholder 匹配
通过 Label 文本匹配
通过 XPath 定位
示例:
<!-- 以下方式都可以被识别 -->
<input id="patientName" />
<input name="patient_name" />
<input placeholder="请输入患者姓名" />
<label for="name">患者姓名</label><input id="name" />
解决方法:
解决方法:
解决方法:
解决方法:
数据隐私
网络安全
| 浏览器 | 语音识别 | 扩展支持 | 推荐度 |
|---|---|---|---|
| Chrome | ✅ | ✅ | ⭐⭐⭐⭐⭐ |
| Edge | ✅ | ✅ | ⭐⭐⭐⭐⭐ |
| Safari | ✅ | ⚠️ | ⭐⭐⭐⭐ |
| Firefox | ❌ | ✅ | ⭐⭐ |
注意: Firefox 不支持 Web Speech API,需要额外部署本地语音识别服务。
如果 HIS 系统使用特殊的字段命名,可以修改扩展配置:
// 编辑 content.js
const fieldMappings = {
patientName: [
'patientName',
'name',
'patient_name',
'xingming',
'姓名',
'hzm' // 添加 HIS 系统的特殊字段名
],
// ... 其他字段
};
recognition.lang = 'zh-CN';
recognition.continuous = false;
recognition.interimResults = false;
recognition.maxAlternatives = 1;
// 可选:添加超时配置
const BUTTON_STYLE = {
position: 'fixed',
bottom: '100px',
right: '30px',
backgroundColor: '#4CAF50', // 修改按钮颜色
padding: '15px 20px',
// ... 其他样式
};
如果遇到问题,请:
MIT License
使用流程:
mvn spring-boot:run)技术优势: