当前位置: 首页 > news >正文

[开源] 护理语音医嘱转换系统:面向移动护理终端的结构化记录工具,自动解析床号、操作、参数与通知状态

本项目是一个专为临床一线护士设计的轻量级命令行工具,解决移动护理终端中语音描述转结构化医嘱记录的断点问题。我们不对接医院HIS或EMR系统,也不要求部署服务端,而是以本地可执行方式嵌入护士日常操作流:护士口述「14床测血压,偏高,通知医生」,系统实时输出含床号、操作类型、参数语义值、通知标记及待确认状态的标准化记录。核心能力全部围绕护理文书规范展开,床号支持「14床」「14-床」「14床xxx」等非标写法;护理操作覆盖20+项高频动作(如测血压、吸痰、翻身、静脉输液),并内置同义词映射;参数描述(如「偏高」「稍快」「正常范围」)被统一归一为预定义语义标签;是否需通知医生由上下文关键词触发识别;最终结果可导出为JSON(供系统集成)、CSV(GBK编码,适配院内Windows环境)和HTML(带时间戳与原始文本的可读报告)。它用TypeScript + Node.js构建,模块化拆分为解析、映射、导出与CLI四层,所有逻辑在本地运行,无网络依赖,测试覆盖全部关键路径。

定位与能力边界

我们不做语音识别(ASR),只处理已转写的中文文本;不做NLP大模型微调,不依赖GPU或云API;不生成护理计划或评估结论,只做从自然语言到结构化字段的确定性映射。它的存在前提很具体:护士已在移动端完成语音输入并获得文字稿,但人工逐字录入结构化表单仍耗时、易错、难回溯。因此,系统能力严格限定在四个可验证环节:
- 床号提取:识别数字+床/床号/bed等变体,兼容空格、短横、中英文混排;
- 操作识别:基于预置术语库匹配动作意图,例如「量血压」「测BP」「血压监测」均映射至measure_bp
- 参数解析:将模糊描述映射为标准枚举值,如「偏高」→abnormal_high,「稍快」→slightly_fast,「正常」→normal
- 通知判定:检测「通知医生」「叫医生」「得找大夫」等显式表达,也识别隐含场景(如「室颤」「心跳骤停」自动触发notifyDoctor: true)。

超出这四类的语义(如时间推演、风险评分、跨操作关联)不在当前设计范围内。这不是一个通用医疗NLU平台,而是一把为护理文书场景打磨的结构化小刀。

核心功能详解

以下功能全部通过本地解析引擎实现,无需联网,不上传任何数据:

功能模块

支持内容

示例输入与输出要点

床号提取

「14床」「14-床」「14床患者」「床14号」「十四床」

统一归一为字符串"14",不作数值计算或床位校验

护理操作识别

20+种操作,含同义词扩展(如「吸痰」匹配「负压吸痰」「气道吸痰」)

输出字段type为小写下划线命名(如airway_suction),非自由文本

参数值解析

支持程度副词+名词组合(「明显升高」「轻度水肿」「基本正常」)

parameters

