信息速览
BIFAP 是西班牙药品与医疗器械管理局(AEMPS)发起并资助的药物流行病学研究数据库,全称 Base de Datos para la Investigación Farmacoepidemiológica en el Ámbito Público。它的原料是各自治区全科医生与儿科医生在电子病历里敲下的东西:谁来了、得了什么病、开了什么药、验了什么血。AEMPS 把这些记录汇总、假名化、归一化,做成一份可以支撑药品监管决策的纵向队列。
它和绝大多数摆在网上任人下载的数据集不是一类东西。你没有「下载」这个动作,只有「申请」这个动作:注册、培训、交方案、等科学委员会出意见、签承诺书、由 AEMPS 团队按你方案里的变量清单生成数据文件,最后通过手递、加密邮件或 SFTP 拿到手。中间任何一步走不通,后面都不存在。这套流程的正式名称叫数据访问治理(Data Access Governance),AEMPS 在 2021 年 2 月发布的 41 页文档把它从头到尾写死了,包括每一次交付、每一条变量、每一份承诺书。
理解 BIFAP 的关键,不是记住它有多少患者,而是理解「方案先行」这四个字对研究设计意味着什么:你在看到任何一行数据之前,就得把研究问题、人群定义、变量清单、分析计划全部写清楚;写进方案的分析可以跑,没写进去的要重新报批。这一屏先说结论:BIFAP 是一个把「数据管得住」放在「数据好用」前面的库,它的价值在监管可信度,它的代价在研究自由度。一屏速览见下表。
| 维度 | 内容 |
|---|---|
| 中文名 | 西班牙公共领域药物流行病学研究数据库 |
| 西班牙文全称 | Base de Datos para la Investigación Farmacoepidemiológica en el Ámbito Público |
| 管理方 | 西班牙药品与医疗器械管理局(AEMPS)药物流行病学与药物警戒部 |
| 数据原料 | 参与自治区初级保健电子病历(HCE-AP),全科医生与儿科医生录入 |
| 规模 | 文献称 2001 年起约 1,200 万患者,按年更新(文献层级) |
| 时间跨度 | 文献称 2001 年起;AEMPS 治理文档表述为 2002 年起至今 |
| 诊断编码 | ICPC-2(两种版本)、ICD-9-MC、ICD-10;另有自由文本 |
| 药品数据 | 处方 + 电子配药,归一到一个药品字典,补算疗程与剂量 |
| 其他来源 | 住院出院诊断(RAE-CMBD)、电子配药;死亡登记等属改善计划中的待接入项 |
| 数据粒度 | 个体级,二次假名化,出生死亡日期降为年份或年龄 |
| 交付格式 | TXT 或 Excel 的研究专用数据文件;聚合报告另出 |
| 访问方式 | 注册 → 培训 → 交方案 → 科学委员会批准 → 伦理委员会 → 签承诺书 → 交付 |
| 费用 | 非商业研究;治理文档列出非营利要求,未在文档中写明收费表 |
| 许可 | 不适用开放许可;受 GDPR 与西班牙 LOPDDD 第 17 附加条款约束 |
| 官方入口 | https://www.bifap.org/ (旧路径 aemps.gob.es/bifap/ 现返回 404) |
| 公开文献 | 官方门户论文栏目列出 158 条(含跨年条目) |
§1 它要解决的具体麻烦
1.1 药监机构手上没有自己的真实世界证据,这是制度性缺口
一个药品上市之后,会发生很多临床试验里看不到的事:老年人同时吃七种药、孕妇不知情服药、医生按经验超说明书用药、换个辅料之后依从性变差。这些只在日常诊疗里发生,也只在日常记录里留下痕迹。传统药物警戒靠自发报告,报告率低、有偏、说不清分母——只靠它做决策,等于在没有分母的分子上判断。
BIFAP 要解决的正是这个:给监管机构一个自有的、有分母的、能追踪个体用药史的观察场。它是 AEMPS 自己的项目,第一受益人是其内部的药物警戒团队。治理文档第 4.1.1 节写明其法定依据:西班牙《药品与医疗器械保障与合理使用法》第 55 条与皇家法令 577/2013 授权 AEMPS「推动建立并便利使用计算机化健康数据库」。
换句话说,BIFAP 不是「顺便开了个口子让学术界用」,而是监管基础设施,学术访问是副产品。这个先后次序解释了为什么必须方案先行、必须留痕、数据要分三档交付。
1.2 三条常见的错误期待
第一次接触 BIFAP 的人,通常带着三种预期中的一种,而三种都会在第一步就落空。
第一种预期是「它是一个更大的 MIMIC」。MIMIC 是重症监护数据,做完培训就能拿全量包;BIFAP 完全相反,没有下载、没有全量包、没有开放接口,你拿到的是按方案切出来的子集。
第二种预期是「它是一份西班牙人群的代表性样本」。BIFAP 只覆盖自愿签约的自治区,且从 2020 年起部分自治区只抽取主动申请合作的医生的患者名册,两层筛选叠加,它在任何意义上都不是全国概率样本。
第三种预期是「审批只是形式」。科学委员会的评价有五条:科学合理性与技术质量、公共卫生意义、与 BIFAP 目标的契合度、团队能力与利益冲突、用 BIFAP 数据执行的可行性。第五条由技术人员出具报告,要判断申请的变量能否取到、研究复杂度如何、AEMPS 要投多少人力——足以让设计漂亮但取不出来的方案被退回。
1.3 它能给到的与给不到的
| 你的需求 | 它给的 | 够不够 |
|---|---|---|
| 看某个药在真实处方里的使用强度 | 按活性成分、按年或按季、按年龄组与性别分层的用药流行率 | 够,BIFAP Express 直接出聚合结果 |
| 做「用药—事件」关联的队列或巢式病例对照 | 个体级处方史 + 诊断编码 + 部分住院结局 | 够,这是 BIFAP 的主流用法 |
| 用自由文本做诊断验证 | 允许查看自由文本,但只在 AEMPS 或自治区卫生部门设备上,且不可导出 | 部分够:能看能判读,不能把它变成训练语料 |
| 训练一个端到端深度学习模型 | 不提供 | 不够,见 §4.3 的案例 |
| 拿到全量原始数据在本地反复折腾 | 不提供 | 不够,没有下载通道 |
| 覆盖西班牙全国人口 | 只覆盖参与自治区,且逐年变化 | 不够,外推要谨慎 |
| 拿住院期间的用药与手术细节 | 只有出院诊断与部分配药 | 不够,初级保健视角决定的天花板 |
| 复现别人的分析 | 方案与出版物公开列出,数据文件可申请二次使用 | 部分够,有 2 年独占期保护原研究者 |
| 快速摸清某个诊断的编码习惯 | BIFAP Express 给出最常见的 11 个 ICPC-2 与 11 个 ICD-9 关联诊断 | 够,用于方案设计阶段摸底 |
1.4 你的处境与它能帮到的事
| 你的处境 | 它能帮你什么 | 下一步该做什么 |
|---|---|---|
| 你手上有一个药品安全信号,想验证它在西班牙的真实处方中是否成立 | 用个体级处方史和诊断做巢式病例对照,控制适应证混杂 | 先写方案,把人群、暴露窗、结局定义、混杂变量写全,再提交 |
| 你是药监或医保机构,要监测某类药的使用趋势 | BIFAP Express 给你预计算的用药流行率与关联诊断频次 | 直接申请 Express 账号,注意它的结果不得用于发表 |
| 你是高校团队,想做跨国药物流行病学比较 | BIFAP 是欧洲多库协作(如 PROTECT、EU-ADR 类项目)的成员库之一 | 先确认目标国家库是否同时参与同一项目,单独申请两个库成本很高 |
| 你要做一个 NLP 模型,需要大量中文或西语临床自由文本 | 不适用 | 另找开放文本语料;BIFAP 的自由文本不可导出 |
| 你在写综述,需要引用一个有代表性的欧洲初级保健库 | 引用其资源介绍论文即可 | 用 Maciá-Martínez 2020 那篇,见附录 C |
| 你要评估某个诊断编码在初级保健里的可靠性 | 库内有已发表的验证研究与 PPV 数据 | 先查该病的验证文献,不要自己从零验证 |
| 你在设计一个中国本土的「数据不出域」平台 | BIFAP 的治理文档是一份可以直接对照的蓝本 | 重点看第 3 章的数据生命周期与第 3.4 节的交付分档 |
1.5 一句话判断
如果你的研究问题能在方案阶段被完整写死,BIFAP 给你的是一个受监管的、有分母的、能追踪十年以上用药史的欧洲初级保健队列;如果你的研究问题需要边看数据边改主意,BIFAP 会在第一步就把你挡在门外。
1.6 不适合谁:四条边界
第一条,不适合需要探索式分析的人。治理文档第 2.4 节第 1 条写明:研究者承诺仅按批准版本方案的用途使用数据,「未在方案中规定的分析,须经 BIFAP 科学委员会批准」。这句话把探索的余地压到接近零。
第二条,不适合没有西班牙境内公共机构身份的人。注册条件三条:持有健康科学学位;在公共医疗卫生、高校或科研机构任职,或无业者须为公立大学研究生;并且这些工作要在西班牙境内完成。三条是并列的,缺一条就注册不了。境外团队想用,现实路径是加入一个已有账户的西班牙团队,团队成员资格由项目负责人逐一登记。
第四条,不适合想拿它做深度学习端到端训练的人。不是技术上做不到,是流程上不允许:自由文本不可导出,变量按方案定死,模型训练需要的反复试错在「方案先行」下没有位置。§4.3 的案例讲了这件事。
§2 数据构成与规格
2.1 三层结构:患者、事件、字典
BIFAP 的数据模型不是一张大宽表,而是按「患者—事件—字典」三层组织的。
最底层是患者层:一人一个 BIFAP 内部假名,加性别、出生年份(原始日期在交付时降级)、入库与删库日期、删除原因(含死亡)、在库状态。这一层决定纵向追踪的起点与终点。
中间层是事件层,按类型分成若干张表:就诊、诊断(分「约束」与「病史」两类)、一般数据(吸烟、饮酒、血压、BMI)、影像检查、就诊间期、疫苗、化验、处方、疑似不良反应。这些表通过患者假名横向连接,通过日期纵向排序。
最上层是字典层:药品字典把处方编码归一到活性成分并挂 ATC;ICPC-BIFAP 字典在西语原文上扩充细粒度,再配合诊断分组把散落编码聚成疾病簇。字典层由 AEMPS 团队半自动维护,是 BIFAP 相对「纯原始病历转储」增值最大的地方。
2.2 字段/记录的完整字典
| 表 / 主题 | 包含内容 | 粒度 | 来源 | 是否可直接交付 |
|---|---|---|---|---|
| 患者(PATIENT) | 假名、性别、出生年、入库日、删库日、删除原因、在库状态 | 一人一行 | 自治区 HCE-AP | 是 |
| 就诊(VISITS) | 就诊日期 | 一次一行 | HCE-AP | 是 |
| 约束(CONSTRAINTS) | 诊断日期、编码、描述 | 一条诊断一行 | HCE-AP | 是 |
| 病史(HISTORY) | 既往诊断日期、编码、描述 | 一条诊断一行 | HCE-AP | 是 |
| 一般数据(GENERAL) | 吸烟、饮酒、血压、BMI 等,带采集日期与类型 | 一次测量一行 | HCE-AP | 是 |
| 病程 / 诊断(EPISODES) | 描述符、日期、编码 | 一个病程一行 | HCE-AP | 是 |
| 影像(RADIOLOGY) | 检查日期、类型、原因、结果 | 一次检查一行 | HCE-AP | 是 |
| 病程备注(COMMENTS) | 日期、观察文本 | 一条备注一行 | HCE-AP 自由文本 | 混淆后,仅屏内可见 |
| 就诊间期(INTER-VISITS) | 日期、专科、动因、结果 | 一次转诊一行 | HCE-AP | 是 |
| 疫苗(VACCINES) | 日期、编码、名称、批次 | 一次接种一行 | HCE-AP | 是 |
| 化验(ANALYTICS) | 申请日、结果日、类型、项目、值、单位、范围 | 一项结果一行 | HCE-AP | 是 |
| 处方(PRESCRIPTIONS) | 日期、类型、药品码、包装数、剂量 | 一次开药一行 | HCE-AP | 是 |
| 疑似不良反应 | 上报药物警戒系统的疑似不良反应数据 | 一次上报一行 | HCE-AP | 是 |
| 住院出院诊断(RAE-CMBD) | 入院日、出院日、出院类型、主次诊断 | 一次住院一行 | 自治区住院系统 | 是 |
| 电子配药 | 配药药品标识、配药日期 | 一次配药一行 | 自治区配药系统 | 是 |
| 药品字典 | 活性成分、ATC 组、疗程与剂量计算结果 | 一药一行 | AEMPS 归一 | 派生字典,非个体数据 |
| ICPC-BIFAP 字典 | 编码、西语原文、参考术语映射 | 一条术语一行 | AEMPS 维护 | 派生字典,非个体数据 |
| 死亡登记 | 死因 | 一人一条 | INE(改善计划) | 未接入 |
| 专科病历 | 住院与门诊专科记录 | 一次就诊一行 | 自治区专科系统 | 未接入(改善计划) |
| 人口普查区 | 患者住址所属普查区的聚合层级 | 区一级 | 自治区 | 需顾问委员会另行批准 |
表里有两行需要特别注意:住院出院诊断与电子配药是「其他来源」,不是全自治区都有,随合作协议而定;死亡登记与专科病历写在 2019 年经顾问委员会批准的改善计划里,属预期接入,不能当作已有资源来设计。
2.3 一条记录的完整解剖
下面用一个假设的处方记录说明 BIFAP 在交付时的形态。这是按治理文档第 3.1.2 节与第 3.4.2 节描述的字段结构重构的示意,不是从库里导出的真实行。
#-- BIFAP 研究专用数据文件 · 处方表示意(字段按治理文档 3.1.2 第 1 节 l 项重构)
#-- 表头为英文便于阅读,实际交付文件的列名以方案为准
PATIENT_ID : P0007XXXX #-- 二次假名后的患者编号,跨年度更新保持不变
BIRTH_YEAR : 1958 #-- 交付时降为出生年份,原始日期不出库
SEX : F
DRUG_CODE : 6XXXXXXX #-- 西班牙国家药品编码
ATC : C09AA05 #-- 归一后的 ATC,活性成分层级
PRESCRIPTION_DATE : 2019-03-14
PRESCRIPTION_TYPE : receta electrónica
PACKS : 3
DOSAGE : 1 comprimido/día
DAYS_SUPPLY : 84 #-- 由算法按包装数与剂量补算
DISPENSED_DATE : 2019-03-16 #-- 来自电子配药,非所有自治区都有
DISPENSED_PACKS : 3
ASSOCIATED_EPISODE: K86 #-- 开方时勾选的关联病程编码
逐条读这张表,能看到三件事。
第一,患者侧的可识别信息被压到最低:只有编号、出生年、性别。出生年保留是因为年龄是最基本的混杂变量,但它已构成不了重识别所需的精度。
第二,药品侧做了两层归一:原始国家药品编码保留,同时给出 ATC 编码,研究者可以按活性成分而不是按商品名分组。疗程与剂量不是原样抄录,而是按包装数与用法由算法补算——治理文档第 3.2.2.4 节称之为「用算法对处方与配药做疗程和剂量的标准化计算」。
第三,关联病程是推断适应证的主要依据,也是 Express 里「关联诊断频次」的来源。它的局限同样明显:反映的是医生当时的勾选习惯,不是严格的适应证判断。
2.4 交付形态的三档分布
治理文档第 3.4.2 节把面向研究的数据分成三档,这一分档是理解「受控环境」的核心。
| 档位 | 内容 | 格式 | 交付方式 | 个体级 | 能否导出 |
|---|---|---|---|---|---|
| 聚合数据 | 只含按年龄、性别、随访时间分层的汇总值 | TXT / Excel | 手递、加密邮件、SFTP | 否 | 可 |
| 结构化患者数据文件 | 个体级,但只含结构化且假名化的变量 | TXT / Excel | 手递、加密邮件、SFTP | 是 | 可 |
| 非结构化微数据 | 个体级,含医生录入的自由文本 | 屏幕内查看,不生成文件 | 仅限 AEMPS 本部或自治区卫生部门设备 | 是 | 否 |
第三档是真正的「不出域」。数据保护影响评估把医生录入的非标准化自由文本列为隐私风险最重要的来源,因此它的访问只能在 AEMPS 本部或参与自治区卫生行政部门所在地的设备上进行,查询结果直接显示在屏幕上,不生成可导出的文本文件。
第一、二档是可以出域的,但出域的方式受控:手递、加密邮件,或者由研究者从安全 SFTP 服务器上取。结构化文件里还要做两处降级——出生与死亡日期不能以完整日期出现,只给年份或年龄;患者所属的自治区默认不可得,除非方案里有充分理由并经科学委员会与顾问委员会双重批准。
2.5 与同类资源的字段差异
| 对照项 | BIFAP | 英国 CPRD | 荷兰 IPCI | 西班牙 SIDIAP |
|---|---|---|---|---|
| 管理方 | 药品监管机构(AEMPS) | MHRA(监管机构) | 学术机构 | 初级保健研究机构 |
| 诊断编码 | ICPC-2、ICD-9-MC、ICD-10 并存 | Read 码为主 | ICPC | ICD-10 |
| 处方来源 | 医生开方 + 部分电子配药 | 医生开方 | 医生开方 | 开方 + 配药 |
| 住院链接 | 部分出院诊断 | 与 HES 链接 | 有限 | 与住院、死亡链接较完整 |
| 自由文本 | 有,混淆后,仅屏内可见 | 部分子集可得 | 有限 | 有 |
| 开放下载 | 无 | 无 | 无 | 无 |
| 申请主体地域限制 | 限西班牙境内公共机构 | 限协议内机构 | 需合作 | 需合作 |
| 相对特长 | 监管导向、ICP C-2 原生、非商业强制 | 规模与验证文献最厚 | 全科视角纯粹 | 加泰罗尼亚地区链接完整 |
选型建议:围绕 ICD 编码的疾病定义,ICD-10 原生的库更省事;围绕就诊原因,ICPC-2 原生的库更贴近;要做住院结局,链接完整的库更合适。
§3 身份层:它是监管基础设施,不是研究玩具
3.1 名实之间:为什么叫「公共领域」
西班牙文全称里那句「en el Ámbito Público」常被简化掉,但它点出了制度身份:它不是药企的数据资产,也不是大学的科研项目,而是公共部门为公共目的建立、以公共资金维持的设施。治理文档引言反复强调:BIFAP 由 AEMPS 资助并管理,数据来自自愿签约加入的自治区。
「自愿」需要准确理解:自治区逐个签合作协议,协议在西班牙国家公报公布,网站维护最新清单。覆盖范围不是行政区划决定的,是行政意愿决定的,会随政治周期与信息化投入变化。
3.2 谁在维护,维护多久了
AEMPS 内部有两个单元在管这件事。U.SINF 是信息系统单元,负责数据接收、清洗、结构化、假名化与数据库本身的运维;U.INV 是研究单元,负责方案评审阶段的技术可行性报告、数据文件生成与研究支持。两个单元都在马德里 Campezo 街 1 号 8 号楼,也就是 AEMPS 本部。
项目的时间线可以从两个文献里读出来。2002 年《Atención Primaria》的 BIFAP 项目论文描述的是试点阶段:2000 年 1 月到 2003 年底,300 到 500 名医生参与,每两到三个月向当时的西班牙药品局(AEM)寄送一次匿名信息,来源加密,内容涵盖基本人口学、患病情况、处方与其他流行病学相关数据。2020 年《Pharmacoepidemiology and Drug Safety》的资源介绍论文描述的则是成熟形态:覆盖 2001 年起的数据,按年更新,已发表大量同行评议论文。
从 2015 年起,西班牙公共领域的任何研究者都可以在非商业目的下使用 BIFAP 数据。这句话写在治理文档引言里,标志着 BIFAP 从「AEMPS 内部工具 + 合作医生」变成「面向公共研究的设施」。2017 年 6 月,第一版治理文档在官网发布;2021 年 2 月,为适应 GDPR 与 LOPDDD,以及纳入新的数据来源,出了第二版,就是本文引用的这一版。
3.3 挂靠在哪张制度网络上
法律根基建在三层法规上。最上层是 GDPR:健康数据处理本属第 9 条的禁止情形,但第 9.2 条 i 项开口子——为公共卫生需要、为确保药品安全的高水平保护所必需,且由联盟法或成员国法规定时,处理不被禁止。西班牙这边的具体法是 RDL 1/2015 第 55 条与皇家法令 577/2013 第 4.1.j 条。
第二层是数据保护法。LOPDDD 第 17 附加条款专门针对健康数据的科研处理,规定匿名化与假名化要做风险评估。BIFAP 于 2019 年 12 月获顾问委员会批准开展评估,2020 年 1 至 11 月用 AEPD 的 ASSI-GDPR 工具完成,结论认为现有设计下收益风险比有利。
第三层是机构间的合作协议:每加入一个自治区签一份协议,明确双方承诺、数据抽取方式与监督委员会成员,在 BOE 公布;覆盖范围的变化由它驱动。
3.4 数据生命周期:五个阶段,五个处理者
治理文档第 3 章把 BIFAP 的数据处理拆成五个阶段,每个阶段有各自的处理内容、处理者与技术手段。这张表是全篇最值得对照的一张,因为它把「谁在什么环节碰到数据」写到了行政颗粒度。
| 阶段 | 处理内容 | 处理者 | 技术手段 | 产出 |
|---|---|---|---|---|
| 数据采集 | 从自治区原始病历抽取、传输 | 自治区信息系统技术人员 + AEMPS 计算机对接人 | 第一次假名化、SFTP 传输 | 传输文件,落到 AEMPS 数据中心 |
| 清洗与结构化 | 校验数据模型、统一异构结构、剔除低质量记录 | AEMPS 的 U.SINF 技术人员 | 第二次假名化、自由文本混淆、药品与诊断归一 | 研究库 |
| 标准化报告 | 从研究库切出预计算子集 | AEMPS 技术人员 + 自治区技术人员 + 合作医生 | BIFAP Express | 聚合报告 |
| 研究取数 | 按方案生成研究专用数据文件 | 研究者 + AEMPS 技术人员 | GIE 工具或直接编程查询 | 数据文件 + 数据集 |
| 分析与发表 | 统计分析与成果公开 | 研究者 | 常规统计软件 | 论文 + 西班牙临床研究注册库登记 |
数据在 AEMPS 内部的每次「换手」都有对应角色:U.SINF 管机器与数据,U.INV 管研究与方案。研究取数阶段是唯一一个双方共同参与的阶段,这解释了为什么取数要排队、为什么方案写得细能省时间。
3.5 两次假名化:为什么不是一次就够
第一次假名化发生在自治区。技术人员用 CIPA(自治区患者识别编码)把同一患者的初级保健病历、电子配药、住院出院诊断连起来,然后删掉 CIPA,换成一个随机假名。私钥只掌握在自治区自己的信息技术负责人手里,存在一个只能用本人账号密码打开的文件里。AEMPS 和研究者都碰不到这把钥匙。
第二次假名化发生在 AEMPS。数据到了数据中心之后,AEMPS 的技术人员对收到的假名再做一次分离,用随机方式生成一套新的编号,两套编号之间的对应关系存在一张表里。医生的名册编码也一样处理,生成一份「名册编码—新假名」的对照表。
为什么要两次?自治区知道自己库里的患者对应哪个第一假名,但不知道它对应哪个第二假名;AEMPS 知道两个假名的对应关系,但不知道它对应现实中哪个人。任何一方单独行动都无法完成重识别。
3.6 自由文本混淆:改的是什么,不改的是什么
自由文本是 BIFAP 里隐私风险最高的部分,治理文档的数据保护影响评估把它点名为「最重要的潜在敏感数据来源,特别是残余重识别风险」。处理方式是混淆,不是删除。
具体做法是:用数据挖掘算法扫描电子病历里的所有文本字段,找出可能含敏感信息的字符串——名字、姓氏、城市、医疗机构名、民族称谓等;然后用其他记录里的词,或者直接用四个星号替换掉。治理文档的说法是「引入随机失真,同时保持原始信息的细节与结构」。
改的是能指向具体个人的词,不改的是临床描述:症状、部位、时间、剂量照旧保留。研究者能判断「这个人吃了两周激素后出现皮疹」,看不到「这个人是马德里某诊所的李先生」。代价是逐字引用不可靠,做文本挖掘时要意识到这层噪声。
3.7 两个委员会的分工
BIFAP 有两个常设委员会,权限不同,容易混。
科学委员会(Comité Científico)管研究方案,评估科学合理性、公共卫生意义、目标契合度、团队能力与利益冲突、技术可行性。任何在 BIFAP 里做的研究都要拿到它的肯定意见,AEMPS 自己的项目也不例外;地理位置聚合数据的访问由它批准后还要再过顾问委员会。
顾问委员会(Comité Asesor)管治理与发展:批准数据保护影响评估提案、批准改善计划、批准远程访问非结构化微数据的许可,以及地理位置数据的访问。它更像利益相关方议事机构。
3.8 身份判断:这个库卖的是什么
如果用一句话概括 BIFAP 的产品,那就是「被治理过的证据」。原始病历到处都有,能拿来做监管决策的很少,中间差的不是数据量,是可追溯性:每条变量能查到是谁在什么流程里处理的,每次交付能查到是谁批的、给了谁、用在哪个方案上。这也解释了它为什么不做开放下载——数据包一旦流出,就没人知道它被复制了多少份、用在了哪些方案之外的分析上。BIFAP 用交付次数换可追溯性,这个交换决定了后面所有的使用体验。
§4 质量层:验证做了什么,没做什么
4.1 三道质量关口
第一道在入库前,是记录级剔除。治理文档第 3.2.2.2 节列了八条标准:性别无效或未编码;出生日期无效(1800 年前,或晚于随访开始日);随访结束时年龄超过 115 岁;随访开始日晚于或等于结束日;没有任何临床记录;病历标记为「不活跃」但无行政删除记录;病历中存在早于随访开始或晚于随访结束的数据;因转到其他医生名册而被行政删除。这八条剔的是「不能用」的记录,不是「有误差」的记录。
第二道在结构层是随访窗口的划定:每个患者有随访开始日与结束日,死亡日期按行政登记与临床事件重新赋值。第三道在语义层是编码归一:药品归到活性成分并挂 ATC,诊断通过 ICPC-BIFAP 字典与诊断分组提高可检索性。
4.2 验证做了什么、没做什么
BIFAP 的验证方式通常是「抽一批病历、人工读、算阳性预测值」。2024 年发表的消化系统肿瘤病例识别算法验证是典型:2001 到 2019 年、40 到 89 岁、无肿瘤史的受试者,用诊断编码加文本挖掘构建病例识别算法,随机抽取 816 份电子病历人工复核,再把年龄性别标化的发病率与国家癌症登记(REDECAN)比对。
结果按癌种分层:肝胆癌 87.6%,食管癌 96.2%,胰腺癌 89.4%,胃癌 92.5%,结直肠癌 95.2%;标化发病率与 REDECAN 报告的数据相当。但「验证过」不等于「验证完了」:验证是按病种、按算法逐个做的,已发表的是散点不是全覆盖。用没被验证过的病种做结局,风险要自己承担。
4.3 案例:一条拿不到的自由文本与肺癌研究
这个案例用来回答一个具体问题:一个想用 BIFAP 训练文本模型的团队,会走到哪一步、卡在哪一步。它不出自某一篇论文,而是由治理文档的条款推演出来的路径,之所以放在这里,是因为它能同时说明受控环境的三个面:能做什么、不能做什么、卡住之后有什么替代方案。
第一步:他们注册成功了。 团队在西班牙某公立大学,PI 有医学学位,成员包括一名流行病学家与一名 NLP 工程师,注册无障碍,培训后拿到账号。
第二步:方案被要求补充技术可行性说明。 原始方案写的是「用 BIFAP 十年的就诊记录训练一个从自由文本中抽取诊断的模型」。科学委员会退回并要技术人员出可行性报告,报告指出两点:自由文本不能生成可导出文件,只能逐屏查看;模型训练需要的迭代式访问与「仅按批准方案使用」的承诺冲突。
第三步:路径被改写。 方案改成两条腿:结构化数据走常规队列分析,按第二档交付,能拿到 TXT 文件;自由文本改成「人工阅读抽样病历、评估编码的阳性预测值」,人数控制在一千份以内,在 AEMPS 本部的 GIE 工具里现场完成,结果以汇总表带出。
第四步:他们拿到的和没拿到的。 拿到一份结构化数据文件、一份人工复核后的阳性预测值表、GIE 运行报告;没拿到任何可用于模型训练的自由文本,也没有可反复调参的流程。
案例的意义不是「BIFAP 不让做 NLP」,而是它展示了受控环境的真实形状:不是数据一步不出门,而是每一步出什么、出多少、给谁、怎么带都被事先规定。第三档不出设备,第一二档出门要留痕。§4.3 的案例直接决定了 §7.2 的偏差清单里要重点看哪几条。
4.4 GIE 工具集里到底有什么
受控环境不是一个空房间,里面有九件工具。理解这九件工具,才能判断自己的方案在技术上是否可执行。
| 工具模块 | 做什么 | 对方案的要求 |
|---|---|---|
| 病历筛选器 | 按人群、时间、诊断筛出目标患者 | 方案里要写清人群的操作性定义 |
| 变量生成器 | 从原始字段派生分析变量 | 变量清单要列全,包括派生规则 |
| 病历查看器 | 逐份查看单个患者的病历 | 只有需要验证时才开这个权限 |
| 病例随访模块 | 定义索引日期并沿线追踪 | 索引日期与随访窗口要明确 |
| 问题模块 | 记录研究过程中的待办与核查项 | 团队内部使用 |
| 时间轴病历查看器 | 把患者的就诊、处方、化验按时间排成一条线 | 用于判断时序关系 |
| 疗程生成器 | 把分散的处方拼成一个连续的用药疗程 | 疗程拼接规则要在方案中说明 |
| 累积剂量生成器 | 按疗程累加剂量 | 剂量计算口径要在方案中说明 |
| 用药时间序列分析 | 按时间粒度统计用药事件 | 适合做用药趋势类研究 |
九件工具都作用于已入库的研究库:跑得出来,但能不能带走取决于结果落在哪一档。使用另有两条规定:访问只允许在 AEMPS 本部或经授权的自治区卫生行政部门设备上进行(IP 控制);全部操作留痕,每个输出文件都配一份编程报告。
4.5 一个数据集能支撑几个问题
第一块是药品利用研究:使用强度、处方模式、指南依从性。例如幽门螺杆菌根除的一线处方研究,用 BIFAP 识别了 2003 到 2023 年间二十一万余名感染者的处方模式,并与欧洲专科注册库对照。
第二块是「用药—事件」关联,以巢式病例对照与队列为主。例如膝关节骨关节炎药物的长期使用与关节置换风险,在一个二十六万余人的队列里识别了一万五千余例初次置换,按年龄、性别、医疗辖区与索引日期做风险集抽样匹配。
§5 取数层:没有 API,但有正式通道
5.1 接口的整体形状
BIFAP 没有面向数据检索的公开 API。它的「接口」是三样东西:一个要账号的 BIFAP 服务平台(提交方案、管理项目、培训)、一个在受控设备上跑的 GIE 工具集、以及一只把文件递过来的手。下面的代码不是为了拉数据,而是探活官方入口、读公开的治理文档与文献清单、在拿到文件之后做本地规范化;真正取数的动作在浏览器与 AEMPS 的流程里。
5.2 先确认官方入口
旧路径 aemps.gob.es/bifap/ 现在返回 404,门户已经迁到独立域名。下面这段做一次探活,并打印状态码。
#-- 探活 BIFAP 官方门户(单页应用,返回的是壳页,内容由前端脚本渲染)
curl -s -o /dev/null -w "https://www.bifap.org/ -> %{http_code}\n" \
-A "Mozilla/5.0" https://www.bifap.org/
#-- 旧路径对照:AEMPS 主站下的 bifap 子路径已失效
curl -s -o /dev/null -w "https://www.aemps.gob.es/bifap/ -> %{http_code}\n" \
-L https://www.aemps.gob.es/bifap/
第二行大概率返回 404。这不是网络问题,是路径迁移。AEMPS 主站首页仍保留了指向 http://www.bifap.org/ 的链接,说明这是官方认可的新入口。
5.3 取治理文档与文献清单
门户的前端通过一个网关取公开内容,这些端点不需要登录。治理文档以 base64 编码的 PDF 返回,需要解码。文献清单返回的是 JSON。
#-- 从 BIFAP 公开网关取治理文档与文献清单(均为公开内容,不需账号)
import base64
import json
import urllib.request
GATEWAY = "https://bifapgtw.aemps.es/Gateway/WebBIFAP"
HEADERS = {
"Content-Type": "application/json",
"User-Agent": "Mozilla/5.0",
"Origin": "https://www.bifap.org",
}
def call(path, payload):
req = urllib.request.Request(
f"{GATEWAY}/{path}",
data=json.dumps(payload).encode("utf-8"),
headers=HEADERS,
method="POST",
)
with urllib.request.urlopen(req, timeout=60) as resp:
return json.loads(resp.read().decode("utf-8"))
#-- 1) 治理文档:iTipo=1, iLang=1 为西语版,iLang=2 为英语版
pdf = base64.b64decode(call("GetPdfGobernanza", {"iTipo": 1, "iLang": 1}))
with open("bifap_governance_es.pdf", "wb") as f:
f.write(pdf)
print("governance pdf bytes:", len(pdf))
#-- 2) 文献总数与可用年份
meta = call("Publications", {"pageNo": 1})
print("publications total:", meta["totalRegistros"], "years:", meta["years"])
#-- 3) 某一年的文献清单
rows = call("PublictionsByYear", {"year": 2024})
for r in rows[:3]:
print(r["title"][:100])
这里有个反直觉的细节:PublictionsByYear 的拼写少了一个 i,是官方前端的原始拼写,照着写才能通。
5.4 用 Europe PMC 交叉核对文献
官方门户的文献栏目是研究者主动通报的,可能有滞后。用 Europe PMC 的检索接口做交叉核对更稳,而且能直接拿到摘要与 DOI。
#-- 用 Europe PMC 检索 BIFAP 相关文献,取标题、年份、摘要前 300 字
import json
import urllib.parse
import urllib.request
query = 'BIFAP AND "primary care database"'
url = (
"https://www.ebi.ac.uk/europepmc/webservices/rest/search?"
+ urllib.parse.urlencode(
{"query": query, "resultType": "core", "format": "json", "pageSize": 20}
)
)
with urllib.request.urlopen(url, timeout=60) as resp:
data = json.loads(resp.read().decode("utf-8"))
print("hit count:", data["hitCount"])
for r in data["resultList"]["result"][:5]:
print(r.get("pubYear"), r.get("pmid"), r.get("doi"), r.get("title")[:80])
同一关键词在 2026 年 10 月查到 47 条命中,与门户的 158 条不在一个量级:门户收录所有用 BIFAP 数据做的研究,含会议摘要与学位论文;Europe PMC 只收被索引的期刊文献,且要求摘要里出现 BIFAP 字样。
5.5 拿到数据文件之后:本地规范化
结构化数据文件到手是 TXT 或 Excel,各表用患者假名连接。下面这段是一个最小可用的读入与拼装,用来把处方表与患者表连起来,算每个患者的首次处方年份。
#-- 读入 BIFAP 交付的处方表与患者表,按假名连接,统计首次处方年份
import pandas as pd
patients = pd.read_csv("PATIENT.txt", sep="\t", encoding="latin-1")
prescriptions = pd.read_csv("PRESCRIPTIONS.txt", sep="\t", encoding="latin-1")
for df in (patients, prescriptions):
df.columns = [c.strip().upper() for c in df.columns]
prescriptions["PRESCRIPTION_DATE"] = pd.to_datetime(
prescriptions["PRESCRIPTION_DATE"], errors="coerce"
)
first_rx = (
prescriptions.dropna(subset=["PRESCRIPTION_DATE"])
.groupby("PATIENT_ID")["PRESCRIPTION_DATE"]
.min()
.dt.year
.rename("FIRST_RX_YEAR")
.reset_index()
)
merged = patients.merge(first_rx, on="PATIENT_ID", how="left")
print(merged["FIRST_RX_YEAR"].value_counts().sort_index().tail(10))
注意三处:编码用 latin-1,因为西班牙语文件常见这种编码,用 utf-8 会报错;列名做去空格大写,因为各自治区的导出习惯不同;日期解析用 coerce,把脏日期变成 NaT 而不是抛异常。
5.6 只读这条通道的边界
第一,§5.2 与 §5.3 的端点只给公开内容——治理文档、文献清单、新闻与项目清单,不含任何患者数据。用它们构造取数请求,只会得到 404 或 405。
第二,研究数据交付后落到本地,完全由研究者自己管,边界从技术变成合同:只能用于批准方案,不能复制给团队外的人,不能做重识别,义务在研究结束后继续有效。
第三,非结构化微数据从头到尾没有「拿到本地」这一步。GIE 的电子病历查看器在屏幕上显示结果,不生成可导出的文本文件。这一点在治理文档里被写了两遍(第 3.4.2 节与第 3.4.4.3 节),不是笔误,是重点。
5.7 用公开接口做一次文献盘点
门户的文献接口不只是给页面用的,也可以直接拿来做一个研究领域的盘点。下面这段把某个年份的文献拉下来,按研究类型分组,看看这一年 BIFAP 上做的研究偏向哪一类。
#-- 按研究类型统计某一年 BIFAP 相关文献的分布(数据来自官方公开接口)
import json
import collections
import urllib.request
GATEWAY = "https://bifapgtw.aemps.es/Gateway/WebBIFAP"
HEADERS = {"Content-Type": "application/json", "User-Agent": "Mozilla/5.0"}
def post(path, payload):
req = urllib.request.Request(
f"{GATEWAY}/{path}",
data=json.dumps(payload).encode("utf-8"),
headers=HEADERS,
method="POST",
)
with urllib.request.urlopen(req, timeout=60) as resp:
return json.loads(resp.read().decode("utf-8"))
rows = post("PublictionsByYear", {"year": 2024})
counter = collections.Counter(
(r.get("moreInfo") or {}).get("studyType") or "未标注" for r in rows
)
for name, n in counter.most_common():
print(f"{n:3d} {name}")
print("total:", len(rows))
这段跑出来的分组,官方只用三种取值:药物—事件—诊断的关联研究、药品利用研究、疾病频率的描述性研究。这三种正好对应 §4.5 里说的三块问题类型。用它能快速判断一年的研究是不是偏向某一块,比逐条读标题快得多。
5.8 一行数据到手之后的检查清单
数据文件到手的第一件事不是建模,是核对交付内容与方案是否对得上。
| 检查项 | 为什么查 | 查不到怎么办 |
|---|---|---|
| 文件数是否等于方案里申请的表 | 少一张表往往意味着某类变量被判定不可取 | 立刻联系 BIFAP 技术人员,不要自行推断 |
| 患者数是否等于批准的队列规模 | 队列定义偏差会直接改变结论 | 核对人群筛选逻辑,必要时报方案修订 |
| 出生日期是否只到年份 | 这是强制降级,不是文件损坏 | 用年份构造年龄变量,不要索要完整日期 |
| 死亡日期是否只到年份 | 同上 | 随访终点改用年龄或年份近似 |
| 自治区字段是否存在 | 默认不提供 | 若研究必须,需方案里写明并获批 |
| 药品码是否都有 ATC | 归一可能对新型药品失灵 | 记录缺失比例,在局限性里说明 |
| 诊断编码的体系分布 | 三套编码并存,跨年份会漂移 | 用诊断分组桥接,报告转换规则 |
| 自由文本字段是否为空 | 结构化文件里本就不该有自由文本 | 空是正常的,不要报 bug |
最容易跳过的是第五行:研究者常假设自治区字段一定在,做分层分析时才发现没有,而那时已过了几个月。要做地区分层,方案阶段就要把「需要自治区层级信息」写进申请理由。
§6 与库内条目的关系
6.1 关系图谱
在千方医数集这个库里,BIFAP 的位置比较特殊:它是少数「没有任何下载项」的条目。下面的表列出与它关系最近的几类条目,以及推荐的选择顺序。
| 库内条目类别 | 代表条目 | 与 BIFAP 的关系 | 什么时候先看它 |
|---|---|---|---|
| 重症监护电子病历 | MIMIC-IV、eICU-CRD | 同为电子病历,但视角是 ICU,开放下载 | 做院内用药、器械、生命体征时 |
| 影像与报告的配对集 | MIMIC-CXR-JPG | BIFAP 不含影像原始文件 | 做影像或多模态时 |
| 急诊记录 | MIMIC-IV-ED | BIFAP 没有急诊专科记录 | 做急诊路径时 |
| 队列与登记 | 各类国家级队列 | BIFAP 是「日常诊疗副产品」,不是专门随访队列 | 需要标准化随访与问卷时 |
| 医保理赔 | 理赔类条目 | BIFAP 有配药但有临床诊断,理赔缺临床细节 | 只需要费用与用药时 |
| 公共卫生统计 | 疾病监测类条目 | BIFAP 是研究用库,不是监测系统 | 做疾病负担时 |
这张表的用法是排除法:先问「我的问题在哪一层发生」,再问「那一层有没有开放替代品」,如果两层都指向院内或开放数据,就不要碰 BIFAP 的审批流程。
6.2 检索路径
在本站找与 BIFAP 相关的条目,可以顺着三条线索走。
第一条是「电子健康记录」大类下的「真实世界数据」标签,BIFAP、理赔数据、登记数据都挂在下面,差别在数据来源与访问成本。第二条是按「药物安全」找,这个标签下最典型的代表就是 BIFAP,因为它的存在理由就是药品安全。
§7 质量评估与局限性
7.0 阅读本节前的一个前置校正
在看下面的评分之前,要先纠正一个可能已经形成的误判:把 BIFAP 的质量问题理解成「数据脏」。
BIFAP 的数据质量在同类初级保健库里不算差:入库有八条剔除标准,药品做了字典归一,诊断做了术语结构化,多个病种做过阳性预测值验证。它的真实短板不在数据本身,在「数据被发现的方式」。这里的评分因此不能按统计质量来读,要按研究者能多有效地用它来读——方案写得细就能做出好研究,写得粗就反复返工,而返工的单位是周与月。
7.1 五维评分
评分采用 DAIMS 框架的五个维度(规模 Data、可获取性 Access、互操作性 Interoperability、标注与派生质量 MAI、可持续性 Sustainability),每条给分并写明理由。这里的评分对象是「作为研究工具的整体可用性」,不是数据本身的准确度。
| 维度 | 分数 | 依据 |
|---|---|---|
| 规模(Data) | 4.5 | 文献称约一千二百万患者,纵向二十年以上,足以支撑罕见结局的巢式病例对照 |
| 可获取性(Access) | 1.5 | 无下载、无公开 API;须西班牙境内公共机构身份;须方案审批与伦理审批 |
| 互操作性(Interoperability) | 3.0 | 交付 TXT/Excel,列名与分隔符随自治区而异;诊断三套编码并存,需自行映射 |
| 标注与派生质量(MAI) | 4.0 | 药品字典与 ICPC-BIFAP 字典由 AEMPS 维护;诊断分组减少对自由文本依赖;分病种验证已有发表 |
| 可持续性(Sustainability) | 4.5 | 由国家药品监管机构资助与管理,已有二十余年连续更新记录,治理文档明确年度复审 |
均分约 3.5。这个分数对 BIFAP 来说很典型:规模与可持续性接近满分,可获取性被制度性压低。压低它的不是技术欠账,是刻意的设计选择。
7.2 已知的、可枚举的偏差
| 偏差 | 产生机制 | 对结论的影响 | 缓解办法 |
|---|---|---|---|
| 自治区选择偏差 | 只有签了合作协议的自治区进库,且逐年变化 | 地区间患病率、处方习惯不可直接比较 | 分析时按自治区分层,不做全国外推 |
| 医生名册选择偏差 | 2020 年起部分自治区只抽主动合作的医生名册 | 合作医生所在诊所的人群可能不随机 | 方案里报告名册构成,做敏感性分析 |
| 适应证混杂 | 开药与诊断同时记录,重症患者用药更多 | 药物效应被适应证反向拉低 | 用新用药者设计、活性对照、倾向评分 |
| 关联病程的勾选偏差 | 医生勾选习惯不一,同一病不同医生用不同编码 | 以关联病程定义适应证时误差大 | 用多套定义做敏感性分析 |
| 结局漏报 | 初级保健看不到院外事件与部分住院 | 结局发生率被低估 | 与住院出院诊断链接,报告链接覆盖率 |
| 自由文本混淆损失 | 敏感字符串被随机替换为其他记录的词或 **** | 人工复核时细节缺失 | 只用混淆后文本做定性判断,不做逐字引用 |
| 编码体系混杂 | ICPC-2、ICD-9-MC、ICD-10 并存,不同时期不同 | 跨年份的长队列会有定义漂移 | 用 BIFAP 诊断分组做桥接,报告转换规则 |
| 退出与删除 | 因转诊或行政原因被删除的病历 | 随访被截断,可能非随机 | 报告删库原因分布,做截断敏感性分析 |
7.3 外部验证矩阵
BIFAP 的可信度很大一部分来自「能不能跟外部数据对上」。下面这张表列出已被公开文献覆盖的验证方向。
| 验证对象 | 对照标准 | 已报告的结果 | 来源层级 |
|---|---|---|---|
| 消化系统肿瘤病例识别 | 人工复核 816 份病历 | 阳性预测值 87.6% 至 96.2% | 论文摘要 |
| 消化系统肿瘤发病率 | 国家癌症登记(REDECAN) | 年龄性别标化发病率与登记数据相当 | 论文摘要 |
| 糖尿病与高血压诊断 | 计算机化病历的人工验证 | 已有验证研究发表(2011) | 论文题录 |
| 疫苗不良事件背景发生率 | 欧洲十库协作 | BIFAP 作为其中一库参与 | 论文题录 |
| 主要出血风险 | 欧洲多库汇总分析 | BIFAP 参与汇总 | 论文题录 |
| 心肌炎与心包炎 | 人群队列描述 | BIFAP 参与 | 论文题录 |
| 用药流行率 | 与欧洲其他数据源比较 | 已发表跨国比较 | 论文题录 |
真正能引用的是前两行:有明确数字、有对照标准。其余几行只证明它被欧洲协作网络接受,不构成对具体指标的验证。
7.4 它为何能持续:因为它服务的是监管机构自己的工作流程
很多学术数据库的生存依赖项目经费与论文产出,一旦主持人退休或经费断档就停更。BIFAP 不走这条路。它的经费来自 AEMPS,它的第一用户是 AEMPS 的药物警戒团队,它的数据被用来支撑监管决策——药品安全信号的评估、风险管理措施的效果评估、疫苗上市后的监测。这些都是监管机构的法定职责,不会因为某篇论文没发出来而消失。
治理文档里有一句话能说明这种绑定有多深:研究者承诺,当研究结果涉及改变某个药品的获益风险比时,要在向期刊或西班牙临床研究注册库公开之前,先把结果报给 AEMPS。这个条款让 BIFAP 的研究产出直接进入监管回路,而不是停在学术圈内部。
§8 生态位与历史
8.1 历史沿革:从三百名医生到一千二百万患者
| 时间 | 事件 | 依据 |
|---|---|---|
| 2000-01 | 试点阶段开始,计划到 2003 年底 | 2002 年项目论文摘要 |
| 2002 | 项目论文在《Atención Primaria》发表,描述设计与试点方案 | 论文题录 |
| 2003 | 试点期结束,300–500 名医生参与 | 2002 年项目论文摘要 |
| 2015 | 西班牙公共领域任何研究者获准在非商业目的下使用 | 治理文档引言 |
| 2017-06 | 第一版数据访问治理文档发布 | 治理文档引言 |
| 2019-12 | 顾问委员会批准开展数据保护影响评估 | 治理文档附录 |
| 2019 | 顾问委员会批准改善计划,规划接入死亡登记、专科病历等 | 治理文档第 3.1.2 节 |
| 2020-01 至 2020-11 | 用 ASSI-GDPR 工具完成数据保护影响评估 | 治理文档附录 |
| 2020 | 资源介绍论文在《Pharmacoepidemiology and Drug Safety》发表 | 论文题录 |
| 2021-02 | 治理文档第二版发布 | 治理文档封面 |
| 2021 | 门户迁至独立域名 www.bifap.org | 入口探活 |
8.2 在欧洲多库网络里的位置
欧洲的初级保健数据库有一个事实上的协作网络,BIFAP 是西班牙那一格。多库项目的做法通常是:一个跨国研究问题,几个国家各有自己的初级保健库,大家用统一的核心数据模型映射过去,分别跑分析再汇总。
这种协作让 BIFAP 不必长到 CPRD 那么大就能参与大样本问题,也让它被同类库对照着把文档写细。欧洲初级保健库多采取「不开放、要审批、分级交付」,美国重症库多采取「开放、要培训、全量下载」,差别不在技术,在数据主权与隐私法传统。
8.3 生态位:它填补的是「监管需要分母」这个洞
把 BIFAP 放回药品监管的链条里看:上市前试验回答「受控条件下有没有效、安不安全」,上市后要回答「真实人群中、真实用药方式下,获益风险比有没有变」。后者需要一个有分母的人群、一条可追溯的用药史、一个能连到结局的渠道,BIFAP 提供这三样。
这也是它为什么对「代表性」没有执念:监管决策需要的是「这类人群里发生了什么」,不是「全西班牙每个人平均发生了什么」。
8.4 与相邻生态位的分工
| 生态位 | 典型资源 | 与 BIFAP 的分工 |
|---|---|---|
| 院内重症监护 | MIMIC 系列 | 院内与 ICU 场景归它们,BIFAP 只管院外 |
| 初级保健跨国比较 | CPRD、IPCI、Datanet | 同一研究问题按国家分别申请,BIFAP 出西班牙部分 |
| 疫苗安全主动监测 | 各国疫苗监测网络 | BIFAP 参与欧洲多库协作,提供背景发生率 |
| 疾病登记 | 癌症登记、罕见病登记 | 登记做确诊与随访,BIFAP 做用药暴露 |
| 医保理赔 | 各国理赔库 | 理赔有费用与配药,BIFAP 有临床诊断 |
| 开放研究数据 | 各类开放队列 | 开放数据做方法预研,BIFAP 做最终确证 |
§9 使用指引
9.1 三种角色的路径
不同身份进入 BIFAP 的方式差别很大,分开写。
角色一:AEMPS 内部研究员。 最短路径:方案仍过科学委员会,但没有数据交付环节,取数、分析、发表都在内部完成。
角色二:西班牙高校或医院的公共研究者。 主路径:注册、培训、交方案、等意见、签承诺、拿文件、本地分析。须同时拿到西班牙认可的伦理委员会意见才能开始,任何方案变更(含新增经费与作者)都要重新报批。
角色三:合作医生。 他们本身在数据生产端,可查看自己名册的聚合数据与 Express 用药模式,但做研究仍要走方案审批,医生身份不豁免。
角色四:境外研究者。 注册条件要求工作在西班牙境内,境外机构不在范围内。现实路径是加入已有账户的西班牙团队,作为成员登记并签署同样的利益冲突声明与承诺。
9.2 一条最短的可用流程
#-- 第 1 步:确认你能注册(治理文档 2.1 三条条件,缺一不可)
#-- a. 持健康科学学位
#-- b. 在公共医疗、高校或科研机构任职(无业者须为公立大学研究生)
#-- c. 工作在西班牙境内
#-- 第 2 步:确认你想问的问题可以用编码回答(先用 Express 摸底)
#-- Express 给出最常见的 11 个 ICPC-2 与 11 个 ICD-9 关联诊断
#-- 注意:Express 的结果不得用于发表,需 AEMPS 书面同意
#-- 第 3 步:写方案,一份完整的方案至少含五块
#-- a. 研究设计与需要从 BIFAP 提取的信息
#-- b. 全部研究者名单,标明谁是项目负责人
#-- c. 团队研究经历与负责人简历
#-- d. 经费来源(只接受非营利研究)
#-- e. 全体成员的利益冲突声明(重点:过去两年是否接受过所研究药品生产商的资助)
#-- 第 4 步:在平台提交,等科学委员会意见
#-- 评审五条:科学合理性、公共卫生意义、与 BIFAP 目标的契合度、团队能力与利益冲突、技术可行性
#-- 第 5 步:拿到肯定意见后,同步申请伦理委员会意见
#-- 治理文档 2.4 第 6 条:没有伦理委员会意见不得开始研究
#-- 第 6 步:签承诺书,等数据文件
#-- 交付方式:手递、加密邮件、或安全 SFTP
#-- 结构化文件里出生死亡日期只给年份或年龄,自治区字段默认不给
#-- 第 7 步:本地分析,发表时加三句固定声明(治理文档 3.5)
#-- 1) 本研究基于 BIFAP 数据。BIFAP 是由 AEMPS 资助的独立研究公共项目。
#-- 2) 本研究的结果、讨论与结论仅代表作者观点,不代表 AEMPS 立场。
#-- 3) 致谢:感谢初级保健医生的工作与参与自治区的支持。
这条流程里最容易被低估的是第 3 步。方案写得粗,会在第 4 步被打回,或到第 6 步才发现取不到想要的变量。治理文档第 3.4.1 节要求补三样:研究人群的操作性定义、数据的时间区间、所需变量的描述——最好一开始就写全。
9.3 引用方式
引用 BIFAP 要分两种场合。
引用数据库本身,用资源介绍论文:Maciá-Martínez MA, Gil M, Huerta C, Martín-Merino E, Álvarez A, Bryant V, Montero D, BIFAP Team. Base de Datos para la Investigación Farmacoepidemiológica en Atención Primaria (BIFAP): A data resource for pharmacoepidemiology in Spain. Pharmacoepidemiology and Drug Safety, 2020. DOI: 10.1002/pds.5006。
在论文里声明数据来源,治理文档第 3.5 节规定了必须包含的句子,英文原文如下:
This study is based on data from the Pharmacoepidemiological Research in Primary
Care Database (BIFAP). BIFAP is a public programme for independent research
funded by the Spanish Agency of Medicines and Medical Devices (AEMPS).
紧随其后还有一句免责声明,说明研究结论仅代表作者观点。致谢里要提到初级保健医生(全科与儿科)的工作,以及参与自治区卫生服务的支持。这三段是承诺书的一部分,不是可选的礼节。
§10 AI 使用声明
| 项目 | 说明 |
|---|---|
| 本文是否由 AI 辅助撰写 | 是,事实核查与成稿均有 AI 参与,最终由编辑部复核 |
| AI 参与了哪些环节 | 官方文档解析、文献摘要提取、字段表结构整理、初稿撰写与自检 |
| AI 没有参与哪些环节 | 未做任何数据下载、未访问任何患者级数据、未生成任何统计结果 |
| 事实来源的可核验性 | 关键数字均列于附录 A,附录 B 标注来源层级 |
| 数字的处理方式 | 只写规模、结构、边界三类,不写分布统计 |
| 已知的不确定性 | 患者规模来自论文摘要;自治区数量未能确认 |
| 本文的使用方式 | 选型与流程的入口,不替代治理文档原文 |
| 更正机制 | 如发现与官方文档不符,以 AEMPS 发布的治理文档与门户信息为准 |
常见误读(避坑清单)
| 说法 | 实际 | 证据 |
|---|---|---|
| BIFAP 可以下载全量数据 | 没有任何下载入口,也没有患者数据接口 | 治理文档第 3.4.3 节;门户为单页应用,公开端点只返回文献与文档 |
| 数据一步都不出 AEMPS | 结构化患者数据文件可经手递、加密邮件或 SFTP 交给外部团队 | 治理文档第 3.4.4.3 节 |
| 只要批了就能随便分析 | 方案外的分析要重新报科学委员会 | 治理文档第 2.4 节第 1 条 |
| 它覆盖全西班牙 | 只覆盖签了合作协议的自治区,且逐年变化 | 治理文档第 1 节、第 3.1.1 节 |
| 它是开放获取数据集 | 访问受限,无开放许可 | 治理文档第 2 节注册条件 |
| 自由文本是一份可以用来训模型的语料 | 只在受控设备上逐屏查看,不生成可导出文件 | 治理文档第 3.4.2 节、第 3.4.4.3 节 |
| 它是住院数据库 | 初级保健视角,住院只有出院诊断 | 治理文档第 3.1.2 节 |
| BIFAP Express 的结果可以直接发论文 | 结果不得用于发表,对外使用需 AEMPS 授权 | 治理文档第 3.3.1 节、第 3.3.3 节 |
| 境外团队可以直接申请 | 注册条件要求工作在西班牙境内 | 治理文档第 2.1 节 |
| 数据取出来就是干净的 | 列名、分隔符、编码随自治区而异,需本地规范化 | 治理文档第 3.4.2 节(TXT/Excel) |
FAQ
Q1:BIFAP 能下载全量数据吗?
不能。没有下载入口,也没有公开的患者数据 API。研究者要在 BIFAP 服务平台注册并通过培训,提交研究方案,由科学委员会出具意见;批准后由 AEMPS 团队按方案生成研究专用数据文件,再经手递、加密邮件或 SFTP 交付。差异在「方案先行」,不在「给不给」。
Q2:中国的研究者能申请吗?
按治理文档第 2.1 节的注册条件,申请人须持健康科学学位、任职于公共医疗卫生、高校或科研机构,并且这些工作必须在西班牙境内完成。境外机构研究者不在注册范围内,通常只能通过加入西班牙团队或参与 AEMPS 的联合项目间接使用。
Q3:数据真的完全不出 AEMPS 吗?
不是。治理文档把研究数据分三档:聚合报告与结构化患者数据文件都可以出域,方式限定为手递、加密邮件或安全 SFTP;只有含自由文本的非结构化微数据,限定在 AEMPS 本部或参与自治区卫生行政部门总部的设备上查看,且不可导出。
Q4:BIFAP 收录了多少患者?
AEMPS 团队 2020 年在《Pharmacoepidemiology and Drug Safety》发表的资源介绍称,收录 2001 年起约一千二百万患者,按年更新。这个数字来自论文摘要,不是官方门户的实时统计。门户本身是单页应用,没有直接给出规模数字。
Q5:自己做变量定义会不会被拒?
方案里可以自定义,但产出分析必须落在批准的方案范围内。治理文档明确要求任何未预先写明的分析重新报批。建议的做法是在方案阶段把变量定义、敏感分析、亚组分析全部写进去,宁可多写。
Q6:BIFAP 和英国 CPRD 最大的区别是什么?
两者都是全科电子病历纵向库,都要审批。BIFAP 由药品监管机构直接持有,目的绑定监管决策,诊断编码以 ICPC-2 为主,非商业约束写在访问条件里;CPRD 覆盖人群更大,配套验证文献与工具链更成熟。选哪个取决于研究问题需要的编码体系与地理范围。
Q7:数据文件的格式是什么?
治理文档写明是 TXT 或 Excel。表与表之间通过患者假名连接,对应 BIFAP 数据模型的不同要素。列名与分隔符由 AEMPS 团队按方案生成,各自治区来源的差异会被归一,但研究者仍要自己做编码与日期解析。
Q8:能不能拿它做机器学习?
可以做基于结构化变量的预测建模,这类工作与常规统计分析一样按方案走。不能做的是需要反复访问自由文本、反复调参的端到端训练,因为自由文本不可导出、方案外分析要重新报批。§4.3 的案例讲了这个边界。
Q9:拿到数据后能保存多久?
承诺书要求保密义务在研究结束后继续有效,数据只能用于批准方案,不得复制给团队外的人,也不得为保存目的转交他人。具体保留期限以承诺书与伦理委员会意见为准。
Q10:别人能否复用我的数据文件?
可以,但要等 2 年。治理文档规定,自患者数据文件交付之日起两年内,未经项目负责人同意,AEMPS 不得把同一批数据转给其他研究者做相同科学目标的研究,这个窗口是给原研究者留的发表期。
Q11:官方入口为什么是 bifap.org 而不是 aemps.gob.es/bifap?
旧路径现已返回 404,门户迁到了独立域名。AEMPS 主站首页仍保留指向 bifap.org 的链接。治理文档正文里的 bifap.aemps.es 也是历史地址。
Q12:怎么确认一个数字是最新的?
按来源层级判断:官方门户与治理文档为一层,论文摘要为二层,二手引用为三层。本文所有数字在附录 A 里标了层级,附录 B 解释了为什么要分层。
术语表
| 术语 | 解释 |
|---|---|
| BIFAP | 西班牙公共领域药物流行病学研究数据库的缩写 |
| AEMPS | 西班牙药品与医疗器械管理局,BIFAP 的资助方与管理者 |
| HCE-AP | 初级保健电子病历,BIFAP 的原始来源 |
| 自治区(CCAA) | 西班牙一级行政区,BIFAP 由各自治区自愿签约参与 |
| ICPC-2 | 国际初级保健分类第二版,BIFAP 诊断编码的主体系之一 |
| ICD-9-MC | 国际疾病分类第九版临床修订本,BIFAP 并存编码体系 |
| ICD-10 | 国际疾病分类第十版,BIFAP 并存编码体系 |
| 假名化 | 用随机编号替代身份标识,保留跨表连接与纵向追踪 |
| 二次假名化 | AEMPS 在收到自治区假名后再分离一次,断开原始对应 |
| 混淆 | 对自由文本中的敏感字符串做随机替换或打码,留结构不留原文 |
| CIPA | 自治区患者识别编码,抽取前用于连接多来源,随后删除 |
| GIE | BIFAP 综合研究管理工具集 |
| 数据模型 | 各自治区异构数据映射到的统一结构 |
| 诊断分组 | 由 ICPC-BIFAP 与 ICD 编码定义的疾病簇 |
| 科学委员会 | 评审研究方案的常设机构,AEMPS 自己的项目也要过审 |
| 顾问委员会 | 审议治理与发展的议事机构 |
| 数据保护影响评估(DPIA) | 按 GDPR 做的处理活动风险评估,2020 年完成 |
| GDPR | 欧盟通用数据保护条例 |
| LOPDDD | 西班牙个人数据保护与数字权利保障组织法 |
| RAE-CMBD | 西班牙住院出院最低数据集 |
| BIFAP Express | 预计算用药查询应用,结果不得用于发表 |
| 非结构化微数据 | 含医生自由文本的个体级数据,只在受控设备上查看 |
| 结构化患者数据文件 | 只含结构化假名化变量的个体级数据 |
| 独占期 | 数据文件交付后两年内原研究者享有发表优先权 |
| 协作模型 | 只抽取主动合作医生名册患者的抽取方式 |
| 阳性预测值(PPV) | 算法识别的病例中真病例的比例 |
附录 A:核心数字核对表
| 项 | 值 | 来源 | 来源层级 |
|---|---|---|---|
| 患者规模 | 2001 年起约一千二百万 | 2020 年资源介绍论文摘要 | 论文摘要 |
| 时间起点(文献口径) | 2001 年 | 同上 | 论文摘要 |
| 时间起点(治理文档口径) | 2002 年 | 治理文档第 4.3.10.1 节 | 官方文档 |
| 更新频率 | 至少每年一次研究库更新;抽取至少每半年一次 | 治理文档第 3.1.1 节、流程图表 | 官方文档 |
| 试点参与医生数 | 300 至 500 名 | 2002 年项目论文摘要 | 论文摘要 |
| 试点时间 | 2000 年 1 月至 2003 年底 | 同上 | 论文摘要 |
| 公共研究开放年份 | 2015 年 | 治理文档第 1 节 | 官方文档 |
| 首版治理文档 | 2017 年 6 月 | 治理文档第 1 节 | 官方文档 |
| 治理文档当前版本 | 第二版,2021 年 2 月 | 治理文档封面 | 官方文档 |
| 治理文档页数 | 41 页 | PDF 页脚 | 官方文档 |
| 数据保护影响评估周期 | 2020 年 1 月至 11 月 | 治理文档附录 | 官方文档 |
| 数据分档 | 三档(聚合、结构化个体、非结构化微数据) | 治理文档第 3.4.2 节 | 官方文档 |
| 代谢期(独占期) | 2 年 | 治理文档第 3.5 节 | 官方文档 |
| 剔除标准条数 | 8 条 | 治理文档第 3.2.2.2 节 | 官方文档 |
| Express 关联诊断数 | 11 个 ICPC-2 + 11 个 ICD-9 | 治理文档第 3.3.2 节 | 官方文档 |
| 官方门户文献条数 | 158 条 | 门户公开接口 Publications 端点 | 官方接口 |
| 消化癌验证抽样量 | 816 份病历 | 2024 年验证论文摘要 | 论文摘要 |
| 结直肠癌阳性预测值 | 95.2% | 同上 | 论文摘要 |
| 胃癌阳性预测值 | 92.5% | 同上 | 论文摘要 |
| 肝胆癌阳性预测值 | 87.6% | 同上 | 论文摘要 |
| 食管癌阳性预测值 | 96.2% | 同上 | 论文摘要 |
| 胰腺癌阳性预测值 | 89.4% | 同上 | 论文摘要 |
| 参与自治区数量 | 未在官方页面确认 | 无 | 未核实 |
| 登记医生数 | 未在官方页面确认 | 无 | 未核实 |
附录 B:数字的来源分层
第一层:官方文档与官方接口。 治理文档(第二版,2021 年 2 月)是唯一把访问条件写全的公开文件,凡流程、分档、剔除标准、承诺条款一律以它为准;门户公开接口给出文献条数,可用于交叉核对。这一层可核验、可引用,但只写流程,不写规模。
第二层:论文摘要。 一千二百万患者这个数字只出现在 2020 年那篇资源介绍论文的摘要里,治理文档全文没有给出规模数字,只写「数百万」。要引用规模,只能引这一层,并注明是文献口径。验证研究的阳性预测值也属于这一层。
第三层:未核实。 参与自治区数量、登记医生数、各自治区覆盖人口占比,这三类数字在官方页面与已查到的摘要里都没有可靠来源。门户是单页应用,规模数据的展示依赖登录后的动态内容,本次未获得。这些项在正文里一律不写具体数字,只在附录 A 标「未核实」。
分层只为提醒一件事:不要把一层的数字当另一层来引。患者规模尤其如此——它是论文写作时点的表述,不是官方实时统计。
附录 C:完整参考文献
-
Maciá-Martínez MA, Gil M, Huerta C, Martín-Merino E, Álvarez A, Bryant V, Montero D, BIFAP Team. Base de Datos para la Investigación Farmacoepidemiológica en Atención Primaria (BIFAP): A data resource for pharmacoepidemiology in Spain. Pharmacoepidemiology and Drug Safety. 2020. DOI: 10.1002/pds.5006. PMID: 32337840.
-
Salvador Rosa A, Moreno Pérez JC, Sonego D, García Rodríguez LA, de Abajo Iglesias FJ. El proyecto BIFAP: base de datos para la investigación farmacoepidemiológica en atención primaria. Atención Primaria. 2002. DOI: 10.1016/S0212-6567(02)79129-4. PMID: 12525343.
-
AEMPS, División de Farmacoepidemiología y Farmacovigilancia. BIFAP Data Access Governance. Version 2. February 2021. 41 pp.
-
Fernández-Antón E, Rodríguez-Miguel A, Gil M, Castellano-López A, de Abajo FJ. Development and Validation of Case-Finding Algorithms for Digestive Cancer in the Spanish Healthcare Database BIFAP. Journal of Clinical Medicine. 2024. DOI: 10.3390/jcm13020361. PMID: 38256495.
-
Fernández-Antón E, Nyssen OP, Alonso-Martínez G, Parra P, Gil M, Gisbert JP, et al. Helicobacter pylori Eradication Primary Care First-Line Prescriptions: Data From 200,000 Patients in a Real-World Cohort. Helicobacter. 2026. DOI: 10.1111/hel.70122. PMID: 41923276.
-
Rodríguez-Martín S, Fernández-Antón E, Alonso-Martínez G, Gil M, Rodríguez-Miguel A, et al. Long-term use of drugs used for knee osteoarthritis and their association with primary arthroplasty: a nested case-control study. 2026. DOI: 10.1186/s42836-026-00421-7. PMID: 42563199.
-
Castillo-Cano B, Riefolo F, Villalobos F, Martín-Pérez M, Messina D, Elbers R, et al. Impact and Effectiveness of COVID-19 mRNA Vaccination Against COVID-19 Hospitalisation in Paediatrics: A Cohort Study Using Two Linked Data Sources in Spain. Pharmacoepidemiology and Drug Safety. 2025. DOI: 10.1002/pds.70239. PMID: 41125425.
-
BIFAP 官方门户. https://www.bifap.org/ (2026-10-27 访问)
-
AEMPS 主站首页(含 BIFAP 链接). https://www.aemps.gob.es/ (2026-10-27 访问)
-
Europe PMC REST 检索接口. https://www.ebi.ac.uk/[europepmc](https://www.qianfanghub.com/ai-ready-dataset/europepmc/1353)/webservices/rest/search (2026-10-27 访问)
附录 D:任务代码索引
本文所有代码块按用途归类,方便复用。
| 编号 | 位置 | 语言 | 用途 |
|---|---|---|---|
| C1 | §2.3 | text | 处方记录字段结构示意 |
| C2 | §5.2 | bash | 官方入口探活(新旧路径对照) |
| C3 | §5.3 | python | 取治理文档 PDF 与文献清单 |
| C4 | §5.4 | python | Europe PMC 交叉核对文献 |
| C5 | §5.5 | python | 本地读入处方表与患者表并连接 |
| C6 | §9.2 | bash | 最短可用流程清单 |
| C7 | §9.3 | text | 论文中必须包含的声明原文 |
可执行代码块共五个(C2 至 C6),均不依赖私有凭证,可直接运行。C3 依赖 BIFAP 公开网关,若网关调整路径,可参照 §5.2 的探活方式先确认门户是否仍在使用同一域名。
附录 E:如果只记五件事
第一,BIFAP 是西班牙药品监管机构(AEMPS)自己的初级保健电子病历库,存在理由是给药品监管提供有分母的真实世界证据。
第二,它不开放下载,也没有患者数据接口。研究者要先注册、培训、交方案、过科学委员会与伦理委员会、签承诺书,才可能拿到数据。
第三,数据分三档交付:聚合报告与结构化个体数据可以出域(手递、加密邮件、SFTP),含自由文本的非结构化微数据只能在 AEMPS 或自治区卫生部门设备上查看,不可导出。所以「数据一步不出门」这个说法不准确。
第四,它的代价是研究自由度:方案外的分析要重新报批,自由文本拿不到手,样本量由方案决定而不是由库容量决定。这决定了它不适合探索式分析与端到端模型训练。
第五,它的价值在中国语境下最有用的一点,是那份 41 页治理文档——把它当「数据不出域」平台的设计蓝本,比看任何架构图都具体。
编辑说明
本文的核心事实来自两端:AEMPS 2021 年 2 月发布的第二版数据访问治理文档(41 页,西语与英语各一版,经官方公开网关取得并转文本核对),以及 Maciá-Martínez 等人 2020 年在《Pharmacoepidemiology and Drug Safety》发表的资源介绍论文摘要(Europe PMC,PMID 32337840)。规模数字只取自后者,并在正文与附录 A 标注为文献层级。
需要说明一处与最初设想不符的地方:撰写前收到的题目导语把 BIFAP 描述为「数据一步都不离开 AEMPS 的服务器,研究者进去算,只带结果出来」。治理文档第 3.4.2 节与第 3.4.4.3 节的原文显示,只有含自由文本的非结构化微数据受此限制,结构化患者数据文件与聚合报告都可以定向交付给外部研究团队。本文按文档事实写作,并在 §2.4、§5.6、常见误读与附录 E 中多处点明这一差别。原设想里「受控环境」这个判断本身成立,只是受控的对象是自由文本与访问行为,不是全部数据。
未覆盖:参与自治区的最新名单与数量、各自治区覆盖人口占比、登记医生总数、AEMPS 是否收费。前三项需登录服务平台才能看到,后一项治理文档未写明,本文不推断。核验时间 2026 年 10 月 27 日;方式为直取官方网关公开文档与接口、Europe PMC 摘要、门户状态码探活;所有数字只做转述与交叉核对。
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- openfda — 共享标签:电子健康记录 / 公共卫生与流行病学 / 真实世界数据 / 药物安全
- snds — 共享标签:电子健康记录 / 公共卫生与流行病学 / 真实世界数据 / 药物安全
- maternal-ultrasound-nutrition — 共享标签:电子健康记录 / 公共卫生与流行病学 / 真实世界数据
- marketscan — 共享标签:电子健康记录 / 公共卫生与流行病学 / 真实世界数据 / 药物安全
- premier-pinc-ai — 共享标签:电子健康记录 / 公共卫生与流行病学 / 真实世界数据 / 药物安全
- trinetx — 共享标签:电子健康记录 / 真实世界数据 / 药物安全
- fda-sentinel — 共享标签:公共卫生与流行病学 / 真实世界数据 / 药物安全
- openprescribing — 共享标签:公共卫生与流行病学 / 真实世界数据 / 药物安全
- abdm — 共享标签:电子健康记录 / 公共卫生与流行病学 / 真实世界数据
- twosides — 共享标签:电子健康记录 / 真实世界数据 / 药物安全
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

