试验的物流信息 — ECRIN MDR 临床研究元数据仓库

112 万项研究 / 6 个来源 / 国别与数据对象层

来源 https://crmdr.ecrin.org/发布时间: 2026-10-26最后更新: 2026-10-26 阅读 17
试验的物流信息 — ECRIN MDR 临床研究元数据仓库

信息速览

数据集名称试验的物流信息 — ECRIN MDR 临床研究元数据仓库
数据类型元数据,文献引用,原始数据链接
规模不适用(试验层元数据;门户内含 110 万余项研究记录、36 万余个数据对象记录,不含任何个体数据)
接入方式https://crmdr.ecrin.org/
AI 就绪度

一项欧洲跨国试验的论文会告诉你入组了 1,200 人,但几乎不会告诉你这 1,200 人在六个国家的十七个中心之间是怎么分的、哪些国家的伦理批件先于哪些、数据最终落在哪台服务器上。这些信息真实存在,只是散落在不同国家的注册库、申办方的内部台账和伦理委员会的档案里。ECRIN MDR 想做的,是把这一层「物流信息」汇到同一个可以检索的地方。

它由欧洲临床研究基础设施网络(ECRIN)运营,总部巴黎,是这家机构工具箱里最安静也最容易被误解的一件:它不是试验注册库,不接收新注册;不是数据仓库,不存原始数据;也不是审稿人用来评判研究质量的工具,官方页面特意强调它「不做观点判断、不做人工策展、不加质量过滤」。它只做一件事——告诉你某项试验有哪些文档、这些文档在哪儿、能不能拿到。

本次核验于 2026 年 10 月 26 日进行,通过 ECRIN 官网产品页与门户自身的 InterMine 查询接口取得可复现数字,规模、结构、边界三类数字均有出处。一屏速览见下表。

维度 内容
全称 Clinical Research Metadata Repository (MDR),亦称 ECRIN Metadata Repository
运营方 ECRIN(European Clinical Research Infrastructure Network),非营利,总部巴黎
定位 试验元数据与数据对象的可发现层,不存原始数据
门户地址 crmdr.ecrin.org(旧域名 newmdr.ecrin.org 跳转至此)
技术底座 InterMine 数据仓库(版本 35)+ BlueGenes 前端,Mine 名 mdrmine
研究记录数 112 万余(2026-10-26 查询)
数据对象记录数 36 万余
来源库个数 6:ICTRP、CTG、CTIS、EUCTR、BioLINCC、BBMRI
国家与地区 252 条 Country 记录
国别明细记录 152 万余条 StudyCountry
中心明细记录 3,513,748 条 StudySite
记录载体 关系模型 95 个类,核心为 Study / StudyObject / StudyCountry / StudySite
访问方式 网页检索 + XML 查询接口,均无需注册
元数据许可 官方未单独声明;底层各继承来源库许可
更新方式 定期批量抽取,官方称「regularly」但不公布同步时点
最像什么 临床试验的物流单,而不是临床试验的成绩单

§1 它要解决的具体麻烦

1.1 跨国试验的「文件散落」是一个真实且昂贵的问题

设想一个场景:你要做欧洲儿科肿瘤试验的方法学综述,需要知道 2015 年以来在三个以上欧洲国家开展的介入性试验,哪些有公开的统计分析计划、哪些有共享声明、声明是否允许跨国再利用。逐个注册库去查,意味着在五六个检索界面之间来回跳、手工去重、逐条打开详情页抄字段。这是以周计的体力活,做完还会发现许多条目根本没有你要的字段。

MDR 的全部意义就在于把这件体力活压缩成一次查询。它把「试验」当作一个可对齐的实体,把「国别」「中心」「文档条目」「数据对象」「数据共享声明」当作挂在它下面的从属表,于是「哪些试验有统计分析计划并且计划共享 IPD」这类问题变成一次结构化筛选,而不是几百次人工浏览。

这也解释了它的字段为何不像注册库:没有入排逐条文本,没有终点结构化结果,有的是 accessType、accessUrl、doi、restrictGeo、restrictCommercial 这类数据管理词汇。

1.2 三条常见的错误期待

第一条是把它当第二个 ClinicalTrials.gov。它会让你失望:不接收注册、没有注册流程、没有上传方案或结果的责任机制,你看到的每条记录都是从别处抄来的。

第二条是把它当全文数据源。accessUrl 的意思是「这个文档大概在这儿」,不是「在这儿等你下载」:很多指向申办方官网、期刊页面或申请表单,点进去可能是 404,也可能是要伦理批准的申请表。

第三条是以为数量大就覆盖好。一百多万条记录听起来接近全覆盖,但 ICTRP 一家就贡献了绝大多数——它本质是注册库总索引,记录往往只有标题、状态和主办方。数量在顶端壮观,信息密度在底部稀薄。

1.3 它能给到的与给不到的

把常见需求逐条对照,能给出的与给不到的界限相当清楚:

你的需求 它给的 够不够 备注
某试验在哪些国家、哪些中心开展 国别明细表与中心明细表,按记录拆行 够,但只有部分来源有值 中心表记录数是国别表的两倍多
某试验有哪些文档(方案、SAP、ICF、伦理批件) 文档条目的标题与访问地址 部分够,地址可用性不保证 四类文档分开建类
某试验是否计划共享个体数据 planToShareIPD 与 dataSharingStatement 够 它最有特色的字段
该共享声明禁止什么 restrictGeo、restrictCommercial、restrictResearchType 够 限制维度已字段化
某试验的入排标准全文 不提供 不够 需回原注册库
某试验的主要终点结果 只有一个 hasResults 布尔标记 不够 需回原注册库或论文
某试验的不良事件明细 不提供 不够 全部结果类字段中无此内容
某项试验关联的生物样本采集 通过 BBMRI 来源的关联记录 部分够 关联量极小,需人工核对
某一国家所有在研试验的清单 按国别筛选 够,但受来源覆盖限制 只含被收录的试验
某项试验的个体数据 永不提供 结构性不够 设计上就不存

1.4 你的处境与它能帮到的事

同一件工具在不同处境下的用法差别很大,下表按处境而不是按功能来组织:

你的处境 它能帮你什么 下一步该做什么
做系统评价,需要在多个注册库之间去重 同一试验跨来源的记录挂在同一个 Study 编号下 先用 Study.id 去重,再回原库核对关键字段
研究数据共享政策的落实情况 planToShareIPD 与三组限制字段可批量统计 导出后与原注册库声明逐条比对
给一项跨国试验做前期选址 按国家、按中心的既有试验分布 结合各国监管数据库核对现行法规
需要证明「欧洲跨国试验的文档公开度」 文档条目的有无可以直接计数 注明这是「门户收录的条目」而非实际文档
想训练模型识别试验文本 标题、缩写、共享声明等结构化字段 语料应回原注册库取全文
需要定期监测某项试验的状态变化 有 status 字段但同步时点不透明 自建快照比对,不依赖单点时间戳
想找某项试验关联的生物样本 BBMRI 来源的关联记录,数量极少 直接去 BBMRI 目录反向检索
想知道某国办试验的合规要求 不在服务范围 转 ECRIN RED 查询

1.5 一句话判断

如果你要的是「这项试验用了什么设计、得出什么结果」,去注册库和论文;如果你要的是「这项试验的文件和数据到底在哪儿、能不能拿到」,这才是 ECRIN MDR 的战场。

1.6 不适合谁:四条边界

一,不适合当试验结果检索工具。它对结果的全部表达就是一个 hasResults 布尔值与一个结果摘要挂点,效应量、置信区间、亚组分析一个都没有。

二,不适合要求每条记录字段齐全的分析。来源间填充率差异巨大,CTIS 的伦理批件日期近乎结构性完整,ICTRP 大量为空。整表统计前必须按来源分层。

三,不适合实时监测。官方只说定期更新,没有各来源的最后同步时间,也没有变更日志接口。拿它追状态会误判。

四,不适合找可下载的个体数据。这不是能力不足而是设计边界:官方说它输出的是「可发现性信息」,个体数据始终留在原处。

四条边界展开成对照,可快速判断目标是否在界外:

你的目标 是否在界内 判断依据 界外的替代去处
查某项试验的招募状态是否已变更 部分在界内 有 status 字段但同步时点不明 回原注册库看
查某项试验的效应量与置信区间 在界外 只有 hasResults 布尔 ClinicalTrials.gov、AACT、论文
查某项试验的入排全文 在界外 模型无逐条入排字段 原注册库
查某项试验在哪些国家做过 在界内 有独立国别表 无需替代
查某项试验的知情同意书在哪 在界内 有 ICF 对象与访问地址 若地址失效再联系申办方
查某国办同类试验的法规要求 在界外 法规不在 MDR 范围 ECRIN RED
统计一类试验的共享声明趋势 在界内 共享声明已字段化 无需替代
下载某试验的原始数据集 在界外 只给访问地址不放数据 crDSR 或申办方数据申请

多数误用不是因为库坏了,而是目标本来就在界外,只因它在搜索里排得靠前就顺手用了。

§2 数据构成与规格

2.1 记录的组织方式:一个试验、多个来源、多张从属表

模型有 95 个类,真正与临床试验相关的核心类只有十几个,其余是从 InterMine 通用生物信息模式继承下来、在本库基本为空的类(基因、转录本、染色体一类)。看到近百个类,不等于有近百种数据。

记录以 Study 为根,属性包括标题、缩写、类型、状态、入组、起止日期、性别条件、年龄段、是否共享个体数据、共享声明原文。国别、中心、标识符、文档条目、数据对象都通过集合引用挂在它下面。

