一种大模型生成医嘱数据的预提交隔离校验与自校正方法及系统与流程

摘要: 本发明涉及人工智能生成数据处理、医疗信息系统数据安全、数据库协议代理及数据库事务控制,具体涉及一种对大模型生成的候选医嘱数据进行预提交隔离、确定性规则校验、反馈...
一种大模型生成医嘱数据的预提交隔离校验与自校正方法及系统与流程

本发明涉及人工智能生成数据处理、医疗信息系统数据安全、数据库协议代理及数据库事务控制,具体涉及一种对大模型生成的候选医嘱数据进行预提交隔离、确定性规则校验、反馈式自校正和分阶段数据库写入控制的方法及系统。

背景技术:

1、随着大语言模型被应用于医院信息系统和临床辅助决策系统,大模型可以根据患者基本信息、过敏史、合并用药和已有医嘱生成候选医嘱数据。所述候选医嘱数据在进入医院信息系统的核心医嘱表之前,需要被转换为结构化数据,并接受剂量、频次、给药途径、禁忌和药物相互作用等规则校验。

2、现有大模型输出校验通常在应用层对生成文本进行检查或者向用户展示警告信息,但未必与后端数据库写入链路形成强制联动。若在大模型生成或者校验期间提前启动后端物理事务,可能长时间占用数据库连接和锁资源;若仅采用前端提示而缺少数据库写入前的强制拦截,则未经校验的候选医嘱数据仍可能进入后端写入链路。

3、现有规则审核系统在检测到剂量越界、药物禁忌或者字段缺失时,通常输出警告或拒绝结果,未必能够将具体的违规规则、违规字段、规则限定值和候选值转换为大模型可处理的结构化纠偏任务,因此仍需要人工重新编辑候选医嘱。

4、当多个候选医嘱请求同时进入系统时,若纠偏任务与新生成任务采用相同调度优先级,已处于数据库写入待决状态的请求可能长时间等待;此外,在多轮纠偏期间发生规则库更新时,若不同轮次采用不同规则版本,可能导致同一候选医嘱数据的校验条件前后不一致。

5、因此,需要一种能够在后端物理事务启动之前隔离候选医嘱写意图,在隔离状态下执行结构化解析和确定性规则校验,将违规规则元数据转换为高优先级纠偏任务,并在校验通过和医师签名后分阶段写入数据库的方法及系统。

6、(一)要解决的技术问题本发明所要解决的技术问题如下: (1)解决候选医嘱数据在进入后端数据库之前的写意图隔离问题,使大模型推理和规则校验期间不启动后端物理事务,不占用数据库锁和长期活跃连接;(2)解决自然语言候选医嘱数据与确定性医学规则之间的数据转换问题,将药物名称、剂量、单位、频次、给药途径和患者约束映射为可进行确定性校验的结构化候选特征集;(3)解决规则校验结果与大模型修订过程相互脱节的问题,将违规规则元数据转换为结构化纠偏任务,并通过高优先级调度实现有界迭代自校正;(4)解决候选医嘱数据校验、医师签名和核心数据库写入之间的状态一致性问题,通过相互独立的两次物理事务分别完成待签名数据写入和核心医嘱数据写入。

7、(二)技术方案为解决上述技术问题,本发明提供一种大模型生成医嘱数据的预提交隔离校验与自校正方法,包括以下步骤:步骤s1,接收由上游医嘱应用发出的候选医嘱写入请求,所述候选医嘱写入请求包含由大模型生成的候选医嘱数据以及与所述候选医嘱数据关联的患者约束数据。所述候选医嘱数据至少包括药物名称、剂量数值、剂量单位、给药频次和给药途径中的一种或多种;所述患者约束数据至少包括年龄、体重、过敏史、肝肾功能信息和合并用药信息中的一种或多种。步骤s2,由数据库代理在所述候选医嘱写入请求被发送至后端数据库之前拦截所述候选医嘱写入请求,解析并提取其中的写意图载荷,建立与所述候选医嘱写入请求关联的会话控制块;在不向所述后端数据库发送事务开启指令和数据写入指令的情况下,将所述写意图载荷暂存于与核心医嘱表隔离的临时写缓冲区,并将所述候选医嘱写入请求置为预提交待决状态。步骤s3,对所述写意图载荷中的候选医嘱数据执行结构化解析和数据规约,形成结构化候选特征集。所述结构化解析和数据规约至少包括:将药物名称映射为标准药物编码;提取剂量数值和剂量单位;对质量单位进行标准单位换算;在能够唯一确定药物浓度时,将体积剂量换算为质量剂量;提取给药频次、给药途径、合并用药信息和患者约束字段;对临床关键字段执行完整性、唯一性和一致性检测。当临床关键字段缺失、存在多个候选结果、相互冲突或者无法完成确定性单位换算时,不采用默认值直接补全所述临床关键字段,而是生成格式纠偏任务。当所述结构化解析不成功时,递增结构化解析失败次数;当递增后的结构化解析失败次数未达到预设解析失败上限时,根据解析失败字段、解析失败原因、候选值和目标输出数据结构生成格式纠偏任务,将所述格式纠偏任务发送至所述大模型推理模块;接收所述大模型推理模块返回的修订候选医嘱数据,利用所述修订候选医嘱数据更新所述临时写缓冲区中的写意图载荷,并返回步骤s3;当递增后的结构化解析失败次数达到或者超过所述预设解析失败上限时,执行步骤s7。步骤s4,根据与所述会话控制块绑定的规则库版本,从结构化医学规则库中选择适用于所述结构化候选特征集的规则项,并执行确定性断言校验,生成校验结果。所述校验结果至少包括:是否通过、被触发的规则标识、违规字段、规则限定值、候选值、违规类型。步骤s5,当所述校验结果为不通过、所述违规类型属于预设可纠偏违规类型,且当前迭代次数未达到预设迭代上限时,根据所述校验结果和当前候选医嘱数据生成结构化纠偏任务。所述结构化纠偏任务至少包括会话标识、规则库版本、当前候选医嘱数据、被触发的规则标识、违规字段、规则限定值、候选值、违规类型、允许修改字段集合、禁止修改字段集合和目标输出数据结构。将所述结构化纠偏任务以高于普通推理任务的调度优先级发送至大模型推理模块;接收所述大模型推理模块生成的修订候选医嘱数据,利用所述修订候选医嘱数据更新临时写缓冲区中的写意图载荷,递增当前迭代次数,并返回步骤s3重新执行结构化解析和确定性断言校验。步骤s6,当所述校验结果为通过时,根据临时写缓冲区中经校验的写意图载荷重构数据库写入请求,通过第一独立物理事务将经校验的候选医嘱数据写入待签名表。第一独立物理事务提交完成后,结束所述候选医嘱写入请求的预提交待决状态,并释放第一独立物理事务所占用的数据库连接和锁资源。在接收到与所述候选医嘱数据对应的医师电子签名信号后,通过第二独立物理事务,将待签名表中的对应医嘱数据写入核心医嘱表。步骤s7,当结构化解析失败次数达到或者超过所述预设解析失败上限,或者当前迭代次数达到所述预设迭代上限仍未通过校验,或者所述校验结果属于规则缺失类型、规则冲突类型或者其他预设不可纠偏违规类型时,将所述会话控制块置为失败状态,拒绝向待签名表和核心医嘱表写入所述候选医嘱数据,并结束所述候选医嘱写入请求的预提交待决状态。