数组中每个对象含name(如oxygen_saturation)、value(如abnormal_low)、unit(如%

通知状态检测

显式关键词+高危事件词典双路触发

notifyDoctor: true

仅当语义明确指向医生介入,非所有「异常」都触发

多格式导出

JSON(标准结构)、CSV(GBK编码,列名中文,兼容Excel打开)、HTML(含样式模板)

CSV默认用逗号分隔,空值留空,不加引号;HTML使用templates/下预置模板渲染

所有解析规则均来自data/目录下的结构化术语表,而非正则硬编码。例如「测血压」对应的操作ID、参数名、单位、可能取值范围,全部在data/operations.json中明确定义,便于科室按本院习惯增删改。

使用与交互方式

系统提供四种使用路径,全部通过npm start入口统一调度:

npm start -- --text "14床测血压,偏高,通知医生"
npm start -- --file data/examples.json
npm start -- --text "14床测血压" --format csv --output result.csv
npm start

交互式模式下,每行输入一条语音文本,空行结束,实时返回JSON结果。这种设计适配两种典型场景:一是护士在查房间隙用手机终端快速录入单条指令;二是信息科批量清洗历史语音转写日志。所有命令行参数含义如下表:

参数

含义

是否必需

补充说明

--text

单行待解析文本

否(与--file二选一)

支持中文标点,无需额外清理

--file

JSON格式批量输入文件路径

否(与--text二选一)

文件内容为字符串数组,如["14床测血压", "8床换药"]

--format

输出格式:json(默认)、csvhtml

csv

强制GBK编码,避免Excel乱码

--output

输出文件路径

否(不指定则打印到控制台)

html

模式必须指定此参数才能生成报告

注意:--file读取的是纯文本JSON数组,不是带结构的医嘱对象集合;系统不校验输入合法性,只对符合护理语言习惯的文本做最优解析。

工程结构与可维护性

整个项目按职责清晰切分为五个源码模块,全部位于src/下:

  • parser/

    :纯函数式文本切分与词元识别,不依赖外部状态,输入字符串,输出中间词元树;

  • mapper/

    :将词元映射为标准操作ID与参数枚举值,核心逻辑集中在operationMap.tsparameterRules.ts

  • export/

    :格式无关的导出接口抽象,jsonExporter.tscsvExporter.tshtmlExporter.ts各自实现ExportStrategy

  • cli/

    :封装命令行参数解析(yargs)、输入流控制与结果输出,与业务逻辑零耦合;

  • utils/

    :提供normalizeText()(去噪、统一空格)、parseBedNo()(正则+规则双校验)等复用函数。

测试驱动开发贯穿全程:__tests__/中每个模块均有对应单元测试,且包含集成测试验证端到端流程。例如bedNo.test.ts覆盖「14床」「床14」「14-床」等7种写法;parameter.test.ts验证「偏低」「轻度降低」「略低于正常」全部映射至abnormal_lowe2e.test.ts用真实样例文本检验最终JSON字段完整性。所有测试用例均来自临床真实语料整理,非虚构构造。

数据与扩展机制

术语体系完全开放可配置,所有业务规则不写死在代码里:

  • 护理操作定义存于data/operations.json,每项含idkeywords(同义词数组)、parameters(参数名与可选值列表);

  • 床号识别规则在data/patterns/bedNoPatterns.json中声明正则与后处理逻辑;

  • 参数语义映射表位于data/parameterValues.json,定义「偏高」「升高」「明显增高」→abnormal_high等映射;

  • HTML报告模板在templates/report.html中,支持自定义CSS与字段展示顺序。

新增一项操作(如「中心静脉压监测」)只需在operations.json中添加条目,无需修改任何TypeScript源码。术语库更新后,重新运行npm start即可生效,无编译步骤。

限制与适用说明

本系统有明确的能力边界,须提前知悉:
- 不处理语音音频,仅接受已转写的中文文本;
- 不校验床号真实性(如「999床」仍会提取为"999"),需由上层系统或人工核对;
- 参数解析基于预设词典,未登录词(如新造口语「有点儿悬」)无法识别,返回空参数数组;
- CSV导出不包含嵌套结构(如多个操作共存时,一行CSV仅对应一个operations[0]),完整结构请用JSON;
- HTML报告为静态页面,不支持交互式筛选或导出子集。

它适合三类使用者:一线护士(单条快速录入)、信息科人员(批量清洗语音日志)、护理质控员(导出CSV做操作频次统计)。不适合替代专业语音识别引擎,也不用于生成法律效力文书,所有输出均标注"status": "pending_confirm",必须经护士二次确认后方可归档。

项目地址:
https://github.com/nexorin9/nursing-voice-order-converter

http://www.jsqmd.com/news/849253/

相关文章:

  • ChatGPT-Next-Web:跨平台AI对话的终极解决方案
  • Perplexity教育信息搜索全链路拆解:从提问设计→信源验证→引用导出(含教育部推荐引用规范适配版)
  • Windows 10/11下,手把手教你用Python2和Git搞定GitHack(附常见错误解决)
  • 开发过程中如何利用Taotoken的容灾路由保障服务高可用
  • 告别编译报错:在Keil MDK中管理多版本ARM编译器(V5/V6)的完整指南
  • 怎样高效配置浏览器资源嗅探工具:实用操作手册
  • Claude Code用户如何配置Taotoken解决额度与封号困扰
  • Claude Code 在 SaaS 后端 API 开发中的 4 层结构落地与 3 类质量校验实践
  • Linux 绝对路径与相对路径详解——新手再也不迷路
  • TVA视觉新范式:工业视觉的百年未有之大变局(4)
  • 2026手工皂源头工厂汇总:手工皂OEM工厂+手工皂贴牌厂家+手工皂代工工厂+香皂贴牌厂家+洗发皂贴牌厂家精选 - 栗子测评
  • 2026优质论文查重平台分析对比,靠谱查重网站该如何精准挑选,论文降重/AIGC论文检测/论文检测,论文查重网站口碑推荐 - 品牌推荐师
  • 54 深入解析poll多路复用技术
  • ChatGPT-Next-Web更新检测:自动更新与版本管理
  • 内容创作团队借助Taotoken统一调度不同风格的AI写手
  • 不只是配置:用杰理701N可视化SDK的按键系统,设计你的第一个智能交互场景
  • 特高压输电线路在线监测系统设计:从架构到嵌入式核心板选型实践
  • Linux 登录用户、主机名、提示符详解(新手不迷路)
  • Perplexity AI工程师认证全攻略:从报名流程、题型分布到高分避坑清单(附官方未公开考点)
  • 管材切割机厂家/圆钢切割机厂家哪家靠谱?2026全国管材切割机厂家/圆钢切割机厂家盘点与推荐:润泰机械领衔 - 栗子测评
  • Dream全栈开发实战:用Melange构建前后端统一的Web应用 [特殊字符]
  • 经典论文 《Language Models are Few-Shot Learners》回顾
  • FanControl风扇控制软件:5分钟快速上手指南,轻松解决电脑噪音与散热难题
  • LabVIEW NXG如何应对5G、AI与自动驾驶测试的复杂挑战
  • AmazingHand高级演示:手部追踪与逆运动学控制
  • 告别付费插件!手把手教你用.NET 4.x在Unity里免费读取CAD图纸(附完整Demo)
  • 告别环境冲突!用Anaconda Navigator可视化创建虚拟环境,再一键配置到PyCharm 2025.2.4
  • DocQuery未来展望:AI文档理解技术的发展趋势
  • 对比直接使用原厂API,通过聚合平台调用大模型的便利性体验
  • 同步、异步与互斥:从通用OS到RTOS的全面解析