本项目是一个专为临床一线护士设计的轻量级命令行工具解决移动护理终端中语音描述转结构化医嘱记录的断点问题。我们不对接医院HIS或EMR系统也不要求部署服务端而是以本地可执行方式嵌入护士日常操作流护士口述「14床测血压偏高通知医生」系统实时输出含床号、操作类型、参数语义值、通知标记及待确认状态的标准化记录。核心能力全部围绕护理文书规范展开床号支持「14床」「14-床」「14床xxx」等非标写法护理操作覆盖20项高频动作如测血压、吸痰、翻身、静脉输液并内置同义词映射参数描述如「偏高」「稍快」「正常范围」被统一归一为预定义语义标签是否需通知医生由上下文关键词触发识别最终结果可导出为JSON供系统集成、CSVGBK编码适配院内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标准结构、CSVGBK编码列名中文兼容Excel打开、HTML含样式模板CSV默认用逗号分隔空值留空不加引号HTML使用templates/下预置模板渲染所有解析规则均来自data/目录下的结构化术语表而非正则硬编码。例如「测血压」对应的操作ID、参数名、单位、可能取值范围全部在data/operations.json中明确定义便于科室按本院习惯增删改。使用与交互方式系统提供四种使用路径全部通过npm start入口统一调度npm start -- --text 14床测血压偏高通知医生npm start -- --file data/examples.jsonnpm start -- --text 14床测血压 --format csv --output result.csvnpm start交互式模式下每行输入一条语音文本空行结束实时返回JSON结果。这种设计适配两种典型场景一是护士在查房间隙用手机终端快速录入单条指令二是信息科批量清洗历史语音转写日志。所有命令行参数含义如下表参数含义是否必需补充说明--text单行待解析文本否与--file二选一支持中文标点无需额外清理--fileJSON格式批量输入文件路径否与--text二选一文件内容为字符串数组如[14床测血压, 8床换药]--format输出格式json默认、csv、html否csv强制GBK编码避免Excel乱码--output输出文件路径否不指定则打印到控制台html模式必须指定此参数才能生成报告注意--file读取的是纯文本JSON数组不是带结构的医嘱对象集合系统不校验输入合法性只对符合护理语言习惯的文本做最优解析。工程结构与可维护性整个项目按职责清晰切分为五个源码模块全部位于src/下parser/纯函数式文本切分与词元识别不依赖外部状态输入字符串输出中间词元树mapper/将词元映射为标准操作ID与参数枚举值核心逻辑集中在operationMap.ts与parameterRules.tsexport/格式无关的导出接口抽象jsonExporter.ts、csvExporter.ts、htmlExporter.ts各自实现ExportStrategycli/封装命令行参数解析yargs、输入流控制与结果输出与业务逻辑零耦合utils/提供normalizeText()去噪、统一空格、parseBedNo()正则规则双校验等复用函数。测试驱动开发贯穿全程__tests__/中每个模块均有对应单元测试且包含集成测试验证端到端流程。例如bedNo.test.ts覆盖「14床」「床14」「14-床」等7种写法parameter.test.ts验证「偏低」「轻度降低」「略低于正常」全部映射至abnormal_lowe2e.test.ts用真实样例文本检验最终JSON字段完整性。所有测试用例均来自临床真实语料整理非虚构构造。数据与扩展机制术语体系完全开放可配置所有业务规则不写死在代码里护理操作定义存于data/operations.json每项含id、keywords同义词数组、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
[开源] 护理语音医嘱转换系统:面向移动护理终端的结构化记录工具,自动解析床号、操作、参数与通知状态
发布时间:2026/5/20 4:30:24
本项目是一个专为临床一线护士设计的轻量级命令行工具解决移动护理终端中语音描述转结构化医嘱记录的断点问题。我们不对接医院HIS或EMR系统也不要求部署服务端而是以本地可执行方式嵌入护士日常操作流护士口述「14床测血压偏高通知医生」系统实时输出含床号、操作类型、参数语义值、通知标记及待确认状态的标准化记录。核心能力全部围绕护理文书规范展开床号支持「14床」「14-床」「14床xxx」等非标写法护理操作覆盖20项高频动作如测血压、吸痰、翻身、静脉输液并内置同义词映射参数描述如「偏高」「稍快」「正常范围」被统一归一为预定义语义标签是否需通知医生由上下文关键词触发识别最终结果可导出为JSON供系统集成、CSVGBK编码适配院内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标准结构、CSVGBK编码列名中文兼容Excel打开、HTML含样式模板CSV默认用逗号分隔空值留空不加引号HTML使用templates/下预置模板渲染所有解析规则均来自data/目录下的结构化术语表而非正则硬编码。例如「测血压」对应的操作ID、参数名、单位、可能取值范围全部在data/operations.json中明确定义便于科室按本院习惯增删改。使用与交互方式系统提供四种使用路径全部通过npm start入口统一调度npm start -- --text 14床测血压偏高通知医生npm start -- --file data/examples.jsonnpm start -- --text 14床测血压 --format csv --output result.csvnpm start交互式模式下每行输入一条语音文本空行结束实时返回JSON结果。这种设计适配两种典型场景一是护士在查房间隙用手机终端快速录入单条指令二是信息科批量清洗历史语音转写日志。所有命令行参数含义如下表参数含义是否必需补充说明--text单行待解析文本否与--file二选一支持中文标点无需额外清理--fileJSON格式批量输入文件路径否与--text二选一文件内容为字符串数组如[14床测血压, 8床换药]--format输出格式json默认、csv、html否csv强制GBK编码避免Excel乱码--output输出文件路径否不指定则打印到控制台html模式必须指定此参数才能生成报告注意--file读取的是纯文本JSON数组不是带结构的医嘱对象集合系统不校验输入合法性只对符合护理语言习惯的文本做最优解析。工程结构与可维护性整个项目按职责清晰切分为五个源码模块全部位于src/下parser/纯函数式文本切分与词元识别不依赖外部状态输入字符串输出中间词元树mapper/将词元映射为标准操作ID与参数枚举值核心逻辑集中在operationMap.ts与parameterRules.tsexport/格式无关的导出接口抽象jsonExporter.ts、csvExporter.ts、htmlExporter.ts各自实现ExportStrategycli/封装命令行参数解析yargs、输入流控制与结果输出与业务逻辑零耦合utils/提供normalizeText()去噪、统一空格、parseBedNo()正则规则双校验等复用函数。测试驱动开发贯穿全程__tests__/中每个模块均有对应单元测试且包含集成测试验证端到端流程。例如bedNo.test.ts覆盖「14床」「床14」「14-床」等7种写法parameter.test.ts验证「偏低」「轻度降低」「略低于正常」全部映射至abnormal_lowe2e.test.ts用真实样例文本检验最终JSON字段完整性。所有测试用例均来自临床真实语料整理非虚构构造。数据与扩展机制术语体系完全开放可配置所有业务规则不写死在代码里护理操作定义存于data/operations.json每项含id、keywords同义词数组、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