8、本发明还提供一种大模型生成医嘱数据的预提交隔离校验与自校正系统,包括数据库代理模块、结构化解析模块、规则库管理模块、规则校验模块、纠偏任务生成模块、纠偏调度模块、大模型推理模块、事务写入模块和失败控制模块。所述数据库代理模块,用于在包含大模型生成的候选医嘱数据的候选医嘱写入请求被发送至后端数据库之前,拦截所述候选医嘱写入请求,解析并提取其中的写意图载荷,建立与所述候选医嘱写入请求关联的会话控制块;在不向所述后端数据库发送事务开启指令和数据写入指令的情况下,将所述写意图载荷暂存于临时写缓冲区,并将所述候选医嘱写入请求设置为预提交待决状态;所述结构化解析模块,用于将所述候选医嘱数据解析为包含药物编码、剂量数值、剂量单位、给药频次、给药途径、合并用药信息和患者约束字段的结构化候选特征集;所述规则库管理模块,用于存储和管理结构化医学规则库以及所述结构化医学规则库对应的规则库版本;所述规则校验模块,用于根据与所述会话控制块关联的规则库版本,从所述结构化医学规则库中选择适用于所述结构化候选特征集的规则项,对所述结构化候选特征集执行确定性断言校验,并生成至少包括是否通过、违规类型、被触发的规则标识、违规字段、规则限定值和候选值的校验结果;所述纠偏任务生成模块,用于在所述校验结果为不通过且所述校验结果中的违规类型属于预设可纠偏违规类型时,根据所述校验结果生成结构化纠偏任务;所述纠偏调度模块,用于以高于普通推理任务的调度优先级,将所述结构化纠偏任务发送至所述大模型推理模块;所述大模型推理模块,用于根据所述结构化纠偏任务生成修订候选医嘱数据;所述数据库代理模块还用于利用所述修订候选医嘱数据更新所述临时写缓冲区中的写意图载荷,以重新进行结构化解析和确定性断言校验;所述事务写入模块,用于在校验通过后,通过第一独立物理事务将经校验的候选医嘱数据写入待签名表,并在接收到与所述候选医嘱数据对应的医师电子签名信号后,通过第二独立物理事务将对应医嘱数据写入核心医嘱表;所述失败控制模块,用于在第一独立物理事务启动前,迭代次数达到预设迭代上限仍未通过校验、结构化解析失败次数达到预设解析失败上限、所述校验结果中的违规类型属于预设不可纠偏违规类型或者处理时间超过预设处理时限时,将所述会话控制块设置为失败状态,结束所述预提交待决状态,并拒绝将所述候选医嘱数据写入所述待签名表和核心医嘱表;所述失败控制模块还用于在候选医嘱数据已经写入待签名表且超过预设签名等待时限时,保留对应待签名记录,将所述会话控制块设置为失败状态,并禁止所述待签名记录中的候选医嘱数据写入核心医嘱表。

9、(三)有益效果现有技术相比,本发明至少具有以下技术效果:

10、 (1)通过在后端数据库物理事务启动前拦截候选医嘱写入请求,使大模型推理和规则校验期间不占用后端物理事务及其数据库锁资源,降低长时间推理导致的数据库连接和锁等待压力;

11、 (2)通过将候选医嘱数据转换为结构化候选特征集,并根据规则库版本执行确定性断言校验,使校验过程及其规则来源可以记录和复现;

