3. 电子知情同意平台的整体架构设计
电子知情同意(eConsent)平台不是把纸质同意书搬到屏幕上那么简单。它要在受试者阅读、提问、签署、留存、稽查的全过程中,同时满足法规可追溯、数据不可篡改、与临床系统实时协同三重要求。因此,架构设计的核心任务是:把"人机交互""业务规则""证据留存""系统协同"这四类关注点分离到不同层,并明确层与层之间的契约。本节采用四层架构——前端交互层、业务逻辑层、数据持久层、外部系统集成层,并给出系统上下文图与部署图的落地画法。
一、四层架构的职责边界
前端交互层面向受试者、研究者、监查员三类角色,负责知情材料呈现、多媒体播放、理解度测验、电子签名采集与离线缓存。关键约束是:所有签署动作必须在客户端完成"身份再确认+意愿勾选+签名笔迹"三要素采集,且本地只做暂存,不做最终生效判定。
业务逻辑层是平台的"规则中枢",承载版本管理、签署流程编排、理解度测验判分、签署有效性校验、审计事件生成。它必须回答一个核心问题:这次签署是否构成一次合法有效的知情同意? 判定依据包括:受试者是否已阅读当前生效版本、测验是否达标、签名时间是否落在访视窗口内、是否存在重复签署。
数据持久层负责同意书版本、签署记录、审计日志、签名图像与哈希值的存储。设计要点是签署记录只追加不修改,任何更正以"补充记录+原因"方式实现;同时保存原文哈希,用于事后完整性校验。
外部系统集成层对接EDC、CTMS、IWRS、ePRO与身份认证服务,实现受试者状态同步、访视触发、随机化前置校验等。集成层应统一封装协议差异,向上提供稳定的领域接口。
二、系统上下文图:谁与平台交互
系统上下文图回答"平台边界在哪里"。以某III期肿瘤试验为例,平台外部实体包括:受试者(阅读与签署)、研究者/授权护士(发起知情、答疑、确认)、监查员(核查签署完整性)、EDC(接收同意状态与日期)、IWRS(随机化前校验同意是否有效)、身份认证服务(短信验证码或SSO)。平台与EDC之间传递的是"受试者编号—同意版本—签署日期—有效性标志"四元组;与IWRS之间是同步校验接口,若同意无效则拒绝发放随机号。这种上下文关系决定了集成层必须提供幂等接口,避免重复推送导致状态错乱。
三、部署图:从逻辑层到物理节点
部署图把逻辑层映射到真实运行环境。推荐的最小生产部署为:Web/应用服务器承载前端静态资源与业务逻辑服务(可容器化,双实例负载均衡);数据库服务器部署PostgreSQL主从,签署记录库启用WAL归档;对象存储存放签名图像、PDF与视频,开启版本控制与合规锁定;审计日志单独落库并每日生成哈希链摘要,摘要文件异地备份。受试者端通过HTTPS访问,研究者端可走院内网+双因素认证。若试验涉及多中心,集成层以"中心编号"作为路由键,确保数据隔离。
四、关键设计决策与示例参数
以下给出一份可直接参考的签署有效性校验规则表(示例参数,实际项目需按方案调整):
| 校验项 | 规则 | 不通过时的处理 |
|---|---|---|
| 版本一致性 | 签署版本 = 当前生效版本 | 阻断签署,提示重新阅读 |
| 理解度测验 | 得分 ≥ 80 分(满分100) | 允许重测,最多3次 |
| 访视窗口 | 签署时间在访视窗口 ±3 天内 | 标记超窗,需研究者备注 |
| 重复签署 | 同一受试者同一版本仅一条有效记录 | 拒绝写入,返回已有记录ID |
| 签名完整性 | 签名图像非空且哈希可校验 | 要求重新签名 |
在实现层面,业务逻辑层可用如下伪代码表达签署提交的核心判定顺序:
function submitConsent(subjectId, versionId, quizScore, signTime, signatureHash):
version = versionRepo.getEffective(versionId)
if version == null: return REJECT("版本未生效")
if quizScore < 80: return REJECT("测验未达标")
if not inVisitWindow(subjectId, signTime, ±3d): markFlag("超窗")
if consentRepo.existsValid(subjectId, versionId): return REJECT("重复签署")
record = consentRepo.append(subjectId, versionId, signTime, signatureHash)
auditLog.write("SIGN", subjectId, versionId, signTime)
integration.pushToEDC(subjectId, versionId, signTime, "VALID")
return ACCEPT(record.id)
五、架构落地检查要点
- 层间契约清晰:前端不直接访问数据库,集成层不承载业务规则。
- 签署记录不可变:任何更正以追加记录实现,保留原记录与原因。
- 哈希可验证:同意书正文、签名图像均保存哈希,支持事后完整性校验。
- 集成幂等:向EDC/IWRS推送使用唯一业务键,重复调用不产生副作用。
- 部署可扩展:应用无状态化,会话与缓存外置,便于多中心横向扩容。
四层架构的价值不在于画得漂亮,而在于让每个团队知道自己的边界:前端只管采集与呈现,业务层只管判定与编排,持久层只管不可篡改地留存,集成层只管稳定地对外协同。把这四条边界守住,eConsent平台才能在稽查、核查与多系统联动中站得住。