Files
AIclinicalresearch/docs/03-业务模块/IIT Manager Agent/02-技术设计/文档 B:EDC 适配器 (REDCap) 技术详细设计 (V1.0).md
HaHafeng 66255368b7 feat(admin): Add user management and upgrade to module permission system
Features - User Management (Phase 4.1):
- Database: Add user_modules table for fine-grained module permissions
- Database: Add 4 user permissions (view/create/edit/delete) to role_permissions
- Backend: UserService (780 lines) - CRUD with tenant isolation
- Backend: UserController + UserRoutes (648 lines) - 13 API endpoints
- Backend: Batch import users from Excel
- Frontend: UserListPage (412 lines) - list/filter/search/pagination
- Frontend: UserFormPage (341 lines) - create/edit with module config
- Frontend: UserDetailPage (393 lines) - details/tenant/module management
- Frontend: 3 modal components (592 lines) - import/assign/configure
- API: GET/POST/PUT/DELETE /api/admin/users/* endpoints

Architecture Upgrade - Module Permission System:
- Backend: Add getUserModules() method in auth.service
- Backend: Login API returns modules array in user object
- Frontend: AuthContext adds hasModule() method
- Frontend: Navigation filters modules based on user.modules
- Frontend: RouteGuard checks requiredModule instead of requiredVersion
- Frontend: Remove deprecated version-based permission system
- UX: Only show accessible modules in navigation (clean UI)
- UX: Smart redirect after login (avoid 403 for regular users)

Fixes:
- Fix UTF-8 encoding corruption in ~100 docs files
- Fix pageSize type conversion in userService (String to Number)
- Fix authUser undefined error in TopNavigation
- Fix login redirect logic with role-based access check
- Update Git commit guidelines v1.2 with UTF-8 safety rules

Database Changes:
- CREATE TABLE user_modules (user_id, tenant_id, module_code, is_enabled)
- ADD UNIQUE CONSTRAINT (user_id, tenant_id, module_code)
- INSERT 4 permissions + role assignments
- UPDATE PUBLIC tenant with 8 module subscriptions

Technical:
- Backend: 5 new files (~2400 lines)
- Frontend: 10 new files (~2500 lines)
- Docs: 1 development record + 2 status updates + 1 guideline update
- Total: ~4900 lines of code

Status: User management 100% complete, module permission system operational
2026-01-16 13:42:10 +08:00

4.8 KiB
Raw Blame History

文档 BEDC 适配器 (REDCap) 技术详细设计 (V1.0)

1. 需求映射PRD V3 对 REDCap 能力的诉求

基于 IIT Manager Agent V3 的功能定义,适配器必须支持以下 REDCap 核心能力。

1.1 感知能力 (Read & Monitor)

  • 实时监听 (Real-time Hook):对应“数据质控 Agent”。当 CRC 录入数据时REDCap 必须能主动“推”出事件。
  • 数据全量/增量导出 (Data Export):对应“项目管理 Agent”。需要定期抓取所有记录进行入组率、完整率的统计分析。
  • 元数据定义获取 (Metadata Export):对应“方案数字化”。需要获取项目的表单结构、变量名、字段类型(下拉框/文本框),用于 AI 自动生成映射。

1.2 执行能力 (Write & Query)

  • 记录注入与更新 (Record Import):对应“数据智能采集 Agent”。AI 识别出的结构化数据需写入指定字段。
  • 质疑管理 (Query/Data Resolution):对应“质控 Agent”。AI 发现问题后,需通过接口在 REDCap 中创建“质疑 (Query)”。
  • 用户认证映射 (Auth API):确保 Agent 操作时具备合法的 User Token 审计。

2. 技术实现External Module (EM) 与 REST API 混合架构

为了实现深度融合且保持高性能,我们采用 “EM 侧挂插件 + Node.js 适配器” 的混合方案。

2.1 External Module (EM) 核心职责:主动钩子

由于我们拥有 REDCap 源码,我们将开发一个名为 ai_research_assistant 的 EM。

  • 数据保存钩子 (redcap_save_record)
    • 逻辑每当记录保存EM 捕获当前 project_id 和 record_id。
    • 动作:通过 HTTP POST 发送 Webhook 给 Node.js 后端。
    • 价值:实现“质控 Agent”的亚秒级响应。
  • 页面注入钩子 (redcap_every_page_top)
    • 逻辑:在数据录入页面注入自定义 JS (ai_assistant.js)。
    • 动作:在录入框旁显示 AI 辅助按钮或高亮证据提醒。
    • 价值:实现录入阶段的“数字助手”入口。

2.2 Node.js EDC Adapter 核心职责:被动访问

在后端封装 RedcapAdapter 类,处理所有主动抓取任务。

  • API 调用封装
    • exportRecords: 抓取临床数据。
    • importRecords: 回写影子状态确认后的数据。
    • exportMetadata: 获取表单变量清单。
    • importQueries: (基于 EM 的自定义页面) 实现 AI 自动创建质疑。

3. 关键接口清单与实现细节

3.1 核心对接接口表

对接功能 REDCap 原生 API / EM Hook 对应的 Agent 动作
实时入组通知 redcap_save_record (Hook) 触发质控检查、更新日报
全量数据同步 exportRecords (API) 生成周报趋势图、脱落分析
AI 自动录入 importRecords (API) 采集 Agent 写入数据(影子确认后)
数据异常预警 importQueries (自定义) 质控 Agent 创建质疑条目
方案解析映射 exportMetadata (API) 获取变量清单进行 AI 语义映射

3.2 影子状态 (Shadow State) 的回写链路

这是白皮书的核心要求,其技术实现路径如下:

  1. 建议生成Agent 结果存入我们的 pending_actions 表。

  2. 人类审核CRC 在 Workbench 点击“确认”。

  3. 适配器调用Node.js 提取该条目的 edc_api_token组装标准的 REDCap importRecords JSON 报文。

  4. 回写执行
    // REDCap 接受的数据格式示例
    [
    {"record_id": "P001", "redcap_repeat_instance": 1, "field_name": "ai_qc_status", "value": "2"}
    ]

  5. 审计闭环:回写成功后,更新 pending_actions.status = 'EXECUTED'。

4. 独特技术亮点External Module 对外合作机制

利用 REDCap 的 EM 机制,我们可以实现比普通 API 更深入的整合:

  1. 自定义菜单链接 (links)
    在 REDCap 左侧导航栏直接嵌入 “壹证循 AI 控制中心” 的 H5 链接,让用户不出 EDC 就能使用我们的功能。
  2. 定时任务管理 (crons)
    在 REDCap 侧利用 Cron 触发定期的数据健康检查,减轻我们主系统的轮询压力。
  3. 字段级颜色高亮:
    通过 EM 修改录入页面的 DOM将 Agent 发现有问题的字段标记为黄色或红色。

5. 安全与认证设计 (Security)

  • 双重 Token 校验
    • 系统级EM 访问 Node.js 时Headers 携带 X-SignatureHMAC-SHA256 加密)。
    • 用户级Node.js 访问 REDCap 时,使用加密存储的 Personal API Token。
  • API 限流 (Rate Limiting)
    针对大中心项目,适配器自动对 API 请求进行分片和限流,防止 REDCap 服务器因高频 AI 质控而崩溃。

维护者:架构组 & REDCap 专家 | 状态:详细设计完成