12、 (3)通过将违规规则元数据转换为结构化纠偏任务,并优先调度处于待决状态的纠偏任务,减少纠偏任务与新任务竞争造成的等待时间;

13、 (4)通过设置迭代上限和解析失败上限,使自校正过程能够在预设条件下终止,并在失败时拒绝写入候选医嘱数据;

14、 (5)通过相互独立的第一物理事务和第二物理事务,分别完成待签名数据写入和医师签名后的核心医嘱数据写入,避免在等待医师签名期间长期保持数据库物理事务。

技术实现思路

1、具体实施方式下面结合具体数据流控制流程与工程实施方案对本发明进行详细论述。在一种具体实施方式中可以采用tensorrt-llm、rocksdb、caffeine cache和javanetty实现,但不限于上述实现。

2、一、 系统部署架构与软件架构请参阅图1,图1示出了本发明实施例中大模型生成医嘱数据的预提交隔离校验与自校正系统的总体架构及功能模块关系。所述系统分别与上游医嘱应用100、后端数据库200和医师终端300进行数据交互,系统内部包括接入与数据库代理层l1、隔离校验与控制层l2、推理与调度层l3以及规则与审计持久化层l4。上游医嘱应用100用于获取患者相关数据,调用大模型生成候选医嘱数据,并根据所述候选医嘱数据形成候选医嘱写入请求。后端数据库200至少包括待签名表210和核心医嘱表220;待签名表210用于存储已经通过确定性断言校验、但尚未完成医师电子签名的候选医嘱数据,核心医嘱表220用于存储已经通过确定性断言校验并完成医师电子签名的医嘱数据。医师终端300用于显示待签名医嘱数据、接收医师审核操作并生成医师电子签名信号。所述系统可以采用安全网关、推理节点和后端数据库节点构成的分布式部署方式,也可以根据系统处理能力和医院信息化部署条件,将所述各逻辑层部署于同一计算节点或者不同计算节点。

3、如图1所示,所述四层逻辑软件架构包括接入与数据库代理层l1、隔离校验与控制层l2、推理与调度层l3以及规则与审计持久化层l4。所述四层逻辑软件架构用于对系统功能模块进行逻辑划分,不限定各功能模块必须分别部署于四个独立物理设备。(1)接入与数据库代理层l1包括数据库代理模块11和事务写入模块13;所述数据库代理模块用于接收上游医嘱应用发出的候选医嘱写入请求,在所述候选医嘱写入请求被发送至后端数据库之前解析并拦截所述候选医嘱写入请求,提取写意图载荷,建立对应的会话控制块,将所述写意图载荷暂存于临时写缓冲区,并维护所述候选医嘱写入请求的预提交待决状态。在所述预提交待决状态期间,数据库代理模块不向后端数据库发送与所述候选医嘱写入请求对应的事务开启指令和数据写入指令。所述事务写入模块用于在候选医嘱数据通过确定性断言校验后,通过第一独立物理事务将经校验的候选医嘱数据写入待签名表;在接收到医师电子签名信号后,通过第二独立物理事务将对应医嘱数据写入核心医嘱表。(2)隔离校验与控制层l2包括结构化解析模块21、规则校验模块22、纠偏任务生成模块23和失败控制模块24;所述结构化解析模块用于对候选医嘱数据执行药物实体标准化、剂量数值及剂量单位规约、给药频次及给药途径提取、合并用药信息提取和患者约束字段提取,形成结构化候选特征集。所述规则校验模块,用于根据与所述会话控制块关联的规则库版本,从所述结构化医学规则库中选择适用于所述结构化候选特征集的规则项,对所述结构化候选特征集执行确定性断言校验,并生成至少包括是否通过、违规类型、被触发的规则标识、违规字段、规则限定值和候选值的校验结果;所述纠偏任务生成模块,用于在所述校验结果为不通过且所述校验结果中的违规类型属于预设可纠偏违规类型时,根据所述校验结果生成结构化纠偏任务;所述失败控制模块,用于在第一独立物理事务启动前,迭代次数达到预设迭代上限仍未通过校验、结构化解析失败次数达到预设解析失败上限、所述校验结果中的违规类型属于预设不可纠偏违规类型或者处理时间超过预设处理时限时,将所述会话控制块设置为失败状态,结束所述预提交待决状态,并拒绝将所述候选医嘱数据写入所述待签名表和核心医嘱表;所述失败控制模块还用于在候选医嘱数据已经写入待签名表且超过预设签名等待时限时,保留对应待签名记录,将所述会话控制块设置为失败状态,并禁止所述待签名记录中的候选医嘱数据写入核心医嘱表。(3)推理与调度层l3包括纠偏调度模块33和大模型推理模块34;所述纠偏调度模块用于管理普通推理任务和结构化纠偏任务的调度顺序;当存在结构化纠偏任务时,优先将所述结构化纠偏任务发送至大模型推理模块。所述大模型推理模块用于根据初始生成任务生成候选医嘱数据,或者根据结构化纠偏任务生成修订候选医嘱数据。大模型推理模块返回修订候选医嘱数据后,由结构化解析模块对所述修订候选医嘱数据执行输出结构校验和字段差异校验;校验通过后,数据库代理模块根据受控合并结果,仅将允许修改字段集合中的变化字段更新至临时写缓冲区中的当前写意图载荷,并由隔离校验与控制层l2重新执行结构化解析和确定性断言校验。首次候选医嘱数据可以由上游医嘱应用调用系统外部的大模型生成,也可以由本系统内部的大模型推理模块根据初始生成任务生成;无论首次候选医嘱数据由何者生成,本发明所述预提交隔离校验与自校正流程均自包含所述候选医嘱数据的候选医嘱写入请求进入数据库代理模块时开始。(4)规则与审计持久化层l4包括规则库管理模块41和审计模块42;所述规则库管理模块用于存储和管理结构化医学规则库、规则库版本、规则来源、规则生效时间和规则启用状态,并通过双缓冲区热更新机制完成规则库版本切换。所述审计模块用于记录会话标识、请求标识、模型版本、规则库版本、各轮候选医嘱数据的摘要值、各轮校验结果、被触发的规则标识、迭代次数、第一独立物理事务处理结果、医师电子签名状态、第二独立物理事务处理结果、最终写入状态、待签名记录标识以及各处理状态对应的时间戳。接入与数据库代理层l1、隔离校验与控制层l2、推理与调度层l3以及规则与审计持久化层l4之间通过标准化通信接口传递结构化数据。在一种具体实施方式中,各层之间可以采用远程过程调用接口、异步消息队列和序列化消息格式进行通信,但本发明不限定具体的通信协议、消息队列、序列化方式、大模型推理框架、缓存组件或者规则库存储组件。