来源是双层的:Study 经 dataSets 连到一个或多个 DataSet,DataSet 再经 dataSource 指向 DataSource。DataSource 只有 6 条:BBMRI、BioLINCC、CTG、CTIS、EUCTR、ICTRP。同一 Study 编号下挂两个 DataSet,说明两个来源都认领了这项试验。

2.2 字段与记录的完整字典

下表列出核心类的全部字段(来自 mdrmine/service/model 的实时读取),以及它们在本次核验中的取值形态。

类 字段 含义 取值形态与观察
Study id 内部编号 整数,见到的样本从 1000004 起
Study title 试验标题 英文自由文本
Study scientificTitle 科学标题 多数与 title 相同
Study acronym 缩写 有值者如 Clinibil、COVAC-DM
Study type 研究类型 Interventional / Observational
Study status 招募状态 Completed / Not recruiting 等
Study plannedEnrolment 计划入组 整数
Study actualEnrolment 实际入组 整数,部分为空
Study startDate / endDate 起止日期 ISO 日期;起止之一可能为空
Study genderElig 性别条件 All / Male / Female
Study minAge / maxAge / minAgeUnit / maxAgeUnit 年龄范围 数值加单位
Study ageGroup 年龄分组 Adult, Older Adult 等
Study hasResults 是否有结果 布尔
Study planToShareIPD 是否计划共享个体数据 布尔或空
Study dataSharingStatement 共享声明原文 长文本
Study primaryOutcome / secondaryOutcomes 主要与次要结局 文本
Study interventionsDescription 干预描述 文本
StudyCountry countryName / country 国家 国家名与 Country 引用
StudyCountry status 该国招募状态 文本
StudyCountry plannedEnrolment 该国计划入组 整数
StudyCountry ethicsCommitteeDecisionDate 伦理批件日期 日期,CTIS 来源填充率最高
StudyCountry compAuthorityDecisionDate 监管机构决定日期 日期,填充率低于伦理日期
StudySite facility / city / countryName 中心名、城市、国家 文本
StudySite contacts 联系点 集合
StudyObject accessType 访问类型 公开 / 受限等
StudyObject accessUrl 访问地址 URL
StudyObject doi 文档 DOI 有值率低
StudyObject publicationYear 出版年 整数
StudyObject managingOrg 管理机构 机构引用
StudyObject dateCreated / dateUpdated 创建与更新时间 时间戳
DataSet name / version / licence 数据集名、版本、许可 记录级许可
DataSet url 数据集地址 URL
DataSource name 来源名 6 个之一
IndividualParticipantData restrictGeo / restrictCommercial / restrictResearchType IPD 访问限制 三组限制字段
IndividualParticipantData consentDetails 同意细节 文本
Biosample materialTypes / geneticUseAllowed 样本类型与基因使用 文本与布尔
Protocol title / protocolSponsorId 方案标题与申办方编号 文本
InformedConsentForm title 知情同意书标题 文本
StatisticalAnalysisPlan title 统计分析计划标题 文本
EthicsApprovalNotification (仅 study 引用) 伦理批准通知 无自有属性
RegistryResultsSummary (仅 study 引用) 结果摘要 无自有属性
StudyCondition term / meshCode / meddraCode 疾病条件 术语与编码
Intervention name / type / meshCode 干预 术语与编码
Publication id / title 论文 文献实体
Organisation name 机构 约 415 万条,多为来源库带入
Author fullName 作者 约 228 万条

2.3 一条记录的完整解剖

下面这条来自门户的真实样本,展示了一个同时被三个来源认领的试验在接口里长什么样。注意同一个 id 出现了三次,每次对应一个来源——这是 MDR 查重逻辑的直接体现。

{
  "study": {
    "id": 1000004,
    "title": "Investigation of Fluid- and Electrolyte Balance in Post Cardiac-surgery Patients",
    "acronym": "Clinibil",
    "type": "Observational",
    "status": "Completed",
    "plannedEnrolment": 176,
    "actualEnrolment": 176,
    "genderElig": "All",
    "minAge": 18,
    "maxAge": 99,
    "ageGroup": "Adult, Older Adult",
    "startDate": "2016-09-01",
    "hasResults": false,
    "planToShareIPD": null,
    "dataSharingStatement": null
  },
  "sources": ["BBMRI", "CTG", "ICTRP"],
  "countries": [
    {"country": "Austria", "status": null, "plannedEnrolment": null,
     "ethicsCommitteeDecisionDate": null}
  ]
}

这条记录暴露了三件事。第一,同一项试验被三个来源认领,说明 MDR 的合并逻辑在起作用,你不需要手工去重。第二,国别只有一个且是奥地利,但该国记录的状态、入组数和伦理批件日期全部为空——来源库里没有这些值,MDR 不会替你补。第三,planToShareIPD 为空而不是 false,这个区别很重要:空意味着「来源库没说」,false 意味着「来源库明确说不共享」,混为一谈会系统性高估不共享的比例。

换一条记录看,对照会更清楚。下面是编号 1000005 的 COVAC-DM 在国别维度上的形态:

字段 Clinibil(1000004) COVAC-DM(1000005)
来源数 3(BBMRI、CTG、ICTRP) 3(BBMRI、EUCTR、ICTRP)
研究类型 观察性 介入性
计划入组 176 160
实际入组 176 未列出
有结果标记 否 是
共享 IPD 声明 空 未列出
国别 奥地利 未列出
伦理批件日期 空 未列出

两条记录来源数相同,信息密度却差得很远。差别不在 MDR 的抽取逻辑上,而在来源组合上:Clinibil 的三个来源里有两个(CTG、ICTRP)都不带欧洲国别细节,唯一可能带的 BBMRI 也不带伦理日期;COVAC-DM 有 EUCTR 认领,理论上应该有成员国层面的信息,但这一条在国别维度上仍然为空,说明「有欧洲来源」也不必然等于「有国别明细」,还要看具体试验在源库里的填报状况。

这一点值得再次强调:MDR 的字段填充是「来源 × 单条记录」双重决定的。模型里有这个字段,不代表这条记录有这个值;这条记录有这个来源,也不代表这个来源在这一条上填了值。任何以「字段存在」为前提的统计假设,都必须先做一次实际计数。

2.4 规模与来源分布的对照

下面是本次查询得到的规模数字。所有计数均通过门户的 format=count 端点取得,查询条件写在表格的说明栏里,可以逐条复现。

指标 数值 取得方式
Study 总数 1,125,348 view=Study.id 无约束计数
StudyObject 总数 361,515 view=StudyObject.id 无约束计数
Publication 总数 788,253 view=Publication.id
Organisation 总数 4,157,504 view=Organisation.id
Author 总数 2,281,961 view=Author.id
Intervention 总数 540,031 view=Intervention.id
StudyCondition 总数 412,321 view=StudyCondition.id
StudyCountry 总数 1,526,479 view=StudyCountry.id
StudySite 总数 3,513,748 view=StudySite.id
Country 总数 252 view=Country.id
RegistryResultsSummary 总数 153,324 view=RegistryResultsSummary.id
Biosample 总数 554 view=Biosample.id
IndividualParticipantData 总数 14,895 view=IndividualParticipantData.id

按来源分层的对照更能说明问题。同一个 Study 可能被多个来源认领,所以各行之和大于总数:

来源 认领的 Study 数 占总数比例(约) 来源性质
ICTRP 1,107,830 98.4% WHO 注册库总索引
CTG 599,838 53.3% ClinicalTrials.gov
EUCTR 16,691 1.5% 欧盟临床试验注册库
CTIS 12,127 1.1% 欧盟临床试验信息系统
BioLINCC 261 0.02% 美国 NHLBI 生物样本与数据仓库
BBMRI 201 0.02% 欧洲生物样本库目录

这张表是理解 MDR 的钥匙:名义上它是「欧洲跨国试验层」,但欧洲专门来源(EUCTR 加 CTIS)合计不到总记录的 3%,其余存在感来自 ICTRP 与 CTG,而这两者提供的国别与中心明细远不如 EUCTR。

2.5 与同类资源的字段差异

与三个常被拿来做同样事情的资源并排看,差异立刻明显:

维度 ECRIN MDR ClinicalTrials.gov AACT WHO ICTRP
主要用途 找文档与数据在哪 注册与查结果 结构化查询注册数据 跨注册库检索
覆盖范围 六源聚合,含欧洲专门来源 单一来源,美国主导 ClinicalTrials.gov 全量镜像 各国注册库索引
国别拆解 有独立国别表,含伦理与监管决定日期 有 location 表,但无伦理批件日期 同 CTG 基本没有
文档条目 方案、SAP、ICF、伦理批件分开挂 部分挂在结果附件 不单独建模 无
数据共享声明 拆成布尔与限制字段,可筛选 有但以自由文本为主 同 CTG 无
可编程接口 XML 查询,返回 JSON REST API v2 PostgreSQL 有但字段薄
更新频率 定期,未公布时点 每日多批 每日增量 不定期
结果数据 仅能否标记 结构化结果 结构化结果 仅链接

2.6 时间跨度与字段缺失

规模之外还有两个结构指标值得单独说:时间跨度与缺失结构。前者的依据是 test 启动日期字段,后者的依据是空值统计。

时间或缺失项 记录数 含义
启动日期早于 2000 年 8,800 少量历史试验被来源库追溯录入
启动日期在 2020 年以后 453,749 近六年的主体,占比约四成
启动日期在 2024 年以后 196,952 近两年的新增量仍然可观
启动日期为空 180,155 约一成六没有时间锚点
有结果标记 172,229 约一成五被来源库标记为已出结果
有共享 IPD 声明 51 万余 约四成半在声明层面提过共享

