乐于分享
好东西不私藏

[医疗软件开源] 专为伦理审查提速的开源差距台账工具

[医疗软件开源] 专为伦理审查提速的开源差距台账工具

在临床试验启动流程中,伦理审查是关键一环。研究者提交的伦理材料(如研究方案、知情同意书)需与已注册的临床试验信息保持高度一致。但现实中,注册信息与伦理文件常存在样本量不一致、主要终点表述差异、入排标准缺失等细节偏差。这些“小差距”若未被及时发现,轻则导致伦理初审退回补正,重则影响试验合规性与监管审查进度。IRB Registration Gap Ledger 正是为此而生,一个面向医院伦理委员会、临床研究中心和研究协调员的开源工具,它不依赖大语言模型,专注用可解释、可审计的规则引擎,自动比对注册信息与伦理文档,生成结构化差距台账。

项目概述:聚焦伦理审查初审提效

IRB Registration Gap Ledger 的核心目标非常明确:加速伦理办公室的初审流程。它不做全生命周期管理,也不替代人工终审,而是精准解决“材料与注册是否对得上”这一高频痛点。

项目采用“输入—比对—输出”三步闭环设计: – 输入端支持 ClinicalTrials.gov(NCT号)和中国临床试验注册中心(ChiCTR)两大注册源; – 文档侧兼容 Word(.docx)和 PDF 格式,覆盖伦理审查中最常见的研究方案与知情同意书; – 输出结果为带严重程度分级的差距台账,含序号、差距类型、注册值、材料值、差异描述五维字段,便于快速定位与分类处理。

整个系统基于纯规则引擎构建,所有条款抽取逻辑均通过关键词匹配、数值容差计算、文本相似度阈值(如 jieba 分词 + 余弦相似度)等确定性方法实现。这意味着无 LLM 幻觉风险,结果可追溯、可复现、可解释,符合医疗合规场景对确定性的刚性要求。

技术亮点:轻量、可控、双模可用

该项目虽定位垂直,但在技术选型与架构设计上兼顾了实用性与工程严谨性。

纯规则 NLP 引擎,拒绝黑盒幻觉不同于当前大量依赖大模型的文档分析工具,本项目完全规避了生成式 AI 的不确定性。条款抽取模块(clause_extractor.py)基于中文分词库 jieba 构建关键词模板,例如识别“样本量”“计划入组”“主要终点”“主要疗效指标”等术语,并结合上下文位置与数值提取规则进行结构化解析。所有判断逻辑均可在源码中直接查阅,无需调用外部 API 或加载不可控模型权重。

双注册源支持,兼顾国际与本土实践– 对 ClinicalTrials.gov,项目封装了官方 v2 API 客户端(ctgov_client.py),支持 API Key 认证与限流控制; – 对 ChiCTR,项目采用稳健的网页爬虫(chictr_scraper.py),内置请求间隔配置、超时重试与代理支持,适配其反爬策略。

CLI 与 Web 双界面,覆盖不同用户角色– 技术人员或批量处理者倾向使用命令行接口(CLI),通过 Click 框架提供清晰子命令体系; – 伦理办非技术人员可直接启动 Flask Web 服务(web_app.py),通过浏览器上传文件、填写注册号,零代码完成比对。

容器化就绪,开箱即用项目完整支持 Docker 部署。仅需 docker-compose up -d 一条命令,即可在本地或服务器启动 Web 服务,端口默认为 5001。数据目录(./data)与日志目录(./logs)均支持挂载,确保历史记录与输出文件持久化。

cd irb-registration-gap-ledgerdocker-compose up -d
# 启动后访问http://localhost:5001

模块化设计,易于二次开发项目按职责清晰拆分为六大核心模块:API 客户端、网页爬虫、文档解析器、条款抽取器、比对引擎、台账生成器。每个模块独立测试,tests/ 目录下包含完整的单元与集成测试套件,方便机构根据自身注册平台或文档模板进行定制扩展。

应用场景:可用于伦理初审、质控自查与跨部门协同