4、二、 预提交隔离状态及会话控制请参阅图2,数据库代理模块接收到上游医嘱应用发出的候选医嘱写入请求后,在所述候选医嘱写入请求被发送至后端数据库之前,对所述候选医嘱写入请求进行拦截。所述候选医嘱写入请求包括请求标识以及由大模型生成的候选医嘱数据,所述候选医嘱数据至少包括药物名称、剂量数值、剂量单位、给药频次和给药途径中的一种或多种。数据库代理模块解析所述候选医嘱写入请求,提取其中准备写入后端数据库的写意图载荷,并根据所述请求标识建立对应的会话控制块。

5、在建立所述会话控制块后,数据库代理模块不向后端数据库发送事务开启指令、数据写入指令或者事务提交指令,而是将所述写意图载荷暂存于临时写缓冲区,并将所述候选医嘱写入请求设置为预提交待决状态。所述预提交待决状态是数据库代理模块维护的逻辑处理状态。在所述预提交待决状态期间,后端数据库中不存在与所述候选医嘱写入请求对应的物理事务,因而不产生与该请求对应的数据库行锁、表锁或者持续占用的后端数据库物理连接。因此,本实施例中的“预提交待决”并非对已经启动的后端数据库物理事务进行挂起,而是在后端数据库物理事务启动之前,暂缓将候选医嘱写入请求发送至后端数据库。在一种实施方式中,数据库代理模块配置有与目标数据库通信协议相匹配的协议适配器。所述协议适配器用于识别数据库写入指令或者预编译语句执行指令,并从所述指令中提取目标数据库标识、目标数据表标识、操作类型、字段—值映射、sql模板或者预编译语句标识、绑定参数、事务模式、请求标识和写意图载荷摘要值,形成所述写意图载荷。数据库代理模块采用事件驱动的非阻塞通信机制维护客户端连接。对于采用同步响应方式的客户端,数据库代理模块将客户端连接标识与会话控制块关联,并在预提交待决期间暂停生成最终数据库写入响应;对于采用异步响应方式的客户端,数据库代理模块生成与会话控制块关联的异步响应标识,并向客户端返回待处理状态。同步响应方式和异步响应方式均不要求在预提交待决期间占用后端数据库物理连接。第一独立物理事务提交完成后,数据库代理模块根据客户端连接标识或者异步响应标识返回待签名状态响应。在自动提交模式下,数据库代理模块在为候选医嘱写入请求分配后端数据库物理连接之前截留所述写入指令。在显式事务模式下,数据库代理模块维护与客户端会话关联的逻辑事务状态,在候选医嘱数据通过确定性断言校验之前,不将与所述候选医嘱写入请求对应的事务开启指令、写入指令和事务提交指令发送至后端数据库。显式事务模式适用于候选医嘱写入请求处于独立事务中的场景。当同一客户端事务中还包括与候选医嘱写入具有原子性依赖关系的其他写入指令时,数据库代理模块将所述相关写入指令共同形成待决写意图集合,并在全部相关数据通过校验后进行重构;当无法确定相关指令之间的事务依赖关系时,拒绝当前预提交处理,并要求上游医嘱应用将候选医嘱写入拆分为独立事务。当候选医嘱数据通过确定性断言校验后,数据库代理模块根据所述sql模板或者预编译语句标识、绑定参数以及经校验的字段—值映射重构参数化数据库写入请求,并通过新获取的后端数据库物理连接启动第一独立物理事务。

6、所述会话控制块至少包括:会话标识,用于唯一标识当前候选医嘱处理会话;请求标识,用于标识候选医嘱写入请求;写意图载荷,用于保存当前等待校验或者等待纠偏的候选医嘱数据;患者约束数据,用于保存与当前候选医嘱相关联的年龄、体重、过敏史、肝肾功能信息和合并用药信息中的一种或多种;规则库版本,用于标识当前会话所使用的结构化医学规则库版本;模型版本,用于标识当前会话调用的大模型版本;迭代计数值,用于记录当前已经执行的自校正次数;解析失败计数值,用于记录候选医嘱数据未能通过结构化解析的次数;会话状态,用于记录当前候选医嘱写入请求所处的处理阶段;写意图载荷摘要值;客户端连接标识或者异步响应标识;待签名记录标识;最终写入状态;质量单位映射表版本;会话截止时间,用于判断当前处理是否超过预设处理时限。