最后两行值得对比:四成半在声明层面提过共享,被标记为已有结果的只有一成五。两者问的不是一件事(「说没说」与「出没出」),混用会得出「结果很少、共享很多」的错觉。

启动日期为空的十八万条大多来自 ICTRP:上游本来就没这个字段,很多国家注册库不回溯填报。按时间窗口筛选会系统性漏掉这批记录,做趋势分析前要先把「来源」与「时间」交叉检查。

2.7 版本、许可与更新这三件事的现状

这三项在多数数据集里是标准栏目,这里必须单列,因为现状是「没有明确答案」而非「答案复杂」。

项 现状 依据 使用时的处理
数据版本号 未公布 门户无版本页,接口无 release 字段 用查询日期代替版本号
软件版本 35 service/version 返回值 记录时一并写明
前端版本标识 页面内嵌的短哈希 首页脚本变量里的 version 仅作技术旁证
聚合层许可 未单独声明 产品页与工具页均无许可段落 逐条写来源库许可
底层许可 各来源不同 CTG 为美国联邦公有领域,其余各异 引用时必须注明来源
更新频率 定期,未公布 产品页原文 regularly 自建快照比对
各来源同步时点 未提供 接口无时间戳字段 无法判断滞后

「没有版本号」这件事的实际影响比看上去大。多数数据集可以写「v2.1,2026 年 3 月」,MDR 只能写「2026 年 10 月 26 日查询」,这意味着两天后同一句引用就可能与现实不符,而且无法追溯当时到底是什么状态。做长期研究时,唯一可靠的做法是每次查询都存一份导出文件,用导出的哈希值当版本标识。

许可方面的情况类似但不是同一回事。聚合层的许可没有声明,不等于数据不能用——每条记录背后是公开登记库的内容,用是可以用的——但也不能因此写「ECRIN 数据,开放许可」。正确的写法是把来源拆开写,因为不同来源的条款确实不同。

§3 它是什么:一条试验的物流层

3.1 「元数据可发现」这个说法到底指什么

临床研究从立项到发表,会依次产生一串物件:方案、伦理申请与批件、监管备案、知情同意书、病例报告表、统计分析计划、数据管理计划、数据集、结果报告、论文。这些东西的存放地几乎从不在同一个地方,而且每一件的可获取性由不同的人掌握。

MDR 的立场是:我不替你保存这些物件,我只维护一张清单,说明这些物件存在过、叫什么、大概在哪、能不能拿。「可发现」三个字就是针对这一层说的。这不等于「可获取」,官方在页面里用两句话区分得很清楚:结果公开的地方给直达链接,结果受限的地方尽量在门户里显示访问安排的细节,并给一个描述访问流程的网址。

这个区分是理解它的关键,也是判断它是否适合你的唯一标准。要是你需要的是「拿到」,那你要去的仍然是原始数据保管方;要是你需要的是「知道该去哪儿拿、以及值不值得去拿」,MDR 就对了。

3.2 为什么需要单独一层,而不是让每个注册库自己做好

一个自然的疑问:来源库自己都有网页检索了,为什么还要再套一层?答案在三个跨来源的麻烦。

第一是同一项试验在多处注册。一项德国大学的试验可能同时在 ClinicalTrials.gov、DRKS、EUCTR 各有一份,三份的招募状态与完成日期经常对不上。一项 2026 年发表于 BMJ Open 的交叉注册研究(DOI 10.1136/bmjopen-2025-105173)手工确认了 228 例欧盟注册库交叉注册,招募状态一致率只有 85%,完成日期一致率仅一半。MDR 消除不了不一致,但把这些记录摆在同一个编号下,让不一致可见。

第二是字段名称不统一:CTG 叫 location,EUCTR 叫 member state concerned,BBMRI 叫 collection,本质都是「在哪个国家办」。不归一就没法跨来源统计,而归一正是 MDR 的核心工作。

第三是文档归属。统计分析计划可能挂在注册库附件、只在论文补充材料、或根本没公开。把文档条目单独建模并给出访问类型,比在每条记录页堆附件链接更利于批量分析。

3.3 与 ClinicalTrials.gov 的真实分工

很多人把两者理解成竞争,实际是包含关系的一部分:CTG 本就是六个来源之一,所以 ClinicalTrials.gov 上大部分登记内容在 MDR 里已有对应记录。MDR 能做而 ClinicalTrials.gov 做不到的只有几件:

一是把 EUCTR 与 CTIS 的欧洲记录和 CTG 记录放在同一张表里,按国家、按伦理批件日期筛选;二是不用写 PostgreSQL 就能用一次 XML 查询把共享声明字段拉出来;三是顺着文档条目看到方案与知情同意书的对象化表达,而不是在附件列表里翻。

反过来说,ClinicalTrials.gov 和它的镜像 AACT 能做的,MDR 基本都做不到:结构化结果、不良事件、详细入排、逐中心的招募数、可下载的 XML 全量包。所以正确的用法是把 MDR 当作「预筛层」,把 CTG 与 AACT 当作「深挖层」。

3.4 它在 ECRIN 整个服务体系里的位置

ECRIN 工具箱里有七八件东西,MDR 是唯一面向公众免费开放、不需会员资格也不需申请的一件;其余各面向不同处境:RED 面向查法规的人,crDSR 面向想合规共享数据的人,数据中心认证面向非商业数据管理机构,试验工具箱面向设计者。

放进这个体系看,MDR 是入口层:先把「有哪些试验、文件在哪」讲清楚,再把人分流到具体服务。这也是它被形容成「中立、不策展」的原因——判断哪项试验做得好,是别的环节的事。

3.5 它的三条产品原则

官方页面写得不多,可概括为三条。

第一,不评论。输出「不含观点、不做人工策展」,明确说没有专家输入,也没有质量过滤。这意味着门户里一条记录的质量高低完全由来源库决定,MDR 不做任何加权或排序修正。

第二,可追溯。结果公开就给直达链接,受限就尽量显示访问安排与流程说明。它不承诺你一定拿到,但承诺告诉你为什么拿不到。

第三,广覆盖。官方描述采集范围是「从新西兰到意大利、从日本到黎巴嫩」的全世界主要信息来源。这不是修辞,252 条国家与地区记录确实体现了这种广度,虽然广度是靠 ICTRP 撑起来的。

3.6 它不做的四件事,以及为什么这样反而更稳

把「不做什么」列清楚,比列「做什么」更能说明一个资源适合谁。MDR 在四个地方刻意留白,每一处留白都有明确理由。

不做的事 官方或结构上的依据 这样做的好处 代价
不接收注册 没有注册入口,只有检索入口 不承担注册审核责任,不必配置审核团队 无法成为某项试验的权威唯一来源
不做质量过滤 官方原文 non-opinionated and non-curated 不引入策展者偏见,排序不会被人为干预 无法纠错,来源库的错就是它的错
不存原始数据 模型里没有患者级类 不承担数据安全责任与合规成本 使用者总要再走一步去取数
不做结果结构化 结果只有 hasResults 布尔与摘要对象 抽取流水线简单、可维护 无法替代结果数据库

四条留白的共同逻辑是「只做能规模化的那部分」:注册审核、质量策展、数据托管、逐条解析都难以随记录量线性摊薄,而抽取、归并、挂接可以写成流水线。

这也解释了它为何「看起来什么都有,用起来总觉得差一点」:标准化的那一段做好了,需要判断的那一段推回给你。

§4 质量与特色:物流层的可靠性与盲区

4.1 先分清三种「有值」

判断 MDR 任何字段的质量,都要先区分三种状态:有值且可信、有值但可疑、无值。第三种要看空值的成因是「来源库没有」还是「抽取时没取到」。

以国别表为例:CTIS 来源的国别记录有伦理批件日期的比例很高,因为 CTIS 本身就是按成员国逐条建的;EUCTR 有相当一部分,因为它的记录结构里包括成员国决定;而 ICTRP 的国别记录里这个字段的存在本身就不普遍,因为 ICTRP 的条目往往只是指向本国注册库的一行索引。

所以统计「有多少试验有伦理批件日期」时,分母决定结论:用全部 Study 做分母是在测来源构成,用 CTIS 加 EUCTR 做分母才是在测伦理透明度。

4.2 门户的数据对象覆盖

文档条目的分布同样是不均的。下表按「挂有该类从属对象的 Study 数」统计,同一 Study 可能同时挂在多类下:

从属对象 有该类记录的 Study 数 含义
数据对象 StudyObject 整体 36 万余条记录 文档、数据集、出版物的统一载体
统计分析计划 47,855 有 SAP 条目的试验
知情同意书 16,271 有 ICF 条目的试验
个体数据访问方案 14,759 声明了 IPD 访问安排的试验
有结果标记 hasResults 172,229 来源库标记为有结果
计划共享 IPD 51 万余 planToShareIPD 非空
生物样本 554 极稀少,来自 BBMRI 关联

计划共享个体数据的试验有五十多万项,但把访问安排细化到可检索字段的只有一万四千多项,细化率约 2.9%。落差不是 MDR 造成的,而是来源库的共享声明大多停在自由文本层面;MDR 只是让它变得可计数。

4.3 案例:COVAC-DM 与一项奥地利试验的三种来源