本工具并非通用文档比对器,其设计深度贴合真实科研管理场景:

  • 伦理办公室初审辅助新提交项目材料时,管理员可一键比对 NCT 号或 ChiCTR 号,快速获取差距清单,避免人工逐字核对耗时费力。高风险差距(如样本量偏差超 20%)自动标为“高”,优先处理。

  • 研究者自查与预审研究团队在正式提交前,可自行运行 CLI 工具验证材料一致性,提前修正入排标准缺失、终点表述不统一等问题,减少伦理办退回次数。

  • 多中心试验跨中心一致性检查当同一研究在多个中心分别注册与提交伦理材料时,可批量比对各中心注册号与对应方案,识别因沟通偏差导致的关键字段不一致。

  • 临床试验质量控制(CTQC)日常抽检质控人员可定期抽取已批准项目,比对其注册信息与归档伦理文档,生成 CSV 汇总报告,用于内部质控分析与持续改进。

需要强调的是,本工具不替代伦理审查本身,也不对科学性、伦理性做判断;它只回答一个具体问题:注册所写,是否与材料所呈一致?

使用指南:从安装到产出一份差距台账

无论你是首次尝试的技术爱好者,还是需要快速上线的伦理办工程师,以下步骤均可在 5 分钟内完成。

快速安装(推荐虚拟环境)

git clone https://github.com/nexorin9/irb-registration-gap-ledgercd irb-registration-gap-ledgerpython -m venv venvsource venv/bin/activate  # Linux/Mac# 或.\venv\Scripts\activate  # Windowspip install -r requirements.txtpython main.py --help

CLI 单条比对(以 NCT 号为例)

python main.py compare --nct NCT04392756 --docx data/sample_ethics_docs/SAMPLE_protocol.docx

终端将输出格式化表格台账,含统计摘要。如需存档,可导出为 JSON 或 Markdown:

python main.py compare --nct NCT04392756 --docx data/sample_ethics_docs/SAMPLE_protocol.docx --output-json result.jsonpython main.py report --input-json result.json --output report.md --format markdown

Web 界面启动与操作

python main.py

启动后访问 http://localhost:5001,进入首页: – 选择注册源(ClinicalTrials.gov 或 ChiCTR); – 输入注册号(如 NCT04392756 或 ChiCTR20000001); – 上传 .docx 或 .pdf 文件; – 点击「提交比对」,数秒后查看结构化台账与严重程度分级。

批量处理亦可在 /batch 页面完成:上传 CSV 映射表(含注册号与文件路径)及 ZIP 压缩包,系统自动解压并逐条比对,最终生成汇总报告与单条结果文件。

关键配置说明

所有行为参数均可通过 config.json 统一管理。例如调整样本量容忍度(默认 10%)、终点相似度阈值(默认 0.7)、ChiCTR 请求间隔(默认 2 秒)等。环境变量可覆盖配置项,适合 CI/CD 或容器部署场景:

{  "comparison": {    "sample_size_tolerance_percent": 10,    "endpoint_similarity_threshold": 0.7,    "eligibility_keyword_match_threshold": 0.6  }}

遇到 ChiCTR 爬取受限?只需设置代理环境变量:

export HTTP_PROXY=http://your-proxy:8080export HTTPS_PROXY=http://your-proxy:8080python main.py compare --reg-id ChiCTR20000001 --pdf sample.pdf

总结:小而准的医疗合规提效工具

IRB Registration Gap Ledger 不追求功能大而全,而是把一件事做到扎实、可靠、易用。它用 Python 生态中成熟稳定的组件(requests、BeautifulSoup、python-docx、PyPDF2、jieba、Flask、Click),构建了一个无外部模型依赖、无云端绑定、无隐私泄露风险的本地化工具。所有文档解析与比对均在本地完成,注册信息仅作必要字段拉取,原始材料不上传、不存储于第三方服务。

其价值不在于炫技,而在于务实:让伦理审查人员每天节省 1 小时人工核对时间,让研究者少一次材料返工,让临床试验启动周期更可控。项目采用 MIT 开源协议,代码结构清晰,文档详尽,附带完整示例数据与测试用例,具备良好的可维护性与可扩展性。

项目当前免费开源,若您对项目有疑问、使用上的困惑或想深入交流,欢迎私信我们,或加入社群讨论。

项目地址:https://github.com/nexorin9/irb-registration-gap-ledger