7、所述会话状态至少包括:pending,表示候选医嘱写入请求已经被数据库代理模块拦截,尚未开始结构化解析;parsing,表示正在对候选医嘱数据执行结构化解析;validating,表示正在对结构化候选特征集执行确定性断言校验;correcting,表示校验未通过,正在等待大模型返回修订候选医嘱数据;waiting_signature,表示候选医嘱数据已经通过校验并写入待签名表,正在等待医师电子签名;committed,表示医师完成电子签名,且对应医嘱数据已经写入核心医嘱表;failed,表示当前候选医嘱处理未成功完成;若失败发生在第一独立物理事务启动之前,候选医嘱数据不得写入待签名表和核心医嘱表;若失败发生在待签名表写入之后,则保留对应待签名记录,但不得将其写入核心医嘱表。

8、对于具有相同请求标识和相同写意图载荷摘要值的重复候选医嘱写入请求,数据库代理模块查询是否已经存在对应的会话控制块。若存在尚未处理完成的会话控制块,则复用该会话控制块,不再建立新的处理会话;若已经存在处理完成的结果,则返回已记录的处理结果,从而避免同一候选医嘱数据被重复写入待签名表或者核心医嘱表。当请求标识相同但写意图载荷摘要值不同时,数据库代理模块将其判定为请求标识冲突,拒绝复用原会话控制块,并记录冲突审计信息。按照目标输出数据结构规定的字段顺序,对候选医嘱数据进行规范化序列化,并采用预设哈希算法计算候选医嘱数据摘要值,同时记录摘要算法标识。

9、三、候选医嘱数据的结构化解析当会话控制块建立完成后,控制单元将所述会话控制块的状态设置为parsing,并调用结构化解析模块对临时写缓冲区中的候选医嘱数据进行解析。结构化解析模块将自然语言形式或者半结构化形式的候选医嘱数据转换为结构化候选特征集。所述结构化候选特征集至少包括:药物标准编码、剂型、给药途径、单次剂量数值、单次剂量单位、每日总剂量、给药频次、疗程、合并用药标准编码集合、过敏药物标准编码集合、患者约束条件、当前会话绑定的规则库版本。

10、药物实体标准化包括:提取候选医嘱数据中的药物名称,根据预设的标准药物字典查询与所述药物名称相对应的标准药物编码。当所述药物名称唯一对应一个标准药物编码时,将该标准药物编码写入结构化候选特征集。当所述药物名称对应多个标准药物编码时,结构化解析模块不直接选取模糊匹配分数最高的标准药物编码,而是将多个候选编码及其差异信息写入格式纠偏任务。当所述药物名称无法对应标准药物编码时,将本次结构化解析标记为失败,并进入格式纠偏流程。

11、剂量规约包括提取原始剂量数值和原始剂量单位,并根据剂量单位所属的物理量类别分别处理。当剂量单位为质量单位时,根据版本化质量单位映射表,按照下式将剂量换算为预设标准质量单位:式中,dstd为标准质量剂量,draw为原始剂量数值;uraw为原始质量单位;smass(uraw)为原始质量单位到所述标准质量单位的换算比例;以mg为标准单位时:

12、

13、所述版本化质量单位映射表至少包括映射表版本、原始质量单位、标准质量单位、换算比例、生效时间和适用范围。会话控制块建立时记录当前使用的质量单位映射表版本,同一会话对应的全部结构化解析和纠偏迭代均使用所记录的质量单位映射表版本。

14、当剂量单位为体积单位时,根据药物编码、剂型和药品规格获取对应的药物浓度,并按照下式换算为标准质量剂量:

15、其中vraw为原始体积剂量,c为与药物编码、剂型和药品规格对应的有效成分浓度;c的质量单位和体积单位应分别与dstd和vraw相匹配。例如,当vraw以ml表示、dstd以mg表示时,c应以mg/ml表示。当药物浓度缺失、存在多个可能浓度,或者无法根据药物标准编码、剂型和药品规格唯一确定药物浓度时,结构化解析模块不执行默认换算,而是生成单位纠偏任务。

16、结构化解析模块还对药物标准编码、剂量数值、剂量单位、给药频次和给药途径执行必填字段完整性检测、唯一性检测和字段一致性检测。当任一临床关键字段缺失、具有多个候选值,或者不同字段之间相互冲突时,结构化解析模块不采用默认值或者模糊匹配结果直接补全所述临床关键字段,而是生成格式纠偏任务。在一个实施例中,药物名称的相似度匹配结果仅用于形成候选药物编码集合,不直接作为最终药物标准编码。

17、若结构化解析成功,则将会话控制块状态设置为validating,并将结构化候选特征集发送至规则校验模块。若结构化解析失败,则增加解析失败计数值,并生成包含失败字段、失败原因、候选值和目标输出数据结构的格式纠偏任务。当解析失败计数值小于预设解析失败上限时,将格式纠偏任务发送至大模型推理模块;当解析失败计数值达到预设解析失败上限时,将会话控制块状态设置为failed,并拒绝候选医嘱数据的写入。

18、所述结构化候选特征集可以采用对象、结构体、键值对、json数据、protobuf数据或者连续字节数据进行存储和传输,本发明不限定所述结构化候选特征集必须具有固定字节长度。