用一个具体记录来把上面的抽象说完。门户里编号 1000005 的试验缩写是 COVAC-DM,标题是「糖尿病患者对 COVID-19 疫苗的免疫应答」,类型为介入性,状态是「未招募」,计划入组 160 人,启动日期 2021 年 4 月 26 日,有结果标记为真,被 BBMRI、EUCTR、ICTRP 三个来源认领。

这条记录值得逐项看。它有 EUCTR 认领,所以它的欧洲身份是确凿的;同时有 ICTRP 认领,说明 WHO 的索引也收了它;还出现在 BBMRI 里,说明这项试验关联了生物样本采集。三者叠在一起,正是一个「欧洲跨国或跨境试验」在 MDR 里的典型形态:注册信息来自两个注册体系,样本信息来自生物样本库目录。

再看编号 1000004 的 Clinibil 试验。它是观察性研究,计划与实际入组均为 176 人,状态已完成,没有结果标记,共享声明为空,只有奥地利一个国家的国别记录,而且该记录里的伦理批件日期为空。把它和 COVAC-DM 对照,就能看出 MDR 里两种截然不同的记录质量:一种由欧洲来源支撑,字段密集;一种只由索引支撑,字段稀疏。这个对照在 §4.5 的偏差清单里会再回来。§4.3 的案例在 §7.3 与 §9.2 还会各出现一次,因为它同时演示了「能用」与「不能信」两面。

4.4 它做得比同类好的三件事

第一件是文档对象化:方案、知情同意书、统计分析计划、伦理批准通知各建一类,统一挂访问类型与地址。AACT 有 52 张表,文档与附件并不单独建模。

第二件是共享声明的字段化。planToShareIPD 是布尔、restrictGeo 与 restrictCommercial 是限制维度、consentDetails 是原文。三层结构让「有多少试验在声明里禁止商业使用」这种问题不需要人工读文本就能回答。

第三件是跨域链接。2024 年论文(DOI 10.12688/openreseurope.17131.2)描述的系统检索识别出 202 项研究、284 个样本集合的关联;作者同时坦承关联主要靠人工,两个机构都撑不住长期维护。

4.5 三个必须知道的盲区

盲区一是查重不彻底。1000004 那条记录被三个来源并到同一编号,看似成功;但合并依赖编号与标题匹配,而 2026 年的 BMJ Open 研究显示只有 17% 的潜在交叉注册能在两库都找到注册号,另有四分之一只能靠标题匹配。MDR 未公开自己的合并规则与合并率。

盲区二是来源库的更新滞后会原样传进来。门户不给每个来源的最后同步时间,也没有变更日志。如果你的分析依赖「某试验当前的状态」,就必须自己建立快照比对。

盲区三是链接的可用性无保证。accessUrl 指向的是「当时抄写到的地方」,不能保证现在还能打开。官方页面只说尽量提供访问安排与流程说明,没有承诺链接的有效性维护。

4.6 与邻近服务的分工细节

ECRIN 体系内的几件工具容易被混用,因为它们都叫「工具」,都在同一个域名下,都面向同一批使用者。但它们的输入与输出完全不同,混用会直接导致找错地方。

服务 输入是什么 输出是什么 什么时候该用它而不是 MDR
MDR 一个关键词、编号或疾病名 相关试验及其文档与数据对象的位置 想知道某项试验的文件在哪
RED 监管与伦理数据库 一个目标国家与一种研究类型 该国对该类研究的法规与伦理要求 想知道在某国办试验要什么手续
crDSR 数据共享仓库 你自己手上的一份数据集 一个合规的托管与共享位置 想把自己的数据交出去
数据中心认证 一个数据管理机构的资质材料 审计结论与认证状态 想知道某个数据中心的合规水平
适应性试验工具箱 一个试验设计构想 设计与实施的参考做法 在设计一个平台试验或篮式试验
主方案试验工具箱 一个主方案框架 主方案的设计与运营经验 面向多个亚组共用一套协议

这张表最实用的一行是第二行。在 MDR 里查不到某国法规就认为它覆盖不足,是找错了门:MDR 管「有哪些试验」,RED 管「做试验要什么条件」。

数据中心认证容易被忽略:官方口径是自 2014 年设立以来累计认证 19 个欧洲数据中心,只面向成员国网络内的非商业机构,观察员国申请需自付约 8,500 欧元的直接成本。这组数字与 MDR 无关,但说明 ECRIN 的价值主张不只「信息聚合」,还有「能力认证」——免费的入口配收费的背书。

4.7 从六个来源各拿到什么

同样是「一项试验的记录」,六个来源给的信息量完全不同。下面按来源逐项说明,这一节回答的是「查的时候该期待什么」。

来源 强项 弱项 主要缺什么
ICTRP 覆盖国家最多、收录量最大 字段最少、多为索引级信息 国别拆解、中心明细、共享声明细节
CTG 入排与结果字段较完整、状态更新频繁 美国视角、欧洲国家信息较粗 各国伦理批件日期
EUCTR 成员国层面结构化、有监管与伦理决定日期 已停止接收新注册 新试验不在其中
CTIS 新体系、成员国条目化、伦理日期填充率高 历史试验不在其中 老试验、退出体系的国家
BioLINCC 与美国样本仓库的数据可关联 记录数极少、只覆盖美国体系 欧洲样本
BBMRI 可与欧洲生物样本库目录关联 记录数极少、关联需人工 大规模自动关联

把这张表和 §2.4 的来源分布放在一起看,会得出一个不太舒服但必须承认的结论:信息量最大的三个来源(CTG、EUCTR、CTIS)加起来不到总量的六成,而信息量最小的 ICTRP 占了绝大多数。这不是说 ICTRP 没用——它恰恰完成了「广度」这件事——而是说使用这个库时,必须主动做来源选择,否则你拿到的是一个数量庞大但字段稀薄的集合。

§5 怎么拿到:界面、接口与可复现的查询

5.1 两种入口,一种数据

门户提供两条路:网页检索界面与 InterMine 查询接口。前者适合探索,后者适合批量。两者读的是同一个 Mine,名字叫 mdrmine,所以网页上能看到的,接口里一定查得到;反过来接口能查的维度比网页多,因为网页的筛选器只暴露了一部分字段。

需要先说明一点:门户是单页应用,直接用 curl 抓首页只能拿到一个加载壳,看不到任何数据。这不是故障,是前端架构决定的。要拿数据必须走接口,这一点在 §5.2 之后的所有示例里都成立。

5.2 先确认服务活着并读出模型

第一次接触这个库,应该先读模型,因为它告诉你有什么类、每个类有什么字段。模型接口返回的是 XML。

#-- 1) 服务版本:返回一个纯数字,当前为 35
curl -s https://crmdr.ecrin.org/mdrmine/service/version
echo

#-- 2) 把模型存到本地,方便后续检索类名与字段
curl -s https://crmdr.ecrin.org/mdrmine/service/model -o mdrmine_model.xml

#-- 3) 列出所有类名(剔除非临床类之后才是真正可用的部分)
grep -o '<class name="[^"]*"' mdrmine_model.xml | cut -d'"' -f2 | sort

95 个类里,生物信息模式继承下来的(Gene、Transcript、Chromosome 等)在本库基本为空。值得用的是 Study、StudyObject、StudyCountry、StudySite、DataSet、DataSource、Publication、Intervention、StudyCondition、IndividualParticipantData、Biosample、Protocol、InformedConsentForm、StatisticalAnalysisPlan 这十几个。

5.3 用计数端点做规模核对

所有查询走同一个结果端点,只改 query 与 format 两个参数;format=count 只返回一个数字,最快,适合做规模核对。

#-- 计数函数:把一个 XML 查询编码后发给计数端点
count() {
  python3 - "$1" <<'PY'
import sys, urllib.parse, urllib.request
q = sys.argv[1]
url = ("https://crmdr.ecrin.org/mdrmine/service/query/results?format=count&query="
       + urllib.parse.quote(q))
print(urllib.request.urlopen(url, timeout=180).read().decode())
PY
}

#-- 规模核对:研究总数与数据对象总数
count '<query model="genomic" view="Study.id"></query>'
count '<query model="genomic" view="StudyObject.id"></query>'
count '<query model="genomic" view="StudyCountry.id"></query>'
count '<query model="genomic" view="StudySite.id"></query>'
count '<query model="genomic" view="Country.id"></query>'

这五条依次返回 1125348、361515、1526479、3513748、252。model 参数固定写 genomic,那是 InterMine 的默认模型名,与数据内容无关,看到 “genomic” 不等于这是基因组库。

5.4 按来源分层统计

按来源统计时必须把约束写在 Study 路径上而不是 DataSet 路径上,否则返回的不是「有多少研究来自该来源」,而是「有多少条数据对象属于该来源」,两者不是一个概念。本次核验中曾用错路径得到一个可疑的 1,纠正后的写法如下。

import urllib.parse, urllib.request, json

BASE = "https://crmdr.ecrin.org/mdrmine/service/query/results"

def run(xml_query, fmt="json", size=1000):
    params = urllib.parse.urlencode({"query": xml_query, "format": fmt, "size": size})
    with urllib.request.urlopen(f"{BASE}?{params}", timeout=300) as r:
        return json.loads(r.read().decode())

def count(xml_query):
    return int(urllib.request.urlopen(
        f"{BASE}?" + urllib.parse.urlencode(
            {"query": xml_query, "format": "count"}), timeout=300).read().decode())

sources = ["ICTRP", "CTG", "EUCTR", "CTIS", "BioLINCC", "BBMRI"]
for s in sources:
    q = ('<query model="genomic" view="Study.id">'
         f'<constraint path="Study.dataSets.dataSource.name" op="=" value="{s}"/>'
         '</query>')
    print(s, count(q))