19、四、 规则库匹配及确定性断言校验结构化医学规则库包括多个规则项,每一规则项对应一个确定性约束条件。所述规则项至少包括:规则标识、药物标准编码、剂型、给药途径、患者适用条件、规则类型、规则限定值、限定值单位、冲突药物集合、规则来源、规则版本、生效时间、失效时间、启用状态、可纠偏标识、允许修改字段集合、纠偏输出数据结构标识。所述患者适用条件可以包括年龄范围、体重范围、肾功能范围、肝功能分级、妊娠状态、哺乳状态和过敏状态中的一种或多种。

20、不同药物、不同剂型、不同给药途径以及不同患者条件分别对应不同的规则项。规则校验模块不采用同一组年龄、体重、肾功能和肝功能修正系数统一计算全部药物的安全剂量阈值,而是根据当前候选医嘱数据和患者约束数据,选择适用条件得到满足的具体规则项。

21、规则校验模块按照以下顺序选择适用规则:根据药物标准编码检索候选规则项;根据剂型和给药途径排除不适用的规则项;根据患者年龄、体重、肝肾功能和其他患者约束条件筛选适用规则项;根据规则项的生效时间、失效时间和启用状态确定当前有效规则项;对所确定的有效规则项分别执行剂量、频次、过敏、禁忌和药物相互作用校验。

22、请参阅图3,图3示出了结构化医学规则库的双缓冲区热更新及会话规则版本绑定关系。每一会话控制块在建立时绑定一个规则库版本。同一会话控制块对应的首次校验以及全部自校正迭代均使用所绑定的规则库版本,从而避免同一候选医嘱处理会话在不同迭代轮次使用不同规则条件。当规则库发生更新时,新建立的会话控制块使用更新后的规则库版本;更新前已经建立的会话控制块继续使用原绑定的规则库版本,直至该会话处理完成。规则库管理模块设置活跃缓冲区和非活跃缓冲区,并设置指向当前活跃缓冲区的原子指针。更新规则库时,将新规则版本写入非活跃缓冲区,对新规则版本执行文件完整性、必填字段完整性、规则版本一致性和规则索引可用性校验;校验通过后,通过原子操作将所述原子指针切换至新规则版本所在的缓冲区。会话控制块建立时记录其绑定的规则库版本,并增加对应规则库版本的会话引用计数;会话进入committed或者failed状态后,减少所述会话引用计数。旧规则库版本的会话引用计数降为零之前,不覆盖保存所述旧规则库版本的缓冲区;引用计数降为零后,该缓冲区可以转为非活跃缓冲区,用于下一规则版本的写入。

23、规则校验模块对结构化候选特征集执行确定性断言校验。设结构化候选特征集为f,当前会话绑定的规则库版本为rv,适用于所述结构化候选特征集的规则集合为j(f,rv)则校验结果可以表示为:

24、

25、当所有适用规则的判断结果均为真时,校验通过;当至少一项适用规则的判断结果为假时,校验不通过。当未检索到适用于当前药物编码、剂型、给药途径和患者约束条件的规则项时,或者预设必需规则类型存在缺失时,规则校验模块不将候选医嘱数据判定为通过,而是生成规则缺失类型的校验结果。当同一规则库版本中存在适用条件相同但限定值相互冲突的多个有效规则项时,规则校验模块生成规则冲突类型的校验结果,并拒绝候选医嘱数据进入待签名表。规则缺失类型和规则冲突类型被设置为不可纠偏违规类型。产生不可纠偏违规类型的校验结果时,失败控制模块将会话控制块设置为failed,不生成结构化纠偏任务,并拒绝候选医嘱数据进入待签名表和核心医嘱表。每一规则项设置可纠偏标识,用于表示该规则被触发后是否允许通过大模型修订候选医嘱数据。对于可纠偏标识为真的规则项,根据该规则项关联的允许修改字段集合生成结构化纠偏任务;对于可纠偏标识为假的规则项,将对应违规类型判定为不可纠偏违规类型。规则缺失类型和规则冲突类型默认属于不可纠偏违规类型。规则校验模块输出的全部违规类型被划分为可纠偏违规类型和不可纠偏违规类型,二者互不重叠,且覆盖规则校验模块能够输出的全部违规类型。

26、规则校验模块输出的校验结果至少包括:校验是否通过、被触发的规则标识、违规字段、规则限定值、当前候选值、违规类型、规则来源、规则版本。当校验通过时,进入分阶段数据库写入流程;当校验不通过且违规类型属于预设可纠偏违规类型时,进入结构化纠偏流程;当违规类型属于预设不可纠偏违规类型时,进入失败控制流程。

27、在一个实施例中,系统可以使用bloom filter对合并用药集合进行快速预筛选。当bloom filter判断当前药物与合并用药集合不存在冲突时,可以继续执行其他校验;当bloom filter判断可能存在冲突时,规则校验模块进一步调用完整药物标准编码集合进行精确集合比较。bloom filter的结果不直接作为最终配伍禁忌结论,最终校验结果以精确集合比较结果为准。

28、五、结构化纠偏任务及优先级调度当确定性断言校验不通过且所述违规类型属于预设可纠偏违规类型时,纠偏任务生成模块根据校验结果生成违规元数据记录。所述违规元数据记录至少包括:会话标识、被触发的规则标识、规则版本、违规类型、违规字段、规则限定值、当前候选值、冲突药物集合、规则来源。