输出的六个数字就是 §2.4 那张来源表的来源。它们的和是 1,736,948,比 Study 总数 1,125,348 多出约 61 万条次,多出来的部分正是被多个来源同时认领的试验——同一项试验在两个来源里各算一次。

5.5 把一条记录的全部关联拉平

日常最常用的查询是「给我一批试验的国别、共享声明和文档条目」。InterMine 的查询语法允许在一张视图里跨多个集合,结果是笛卡尔展开:一个试验有三国三文档就会变成九行。这在统计时要先去重。

q = ('<query model="genomic" view="Study.id Study.acronym Study.type Study.status '
     'Study.plannedEnrolment Study.hasResults Study.planToShareIPD '
     'Study.dataSets.dataSource.name Study.studyCountries.country.name '
     'Study.studyCountries.ethicsCommitteeDecisionDate" '
     'sortOrder="Study.id asc"></query>')

d = run(q, size=200)
print(d["columnHeaders"])
for row in d["results"][:5]:
    print(row)

columnHeaders 是 InterMine 按模型标签生成的中文展示名,程序里按列序号取值,不要硬编码中文表头。

5.6 一个可以直接复用的筛选:有伦理批件日期的国别记录

「有多少国别记录带伦理批件日期」这个问题最容易被误读成「有多少试验有伦理批件」。正确的读法是:它统计的是国别记录,不是试验。同一个试验有五个国家,就会有五条国别记录,其中三条有日期两条没有。

for s in ["CTIS", "EUCTR", "ICTRP", "CTG", "BBMRI", "BioLINCC"]:
    q = ('<query model="genomic" view="Study.studyCountries.id">'
         '<constraint path="Study.studyCountries.ethicsCommitteeDecisionDate" op="IS NOT NULL"/>'
         f'<constraint path="Study.dataSets.dataSource.name" op="=" value="{s}"/>'
         '</query>')
    print(s, count(q))

本次核验的输出如下表。同一试验被多个来源认领时,它的国别记录会在每个来源下各算一次,所以各行之和不等于去重后的总数。

来源 带伦理批件日期的国别记录数
EUCTR 30,502
ICTRP 30,466
CTG 23,065
CTIS 10,607
BBMRI 35
BioLINCC 7

这组数字有一处必须说明:按来源合计约九万五千条,比国别记录总数少一个数量级,而 EUCTR 与 CTIS 之和已接近该合计的一半。可见伦理日期基本上由欧洲专门来源贡献;ICTRP 名下那三万余条更可能源自上游欧洲注册库,而非 ICTRP 自有字段。这一推断本次未验证,引用时应按「按来源统计所得」陈述,不要写成「ICTRP 提供伦理批件日期」。

5.7 导出与后续处理

接口支持 CSV、TSV、JSON 三种返回格式,把 format 参数改掉即可。批量导出时要注意两点:一是 size 参数有上限,超过之后要配合 start 参数分页;二是同一条记录在跨集合查询里会重复,导出后必须按 Study.id 去重再统计。

更省事的做法是先在网页界面搭好筛选、从结果页导出,再把同一组条件搬到接口复现:可视化确认逻辑,接口保证批量可复现。

5.8 四个常见的查询报错与处理

接口不是无痛的,下面这四个报错在本次核验中都实际遇到过,写出来可以省掉一段摸索。

报错或现象 成因 处理
XML is not well formatted 比较符号没转义,或约束路径缺少属性名 把 >=、< 写成 &gt;=、&lt;
Multiple root classes in query 一次视图里跨了两个根类 视图统一从一个根类出发,其余走引用路径
返回 0 或 1 这类反常小数 约束写在了集合路径的错误一侧 检查约束是否落在 Study 路径上
返回空 results 数组 查询合法但无匹配,或大小写不匹配 先放宽条件,再用 format=count 确认

第一条容易误导,它报「XML 格式错误」,实际是转义问题:用 curl 的 --data-urlencode 或 Python 的 urlencode,不要手工拼字符串。

第二条的规则是:视图必须以一个根类为起点,想同时看国家名与国别记录要写 StudyCountry.country.name,不能把 Country.name 与 StudyCountry.id 并列。这条在模型里没明写。

第三、四条来自本次的真实失误:把来源约束写成 Study.dataSources.name 得到恒为 0,写成 Study.dataSets 得到恒为 1,两次都不报错。接口返回成功不等于查询正确,计数前先用已知量做对照。

§6 与库内条目的关系

6.1 关系图谱

MDR 在本库的试验类条目里处在一个特殊位置:它不是数据源,是数据源的索引。围绕它的关系可以分成三类。

关系类型 库内条目 关系说明
被聚合的源 ClinicalTrials.gov MDR 的 CTG 来源即此库,占比超一半
被聚合的源的结构化镜像 AACT 与 MDR 的 CTG 部分同源,但 AACT 提供 SQL 级访问
被聚合的源的欧盟对应物 EudraVigilance 同为欧盟体系内的数据基础设施,但关注上市后安全性
语义相邻 Orphanet ORDO 罕见病本体,可与 MDR 的疾病条件字段联用
语义相邻 WHO 全球卫生观察站 同属跨国公共卫生统计层,但粒度是完全不同的层面
下游可能使用者 各类队列与登记数据集条目 试验的元数据可用于定位其衍生的队列数据

与 ClinicalTrials.gov 和 AACT 不是「同类替代」:CTG 来源的那五十九万多条在研究在 AACT 里更细。MDR 的不可替代性只有两处——欧洲专门来源的国别拆解,与文档、共享声明的对象化。

与 EudraVigilance 关系更远:一个管试验设计与文件,一个管上市后不良反应,字段不重叠。放在一起看的唯一理由是追踪一项试验的监管轨迹。

6.2 检索路径

在本库里从 MDR 出发寻找相关内容,有三条路径。

第一条是自上而下:从「临床试验注册」这个主题词出发,先看 ClinicalTrials.gov 与 AACT 摸清全球注册库的家底,再回到 MDR 看欧洲拆解。这条路径适合刚接触这个领域的使用者。

第二条是自下而上:手里已经有一项具体试验的编号,先在 MDR 查它的文档与共享声明,再回原注册库查结果。这条路径适合做单项试验核查。

第三条是横向:从疾病或干预出发,先用 Orphanet ORDO 把罕见病术语标准化,再用 MDR 的 StudyCondition 字段去匹配试验。这条路径适合罕见病方向的方法学研究,因为罕见病试验的跨国性最强,而 MDR 的国别拆解恰好对应这个需求。

§7 质量评估与局限性

7.0 阅读本节前的一个前置校正

打分之前先做一个校正:不要用「数据集」的标准衡量它,否则会得出全面不及格,而那是对测错对象的误判。它没有样本量、没有标注质量、没有划分方案,因为它是一张索引表,不是训练集。

正确的标准有三条:覆盖全不全、索引项准不准、索引可不可维护。按这三条看,它在覆盖广度上良好、欧洲深度上问题明显、维护成本上是公开承认的困难。本节评分全按这三条。

7.1 五维评分

维度 评分(5 分制) 依据
覆盖广度 4.5 六源聚合、252 个国家与地区,全球注册库基本都在
欧洲深度 3.0 欧洲专门来源占比不足 3%,与「欧洲跨国试验层」的定位不匹配
字段可用性 3.5 核心字段对象化做得好,但来源间填充率极差
接口与可复现 4.5 无注册、有公开接口、查询可复现、模型可读
可维护性 2.5 论文自承跨库关联靠人工且难以持续,官方不公布同步时点
文档与透明 3.0 官方说明简短,合并规则、更新节奏、许可口径均未公布

按 DAIMS 框架再拆一次,分差主要落在元数据管理与许可两处:

DAIMS 维度 得分(5 分制) 说明
数据集描述 3.0 有产品页说明定位,但缺版本号与更新时点
元数据完整性 3.5 模型完备,逐条记录的填充率依赖来源
数据质量 3.0 无质量过滤是设计选择,但也意味着无纠错机制
溯源与血缘 3.5 来源可追,合并过程不可追
接口可用性 5.0 公开、稳定、可编程、无需申请
许可清晰度 2.0 聚合层无统一许可声明,逐条继承来源库
可维护性 2.5 依赖人工关联,长期可持续性存疑

7.2 三个具体的能力上限

上限一是它无法告诉你来源库没写的东西。这不能靠改进 MDR 解决:它明确不做人工补录,源头没有的它就没有。

上限二是它无法保证指向的东西还在:访问地址是抽取时抄下的,之后改版、迁移、下架都不会反馈回来。

上限三是它无法替你判断该不该用某个来源:六个来源政策不同,MDR 只是并排放着,选哪个、怎么加权是你的事。

7.3 已知的、可枚举的偏差

下面这些偏差可枚举,可以在分析里显式处理,而不是被它们悄悄影响。

偏差 表现 处理方式
来源结构偏差 ICTRP 占 98.4%,欧洲来源不足 3% 按来源分层后再合并,或只取欧洲来源子集
空值与假值混淆 planToShareIPD 为空与 false 含义不同 统计时把空值单列为第三类
重复记录 跨来源未合并的同一试验会有多条 按标题加编号双重匹配
文档条目偏差 有 SAP 条目的试验仅四万七千余项 报告时注明这是条目数,非实际存在数
链接时效偏差 访问地址可能失效 抽样验证后再报告可用率
地理命名偏差 国家名按英文标准名归一 与 ISO 3166 对照后再使用