29、纠偏任务生成模块根据所述违规元数据记录和当前候选医嘱数据生成结构化纠偏任务。所述结构化纠偏任务至少包括:会话标识、规则库版本、当前候选医嘱数据、被触发的规则标识、违规字段、规则限定值、候选值、违规类型、允许修改字段集合、禁止修改字段集合和目标输出数据结构。

30、允许修改字段集合用于限定大模型可以调整的数据字段。例如,当违规字段为单次剂量时,可以将单次剂量设置为允许修改字段;患者年龄、体重、过敏史、肝肾功能信息以及已经确认的药物标准编码可以设置为禁止修改字段。大模型推理模块根据结构化纠偏任务生成修订候选医嘱数据时,只能修改允许修改字段集合中的字段,不得修改禁止修改字段集合中的字段。结构化解析模块分别按照目标输出数据结构,对当前候选医嘱数据和大模型返回的修订候选医嘱数据进行字段对齐。设第k轮当前候选医嘱数据为x(k),大模型返回的修订候选医嘱数据为,则变化字段集合表示为:其中,

f表示目标输出数据结构中的字段,允许修改字段集合为a,禁止修改字段集合为b。允许修改字段集合a与禁止修改字段集合b互不相交,且二者的并集覆盖目标输出数据结构中的全部字段。当满足下式时,判定修订候选医嘱数据通过字段差异校验:当时,将所述修订候选医嘱数据判定为无效纠偏结果,不更新当前写意图载荷,并递增当前迭代次数。当时,丢弃所述修订候选医嘱数据,将本次结果标记为结构化解析失败,并由[0025]所述失败处理流程统一递增一次解析失败计数值,并记录发生变化的禁止修改字段。当字段差异校验通过时,按照下式形成下一轮候选医嘱数据:

31、

32、由此,仅将允许修改字段集合中的变化字段合并至当前写意图载荷,其他字段继续使用当前候选医嘱数据中的原字段值。

33、目标输出数据结构用于限定大模型返回数据的字段名称、字段类型和必填字段。在一个实施例中,结构化纠偏任务被序列化为json或者protobuf消息,并根据大模型接口要求转换为模型输入消息。当大模型返回的数据不符合目标输出数据结构时,将本次结果标记为结构化解析失败,并由[0025]所述失败处理流程统一递增一次解析失败计数值。

34、系统设置普通推理任务队列和纠偏任务队列。普通推理任务队列用于保存未处于纠偏状态的模型推理任务;纠偏任务队列用于保存已经进入预提交待决状态且校验未通过的纠偏任务。当纠偏任务队列非空时,推理调度器优先从纠偏任务队列获取纠偏任务;只有在纠偏任务队列为空时,推理调度器才从普通推理任务队列获取普通推理任务。

35、推理模块可以包括一个或者多个推理工作单元,推理工作单元的数量根据可用推理资源进行配置。因此,本发明不限定推理模块必须采用单线程处理。

36、当所述修订候选医嘱数据通过输出结构校验和字段差异校验后,控制单元仅将允许修改字段集合中的变化字段合并至临时写缓冲区中的当前写意图载荷,增加迭代计数值,并重新执行结构化解析和确定性断言校验。当修订候选医嘱数据通过校验时,进入待签名表写入流程。当迭代计数值达到预设迭代上限仍未通过校验时,不再继续调用大模型,将会话控制块状态设置为failed,并拒绝候选医嘱数据写入。所述迭代控制使自校正流程能够在预设有限步骤内终止,但不表示每一候选医嘱数据均必然在所述迭代上限内校正成功。

37、六、待签名表与核心医嘱表的分阶段写入请参阅图4,图4示出了候选医嘱写入请求从预提交待决状态、第一独立物理事务写入待签名表、等待医师电子签名,到第二独立物理事务写入核心医嘱表的时序关系。当结构化候选特征集通过确定性断言校验后,事务写入模块根据临时写缓冲区中经校验的写意图载荷重构第一数据库写入请求。事务写入模块从后端数据库连接池获取第一数据库连接,在所述第一数据库连接上启动第一物理事务,并将经校验的候选医嘱数据写入待签名表。

38、如图4所示,当候选医嘱数据成功写入待签名表后,事务写入模块提交第一独立物理事务,释放第一数据库连接以及第一物理事务占用的数据库锁资源,并将会话控制块状态设置为waiting_signature。第一物理事务在候选医嘱数据写入待签名表后即结束,不持续保持至医师电子签名时刻。此时,候选医嘱数据虽然已经通过规则校验,但尚未写入核心医嘱表。

39、待签名表中的每一候选医嘱记录至少包括待签名记录标识、会话标识、请求标识、候选医嘱数据、候选医嘱数据摘要值、规则库版本、模型版本、校验结果摘要、写入时间和签名状态。所述签名状态初始设置为未签名。第一物理事务提交成功后,数据库代理模块向上游医嘱应用返回待签名状态响应,所述待签名状态响应至少包括会话标识、待签名记录标识和待签名状态码;所述待签名状态响应不表示候选医嘱数据已经写入核心医嘱表。

40、当系统接收到医师电子签名信号时,根据会话标识和待签名记录标识查询对应的待签名记录,并验证所述医师电子签名信号与所述待签名记录之间的对应关系。所述医师电子签名信号至少包括待签名记录标识、签名医师标识、候选医嘱数据摘要值、签名值和签名时间。事务写入模块在启动第二独立物理事务之前,验证待签名记录标识、候选医嘱数据摘要值、签名医师权限以及签名值的有效性。验证通过后,事务写入模块从后端数据库连接池重新获取第二数据库连接,在所述第二数据库连接上启动第二物理事务。

41、在所述第二物理事务中,事务写入模块将对应待签名记录中的医嘱数据写入核心医嘱表,并将待签名记录的签名状态更新为已签名。第二物理事务提交成功后,释放第二数据库连接及其数据库锁资源,并将会话控制块状态设置为committed。第一物理事务与第二物理事务是相互独立的数据库事务。二者之间不存在持续保持的数据库物理事务或者数据库锁。

42、当待签名记录未接收到医师电子签名信号时,所述待签名记录不进入核心医嘱表。因此,通过规则校验仅构成写入待签名表的条件,医师电子签名构成写入核心医嘱表的进一步条件。

43、七、异常处理及失败安全控制本实施例采用失败安全控制原则。当系统无法确认候选医嘱数据已经通过结构化解析、确定性断言校验和医师电子签名时,不将所述候选医嘱数据写入核心医嘱表。

44、当大模型推理模块在预设处理时限内未返回修订候选医嘱数据时,控制单元将所述会话控制块状态设置为failed,记录推理超时原因,并拒绝候选医嘱数据写入。

45、当当前会话绑定的规则库版本不可用、校验规则读取失败或者规则校验模块发生异常时,系统不自动切换到其他规则库版本继续校验,而是将当前会话设置为失败状态。

46、当客户端网络连接在预提交待决期间断开时,系统根据会话控制块保留或者清理当前处理状态。无论客户端网络连接是否保持,在候选医嘱数据未通过校验并完成医师电子签名之前,系统不得自动将所述候选医嘱数据写入核心医嘱表。

47、当第一物理事务写入待签名表失败时,系统回滚第一独立物理事务,释放对应数据库连接和锁资源,将会话控制块设置为failed,结束预提交待决状态,并向上游医嘱应用返回写入失败状态。不将会话状态设置为waiting_signature,并记录写入失败原因。

48、当第二独立物理事务写入核心医嘱表失败时,系统回滚第二独立物理事务,释放对应数据库连接和锁资源,将最终写入状态设置为核心写入失败,并保留待签名记录和经验证的电子签名信息,不将待签名记录标记为已完成核心写入。在预设重试次数内且满足幂等校验条件时,重新执行第二独立物理事务;达到预设重试上限仍未成功时,将会话控制块状态设置为failed。

49、当接收到重复的医师电子签名信号或者重复的核心写入请求时,系统根据会话标识、待签名记录标识和最终写入状态执行幂等校验;待签名记录标识或者请求标识在核心医嘱表中设置唯一性约束。对已经成功写入核心医嘱表的数据,不再重复执行第二物理事务。

50、当待签名记录超过预设等待时限仍未接收到医师电子签名信号时,系统将所述待签名记录的签名状态设置为timeout,并将对应会话控制块的会话状态设置为failed。签名状态为timeout的候选医嘱数据不得自动写入核心医嘱表。

51、八、完整处理实例在本实施例中,上游医嘱应用形成一项候选医嘱写入请求,候选医嘱数据包括虚构药物a、单次剂量0.5g、每日给药2次以及口服给药途径。数据库代理模块在所述候选医嘱写入请求发送至后端数据库之前对其进行拦截,建立会话控制块scb-001,并将候选医嘱写入请求设置为预提交待决状态。此时,数据库代理模块未向后端数据库发送事务开启指令或者写入指令,后端数据库中不存在与该请求对应的物理事务。

52、结构化解析模块将虚构药物a映射为标准药物编码d001,并将0.5g换算为500mg,形成结构化候选特征集。当前会话控制块绑定的规则库版本为rv-01。在本实施例采用的虚构规则库中,规则r-d001-01规定,在本实施例设定的患者条件下,药物d001的单次剂量限定值为400mg。

53、规则校验模块判断候选值500mg大于规则限定值400mg,生成校验不通过结果。所述校验结果包括:规则标识r-d001-01;违规字段为单次剂量;规则限定值为400mg;当前候选值为500mg;违规类型为剂量越界;该违规类型属于可纠偏违规类型。

54、纠偏任务生成模块根据所述校验结果生成结构化纠偏任务。所述纠偏任务将单次剂量设置为允许修改字段,将药物标准编码、患者约束数据和给药途径设置为禁止修改字段,并要求大模型按照预设结构化格式返回修订候选医嘱数据。

55、推理调度器优先调度所述纠偏任务。大模型推理模块按照目标输出数据结构返回修订候选医嘱数据,其中单次剂量被修订为400mg。结构化解析模块比较当前候选医嘱数据和修订候选医嘱数据,确定变化字段集合仅包括单次剂量字段,且禁止修改字段集合中的字段均未发生变化。数据库代理模块仅将修订后的单次剂量字段合并至当前写意图载荷,并重新执行结构化解析和确定性断言校验。重新校验通过后,系统生成待签名记录标识和候选医嘱数据摘要值。事务写入模块启动第一独立物理事务,将经校验的候选医嘱数据写入待签名表;第一独立物理事务提交后,释放对应数据库连接和锁资源,并将会话控制块状态设置为waiting_signature。

56、在接收到医师电子签名信号后,事务写入模块启动第二物理事务,将所述待签名记录写入核心医嘱表。所述药物编码、规则限定值及候选剂量均为用于说明系统数据处理流程的虚构数据,不构成任何具体药物的临床用药建议。