§4.3 的案例在这里再出现一次,正好演示第一种与第二种偏差。COVAC-DM 因为被三个来源认领,在按来源分层时会出现在三行里;Clinibil 的 planToShareIPD 为空,如果把它当作「不共享」处理,就会把一个「来源没说」的案例误算成「明确拒绝」。

7.4 外部验证矩阵

一个库的可信度不能只靠自证。四条外部线索与它们各自能验证的范围:

外部线索 来源 能验证什么 不能验证什么
官方产品页 ecrin.org 工具页 定位、免费、无需注册、不策展原则 规模数字、来源构成
跨库关联论文 2024 Open Research Europe, DOI 10.12688/openreseurope.17131.2 BBMRI 关联规模(202 项研究、284 个集合)、人工维护困难 整体记录规模
交叉注册研究 2026 BMJ Open, DOI 10.1136/bmjopen-2025-105173 跨注册库信息不一致的真实程度(状态一致率 85%) MDR 自己的合并率
门户接口直查 crmdr.ecrin.org/mdrmine 规模、来源构成、字段填充的逐项计数 各来源的最后同步时间

四条合起来能确认的是:定位与访问政策无疑,规模与来源构成可逐条复现,但合并规则、更新节奏、许可口径三项官方均未公布。

7.5 它为何能持续:因为它卖的不是数据,是入口

一个不存数据、不做过滤、不收检索费的库凭什么活下来?看它的成本结构与价值兑现方式。

成本主要落在三处:抽取流水线的维护、新来源的接入、以及跨库关联的人工核对。前两处是工程成本,可以随基础设施成熟而摊薄;第三处是它最脆弱的地方,2024 年那篇论文说得很直白,两个机构都没有资源持续维护这种人工关联。

价值兑现与 ECRIN 的使命绑定:ECRIN 的存在理由就是让跨国试验更容易做,一个能快速查到「欧洲有哪些试验、文件在哪」的入口是这一使命的天然配套。所以它不是靠盈利维持,而是靠嵌入公共使命维持。这也解释了它为何能坚持不评论——一旦评论,就要承担判断责任,成本结构立刻变化。

7.6 一份使用前的自检清单

把 MDR 的数字写进报告前,建议逐条过下面六项。它们都从本文已出现的偏差反推而来,不涉及新判断。

自检项 检查方法 不通过的后果
是否混用了来源 看分母是全部 Study 还是某个来源子集 会把来源构成差异当成研究对象差异
是否把空值当否定 统计 planToShareIPD 时是否单列空值 系统性高估「不共享」比例
是否按国别记录计试验 是否按 Study.id 去重 多国试验被重复计数
是否假设链接可用 是否抽样验证过 accessUrl 报告里的文档可得率偏高
是否混用两种口径 是否同时引用了 75 与 79 两个试验组合数 同一篇里出现自相矛盾的规模
是否标注了查询日期 每个数字是否写明取得时点 读者无法判断数字是否过期

六项里最容易漏的是最后一项。门户的数据会变,但文献里引用的数字不会跟着变,所以时点标注不是形式主义,它是让这个数字在半年后仍然可解释的唯一办法。

§8 生态位与历史

8.1 历史沿革

机构史与产品史要分开看:前者有公开时间线,后者几乎没有版本记录。

机构层面:ECRIN 是欧洲研究基础设施网络,总部巴黎,非营利,通过各国欧洲联络员与国家级临床试验单元网络铺开。官网口径为 13 个成员国与观察员国、130 余个临床试验单元、覆盖 3.61 亿人口、试验组合 75 至 79 项(首页 79、概览页 75,两口径并存,差额官方未说明),并通过 ISO 9001:2015 认证。

产品层面:官方未给上线年份;门户现为 crmdr.ecrin.org,官方页面仍保留指向 newmdr.ecrin.org 的旧表述,说明经历过改版;技术栈是 InterMine 35 加 BlueGenes 前端。起始年份在附录 A 标为未核实,不作推断。

8.2 同代资源的先后关系

把 MDR 与四个同代资源放在一条时间轴上,能看出它的定位是被别的库逼出来的:

资源 定位 与 MDR 的关系
ClinicalTrials.gov 美国主导的全球注册库 MDR 的最大单一来源之一
EUCTR 欧盟临床试验注册库 MDR 的欧洲身份来源
CTIS 欧盟临床试验信息系统,接替 EUCTR 的新入口 MDR 一直在跟进,已作为独立来源接入
ICTRP WHO 的注册库总索引 MDR 规模最大的来源
BBMRI-ERIC Directory 欧洲生物样本库目录 MDR 的样本关联来源
BioLINCC 美国 NHLBI 的数据与样本仓库 MDR 的美国样本来源

CTIS 与 EUCTR 同时在列,说明过渡期里 MDR 选择「两个都接」而不是「切换」:老试验只在 EUCTR,新试验只在 CTIS,查欧洲时两边都要查。

8.3 它在欧洲研究基础设施生态里的位置

欧洲研究基础设施分领域建设:生物样本库看 BBMRI,社会科学看 CESSDA,临床研究看 ECRIN。MDR 处在这几个领域的交叉点上,因此它做的事不只是采集,还有跨领域映射。2023 年一篇论文(DOI 10.12688/openreseurope.16284.2)比较 ECRIN 与 CESSDA 的元数据方案,探讨临床与社会科学的词表能否对齐——不产生规模数字,却决定它能否被非临床领域用上。

同期的另一条线是与 BBMRI 的关联:两个方向都找候选,再做系统检索,得到 202 项研究、284 个集合;作者指出这种关联靠人工、两个机构都撑不住长期维护。这是理解它生态位的注脚——边界不是技术边界,是人力边界。

8.4 未来可能的走向

从官网活动看有三条线索:ECRIN 2030 项目(官方称「为下一个十年做准备」);欧盟临床试验体系向 CTIS 的整体迁移,会改变欧洲来源结构;HMA/EMA 的多方 AI 与数据论坛,说明监管侧在推可信任 AI 的数据基础,元数据层是前置条件。

这三条都不足以预测 MDR 的具体产品路线,但足以说明它不会被关停:一个正在做十年规划、正在接手欧盟新体系的机构,不会砍掉自己唯一对公众免费开放的入口。

8.5 三条可以自查的演进线索

预测基础设施的走向比预测公司容易,变化往往写在页面结构里。三条线索都能自查。

线索 看哪里 说明什么 目前状态
来源清单是否增加 门户里 DataSource 的条数 条数从 6 变成 7 就是接入了一个新体系 目前 6 条
模型类是否增加 service/model 返回的类数 类数增长说明文档或数据对象建模在细化 目前 95 个
服务版本是否递增 service/version 返回值 InterMine 主版本升级通常伴随重建 目前 35

三条线索三条命令就能查完。若来源从六条变成七条,关键不是「数据更多了」,而是整体来源构成比例会变,之前按总量算出的结论要重算。

服务版本长期不动也不必急着判定停止维护:数据更新与软件升级是两条流水线,判断是否在更新要看记录总数,不是版本号。

§9 使用指引

9.1 三种角色的路径

角色 你的目标 最短路径 需要额外做的事
系统评价者 找齐某主题的多国试验并去重 网页检索关键词 → 导出 → 按 Study.id 去重 回原注册库核对纳入排除
方法学研究者 统计共享声明与文档公开度 接口按来源分层计数 → 合并 按来源分层报告,不要给单一总数
数据基础设施从业者 评估是否可把 MDR 作为上游 读模型 → 试接口 → 抽样验证链接 先验证同步时效,再谈接入

9.2 一条最短的可用流程

下面这段脚本把「从零到一张可用的表」压缩成四步:确认服务、取一批试验、拉平国别、导出。它不需要任何密钥,直接可跑。

import csv, urllib.parse, urllib.request, json

BASE = "https://crmdr.ecrin.org/mdrmine/service/query/results"

#-- 第 1 步:确认服务和模型版本
for ep in ("service/version", "service/model"):
    raw = urllib.request.urlopen(f"https://crmdr.ecrin.org/mdrmine/{ep}", timeout=120).read()
    print(ep, len(raw), "bytes" if ep.endswith("model") else raw.decode())

#-- 第 2 步:按来源取一批试验,约束写在 Study.dataSets 路径上
def fetch(source, size):
    q = ('<query model="genomic" view="Study.id Study.acronym Study.type '
         'Study.status Study.plannedEnrolment Study.planToShareIPD">'
         '<constraint path="Study.dataSets.dataSource.name" op="=" value='
         f'"{source}"/></query>')
    params = urllib.parse.urlencode({"query": q, "format": "json", "size": size})
    with urllib.request.urlopen(f"{BASE}?{params}", timeout=300) as r:
        return json.loads(r.read().decode())["results"]

#-- 第 3 步:合并、去重,并把空值与 false 分开标记
rows = {}
for source in ("CTIS", "EUCTR", "CTG"):
    for r in fetch(source, 300):
        v = rows.setdefault(r[0], {"id": r[0], "acronym": r[1], "type": r[2],
                                   "status": r[3], "planned": r[4],
                                   "share_ipd": r[5], "sources": set()})
        v["sources"].add(source)

#-- 第 4 步:写 CSV
with open("mdr_sample.csv", "w", newline="", encoding="utf-8") as f:
    w = csv.writer(f)
    w.writerow(["id", "acronym", "type", "status", "planned",
                "share_ipd", "n_sources", "sources"])
    for v in rows.values():
        flag = "not_stated" if v["share_ipd"] is None else str(v["share_ipd"]).lower()
        w.writerow([v["id"], v["acronym"], v["type"], v["status"], v["planned"],
                    flag, len(v["sources"]), ";".join(sorted(v["sources"]))])

print("studies:", len(rows))

这段脚本里有三个刻意为之的设计,都是从 §4.3 的案例里学来的。第一,share_ipd 字段把 None 单独标成 not_stated,而不是简单转成 false;第二,按 Study.id 建字典天然去重,被多个来源认领的试验只会落一行,来源记在 sources 里;第三,三个来源分开取而不一次取全量,避免一次请求超时。

这段脚本里有三个刻意为之的设计,都是从 §4.3 的案例里学来的。第一,share_ipd 字段把 None 单独标成 not_stated,而不是简单转成 false;第二,国别用集合去重,避免同一试验因多国而被重复计数;第三,排序用 startDate 倒序而不是 id,避免只拿到编号最早的那一批稀疏记录。

9.3 引用方式

引用这个库时应该分三层写清楚,否则一句话引用会掩盖它的结构特征。第一层写它是谁运营的、叫什么;第二层写你用的是哪个界面或哪个接口、查询发生在哪一天;第三层写你取的是哪个来源子集,因为不同来源的结论可能完全相反。

一个可用的引用范式是:ECRIN Clinical Research Metadata Repository,经由 crmdr.ecrin.org 的 InterMine 查询接口检索,检索日期某年某月某日;本次分析限定来源为 CTIS 与 EUCTR,共得到多少条记录。这样写的好处是别人能复现你的来源选择,而不是复现你在全库上的一个笼统结论。

9.4 四个具体任务的做法

四个任务覆盖多数实际需求,下表按「查什么 → 用什么字段 → 最易错在哪」排:

任务 主要字段 最易错的一步 耗时上限
查一项已知试验的全部公开物件 dataSets、protocols、informedConsentForms、statisticalAnalysisPlans、accessUrl 只查一个来源,漏掉其他来源的文档 20 分钟
统计一类疾病的跨国分布 StudyCondition、StudyCountry 分母未声明,「有国别信息的试验」与「匹配到的试验」混用 40 分钟
评估某国的试验承接情况 StudyCountry、type、ethicsCommitteeDecisionDate 把「在该国注册过」当成「在该国实际开展」 30 分钟
为模型准备试验元数据 title、acronym、type、status、dataSharingStatement 指望这里能拿到全文语料 1 小时

第三条最值得展开:MDR 只反映「在该国注册过的试验」,不反映「该国实际开展的试验」——只在本国注册库登记、从未进入 ICTRP 的试验不会出现。结论应写「在 MDR 收录范围内」。

第二条的陷阱在分母:匹配到一万项试验、只有三千项有国别记录时,「某国有多少」的分母是三千还是一万,结论完全不同。两个数字都要给。

第一条的关键在最后一步:accessUrl 是否可打开必须逐个访问核对,不能假设。§4.3 的案例已体现过一次:有来源不等于有值,有值也不等于链接还活着。

§10 AI 使用声明

项目 说明
本文写作方式 由 AI 辅助撰写,事实核验与数字采集由人工脚本完成并可复现
数字来源 全部门户内数字通过 InterMine 计数端点实时取得,脚本见 §5
采集日期 2026-10-26
未覆盖内容 未下载全量记录、未逐条验证文档链接可用性、未评估各来源的字段填充率
官方信息 定位与访问政策取自 ecrin.org 产品页,机构规模取自 ecrin.org 概览页
论文支撑 两篇(2024 跨库关联、2026 交叉注册),均取自 Europe PMC 摘要层
未核实项 上线年份、聚合层许可、各来源最后同步时间,已在附录 A 标注
使用建议 引用任何数字前,按 §5.3 的写法重跑一次,来源库会更新

常见误读(避坑清单)

说法 实际 证据
这是一个临床试验注册库 它不接收注册,只聚合既有注册库的记录 产品页只说「帮助找到文档与数据」,无注册入口
里面有患者个体数据 一条个体记录都没有 模型里只有 IndividualParticipantData 这种「访问安排」对象,无个体表
它是 ClinicalTrials.gov 的替代品 它把 ClinicalTrials.gov 当来源之一 六个来源里有 CTG,占比超一半
一百多万条就等于覆盖了全世界试验 数量由 ICTRP 总索引撑起,信息密度低 ICTRP 108 万余条,CTIS 加 EUCTR 不足 3 万条
计划共享 IPD 的五十多万项都可以申请数据 其中细化到可检索访问安排的只有一万四千余项 planToShareIPD 非空五十一万余条,IPD 访问安排 14,759
官方页面说定期更新就是近实时 不公布同步时点,也没有变更日志接口 产品页仅写「regularly」,接口无快照时间字段
有 accessUrl 就代表能拿到 地址抄自抽取时点,可能已失效 产品页未承诺链接维护
空值等于不共享 空是「来源库没说」,false 才是明确拒绝 1000004 样本里 planToShareIPD 为 null 而非 false
它是欧洲项目所以只覆盖欧洲 覆盖 252 个国家与地区,含日本、黎巴嫩、新西兰等 官方描述「从新西兰到意大利、从日本到黎巴嫩」
排序或推荐反映了质量 官方明确不做质量过滤、不做专家输入 产品页原文 non-opinionated and non-curated

FAQ

Q1:ECRIN MDR 里到底存了什么?
存的是试验层面的识别信息与数据对象的位置。具体说:标题、缩写、类型、状态、入组人数、起止日期、国别、中心、文档条目、数据共享声明,以及这些条目指向的访问地址。不存试验结果数据,更不存个体数据。

Q2:它和 ClinicalTrials.gov 是替代关系吗?
不是。ClinicalTrials.gov 是它的来源之一,所以 MDR 里本来就有 ClinicalTrials.gov 的绝大部分记录。MDR 多出来的部分是欧洲专门来源(EUCTR、CTIS)的国别拆解,以及文档与共享声明的对象化表达。

Q3:为什么说它存的是「物流信息」?
因为试验论文告诉你的是结果(入组多少人、疗效如何),而 MDR 告诉你的是过程物件在哪(方案在哪儿、哪国有伦理批件、数据落在哪个机构、能不能申请)。前者是成绩单,后者是物流单。

Q4:检索要钱吗?要注册吗?
都不要。官方页面明确写科学使用者可以自由检索、无需注册,本次核验也直接访问了查询接口并拿到结果。受限的是被指向的原始数据,不是元数据检索本身。

Q5:它的规模数字可信吗?
可复现。所有数字都可以用 §5.3 的计数查询重跑,结果取决于你查询的时点。本文给的是 2026 年 10 月 26 日的快照,来源库持续更新,重跑可能得到不同值。

Q6:为什么 ICTRP 一个来源就占了那么多?
因为 ICTRP 是 WHO 维护的注册库总索引,本身就汇聚了各国注册库的记录。MDR 整批引入之后,数量上占绝对优势,但每条记录的信息密度低,国别与共享声明常常为空。

Q7:CTIS 和 EUCTR 为什么同时都在?
因为欧盟正在从旧体系迁移到新体系,老试验只在 EUCTR 里,新试验只在 CTIS 里,两边都在过渡期内保持收录。查欧洲试验时两个来源都要查。

Q8:能把它当作数据共享政策的研究数据源吗?
可以,而且这是它最有特色的用途之一。但要按来源分层,并且把 planToShareIPD 的空值与 false 分开统计,否则会把「来源没说」误算成「明确拒绝」。

Q9:文档链接点开是 404 怎么办?
这在预期之内。访问地址是抽取时点抄下来的,之后原网站改版或下架都不会反馈回来。正确做法是先抽样验证可用率,再在报告里说明这个限制。

Q10:它的许可是什么?
聚合层没有统一的许可声明,这一点在官方页面上找不到。每条记录继承其来源库的许可,例如 CTG 是美国联邦公有领域,BBMRI 与 BioLINCC 各有自己的条款。引用时必须写清来源,不能笼统写「ECRIN 数据」。

Q11:更新频率是多少?
官方只说定期更新,没有公布频率,也没有公布每个来源的最后同步时间。用它做实时监测会误判,做周期性分析则需要自己建立快照。

Q12:我能把它接入自己的系统吗?
技术上可以。接口公开、无认证、返回 JSON,模型定义可读。但接入前应该先解决两个问题:一是同步时效由谁监控,二是链接失效由谁兜底。这两件事 MDR 都不提供。

术语表

术语 解释
MDR Metadata Repository,本文指 ECRIN 的临床研究元数据仓库
ECRIN European Clinical Research Infrastructure Network,欧洲临床研究基础设施网络
元数据 描述数据的数据;本文特指试验的识别、设计与位置信息
数据对象 StudyObject,MDR 里指方案、知情同意书、数据集、论文等可被指向的物件
StudyCountry 试验与国家的关联记录,一条对应一个试验在一个国家的情况
StudySite 试验与中心的关联记录,一条对应一个试验在一个机构的情况
DataSource 来源库标识,本库只有六个
DataSet 来源库提供的一份数据集合,通过它连到来源
ICTRP 世界卫生组织的国际临床试验注册平台,注册库总索引
CTG ClinicalTrials.gov 在 MDR 里的来源代号
EUCTR 欧盟临床试验注册库,CTIS 的前身体系
CTIS 欧盟临床试验信息系统,新的统一入口
BioLINCC 美国 NHLBI 的生物样本与数据仓库
BBMRI 欧洲生物样本库与研究基础设施,其目录是 MDR 的样本来源
IPD Individual Participant Data,个体参与者数据
数据共享声明 试验方关于是否及如何共享个体数据的说明
accessType 数据对象的访问类型,区分公开与受限
accessUrl 数据对象的访问地址
InterMine 一个开源的数据仓库框架,MDR 的技术底座
BlueGenes InterMine 的新一代网页前端
Mine InterMine 实例的名称,本库为 mdrmine
查重合并 把来自不同来源的同一试验归到同一个编号下
不策展 官方原则,指不做人工筛选与质量加权
交叉注册 同一项试验在两个或多个注册库中都有记录
国别拆解 把试验的多国开展情况拆成逐国记录
可发现性 能找到并定位到对象的能力,不等于可获取
快照 某一时点的数据状态,用于比对变化

附录 A:核心数字核对表

项 值 来源 来源层级
Study 总数 1,125,348 crmdr.ecrin.org 查询接口计数 官方接口
StudyObject 总数 361,515 同上 官方接口
StudyCountry 总数 1,526,479 同上 官方接口
StudySite 总数 3,513,748 同上 官方接口
Country 总数 252 同上 官方接口
Publication 总数 788,253 同上 官方接口
Organisation 总数 4,157,504 同上 官方接口
ICTRP 认领 Study 数 1,107,830 同上(按来源约束) 官方接口
CTG 认领 Study 数 599,838 同上 官方接口
EUCTR 认领 Study 数 16,691 同上 官方接口
CTIS 认领 Study 数 12,127 同上 官方接口
BioLINCC 认领 Study 数 261 同上 官方接口
BBMRI 认领 Study 数 201 同上 官方接口
来源库个数 6 同上 官方接口
模型类数 95 mdrmine/service/model 官方接口
有 SAP 条目的 Study 数 47,855 官方查询接口计数 官方接口
有 ICF 条目的 Study 数 16,271 同上 官方接口
有 IPD 访问安排的 Study 数 14,759 同上 官方接口
hasResults 为真的 Study 数 172,229 同上 官方接口
planToShareIPD 非空的 Study 数 511,027 同上 官方接口
启动日期缺失的 Study 数 180,155 同上 官方接口
2020 年后启动的 Study 数 453,749 同上 官方接口
BBMRI 关联规模 202 项研究 / 284 个集合 论文摘要(DOI 10.12688/openreseurope.17131.2) 论文摘要
交叉注册状态一致率 85% 论文摘要(DOI 10.1136/bmjopen-2025-105173) 论文摘要
交叉注册完成日期一致率 50% 同上 论文摘要
仅单库能找到试验注册号的比例 17% 同上 论文摘要
ECRIN 成员国与观察员国 13 ecrin.org 首页 官方页面
ECRIN 网络内临床试验单元 130 余 ecrin.org 概览页 官方页面
ECRIN 试验组合 75(概览页)/ 79(首页) ecrin.org 两处 官方页面(两口径)
数据中心认证累计数 19 ecrin.org 认证页 官方页面
MDR 上线年份 未核实 官方页面未给出 未核实
聚合层许可 未单独声明 官方页面未给出 未核实
各来源最后同步时点 未公布 接口与页面均无此字段 未核实

附录 B:数字的来源分层

三档来源的可靠性依次递减,引用时的写法也应不同。

第一档,官方接口。 门户自身的 InterMine 端点返回的计数。这一档的优点是逐条可复现、时点明确;缺点是只反映门户自身的状态,不保证与来源库一致。本文的规模与来源构成全部属于这一档,写法是「截至 2026-10-26 查询」。

第二档,论文摘要。 Europe PMC 检索到的两篇。这一档的优点是经过同行评议、有方法描述;局限性是只覆盖某一侧面(BBMRI 关联、交叉注册一致性),不能外推到整体。写法是「某项研究显示」。

第三档,官方页面陈述。 ecrin.org 的机构规模、认证累计数、试验组合数。这一档的特点是口径可能随时变动,且存在两处数字不一致的情况(试验组合 75 与 79)。写法是「官网当前口径」。

未核实的项单独列出,不归入以上三档:MDR 上线年份、聚合层许可、各来源同步时点。这三项在写作时曾尝试从官方页面与论文中寻找,均未得到可引用的表述,因此保留空缺而不是推断。

附录 C:完整参考文献

  1. ECRIN. Clinical Research Metadata Repository 产品页. https://ecrin.org/clinical-research-metadata-repository(2026-10-26 访问)
  2. ECRIN. Tools 总览页. https://ecrin.org/tools(2026-10-26 访问)
  3. ECRIN. ECRIN overview 概览页. https://ecrin.org/ecrin-overview(2026-10-26 访问)
  4. ECRIN. Data Centre Certification 认证页. https://ecrin.org/data-centre-certification(2026-10-26 访问)
  5. ECRIN. Clinical Research Metadata Repository 门户. https://crmdr.ecrin.org/(2026-10-26 访问)
  6. ECRIN. InterMine 查询接口. https://crmdr.ecrin.org/mdrmine/service/query/results(2026-10-26 查询)
  7. ECRIN. InterMine 数据模型. https://crmdr.ecrin.org/mdrmine/service/model(2026-10-26 读取)
  8. Ohmann C, Canham S, Majcen K, Meloni V, Pireddu L, Sulis A, Delussu G, Frexia F, Holub P. Linking the ECRIN Metadata Repository with the BBMRI-ERIC Directory to connect clinical studies with related biobanks and collections. Open Research Europe, 2024. DOI: 10.12688/openreseurope.17131.2
  9. Accounting for cross-registration in monitoring transparency in clinical trials: a cross-sectional study of trials at German university medical centres. BMJ Open, 2026. DOI: 10.1136/bmjopen-2025-105173
  10. ECRIN–CESSDA strategies for cross metadata mappings in selected areas between life sciences and social sciences and humanities. Open Research Europe, 2023. DOI: 10.12688/openreseurope.16284.2
  11. Europe PMC REST 检索接口. https://www.ebi.ac.uk/[europepmc](https://www.qianfanghub.com/ai-ready-dataset/europepmc/1353)/webservices/rest/search(2026-10-26 检索)

附录 D:可复现查询清单

下列查询均在 https://crmdr.ecrin.org/mdrmine/service/query/results 上执行,format=count。按顺序跑一遍即可复现附录 A 的前十六行。

#-- 端点与参数格式:query 为 XML,format 取 count/json/csv/tsv
EP="https://crmdr.ecrin.org/mdrmine/service/query/results"

#-- 规模类
curl -s "$EP?format=count" --get --data-urlencode 'query=<query model="genomic" view="Study.id"></query>'
curl -s "$EP?format=count" --get --data-urlencode 'query=<query model="genomic" view="StudyObject.id"></query>'
curl -s "$EP?format=count" --get --data-urlencode 'query=<query model="genomic" view="StudyCountry.id"></query>'
curl -s "$EP?format=count" --get --data-urlencode 'query=<query model="genomic" view="StudySite.id"></query>'
curl -s "$EP?format=count" --get --data-urlencode 'query=<query model="genomic" view="Country.id"></query>'

#-- 来源构成类:约束必须写在 Study 路径上
for S in ICTRP CTG EUCTR CTIS BioLINCC BBMRI; do
  curl -s "$EP?format=count" --get --data-urlencode \
    "query=<query model=\"genomic\" view=\"Study.id\"><constraint path=\"Study.dataSets.dataSource.name\" op=\"=\" value=\"$S\"/></query>"
  echo " <- $S"
done

#-- 数据对象覆盖类
curl -s "$EP?format=count" --get --data-urlencode \
  'query=<query model="genomic" view="Study.id"><constraint path="Study.statisticalAnalysisPlans" op="IS NOT NULL"/></query>'
curl -s "$EP?format=count" --get --data-urlencode \
  'query=<query model="genomic" view="Study.id"><constraint path="Study.planToShareIPD" op="IS NOT NULL"/></query>'

两个坑:curl 的 --data-urlencode 会正确编码引号与尖括号,手工拼接易漏 op="&gt;=" 的转义;来源约束写在 Study.dataSets.dataSource.name 上才有意义,写 Study.dataSources.name 返回零——模型里两个路径都在,只有前者有数。

附录 E:如果只记五件事

第一,它不存数据,只存数据在哪。这是理解它所有优缺点的起点。

第二,它写着「欧洲」,但欧洲专门来源(CTIS 加 EUCTR)不到总量的 3%。用之前先想清楚你要的是欧洲深度还是全球广度。

第三,它最独特的价值是数据共享声明的字段化与国别拆解,这两件事别处不好找。

第四,空值不等于否定。planToShareIPD 为空说明来源库没说,不是说不共享。

第五,它不做质量过滤。门户里排序靠前不代表研究做得好,只代表它符合你输入的关键词。

编辑说明

本文的核验时间为 2026 年 10 月 26 日,核验方式为直接访问 ECRIN 官网产品页与门户自身的 InterMine 查询接口,数字全部可复现,脚本见附录 D。写作过程中曾遇到一次查询路径错误(用 Study.dataSources 约束来源返回零),已在 §5.4 与附录 D 中说明正确写法。

未覆盖的内容包括:未下载门户全量记录、未逐条验证文档链接的可用性、未计算各来源的逐字段填充率、未取得各来源的最后同步时间。上线年份与聚合层许可在官方页面与论文中均未找到可引用的表述,附录 A 中标为未核实,未作推断。

本文与门户的数据口径绑定:如果来源库更新,重跑附录 D 的查询会得到不同数字,那属于数据变化,不属于错误。引用本文数字时建议同时写明查询日期。


相关数据集导航

以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:

导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

返回 AI-Ready 数据集