信息速览

Danish NPR — 丹麦国家患者登记 AI-Ready Wikipedia
INFOBOX
| 数据集名称 | Danish National Patient Register(Landspatientregisteret, LPR) |
| 英文全称 | Danish National Patient Register / Danish National Patient Registry |
| 别名/简称 | Danish NPR、DNPR、LPR、LPR2(至 2018)、LPR3(2019 起现行) |
| 疾病分类 | 全疾病谱(ICD-11 各章均覆盖:1G4Z 脓毒症 / BA41 急性心肌梗死 / CB4Z 心力衰竭 / CA4Z 肺炎 / 5A11 2 型糖尿病 / 6A20 精神分裂症等) |
| SNOMED CT | 22298006 Myocardial infarction / 84114007 Heart failure / 91302008 Sepsis / 44054006 Diabetes mellitus type 2 / 38341003 Hypertensive disorder(丹麦原生编码为 SKS,详见 §2.2) |
| 数据模态 | 结构化 EHR(行政数据、诊断编码、手术操作、检查与治疗),无自由文本、无影像 |
| AI 任务类型 | 疾病表型识别、结局预测队列构建、发病率与住院率趋势监测、生存分析、药物流行病学、多登记链接研究、自然实验因果推断 |
| 样本总数 | 8,085,603 名累计登记者 / 7,268,857 次住院 / 5,953,405 次门诊 / 5,097,300 次急诊(1977-2012);2022 年单年 1,300 万次接触 |
| 数据格式 | Sundhedsdatastyrelsen 研究交付(CSV/平面文件);官方 OMOP CDM 5.4 映射 |
| 许可证 | 受控访问(丹麦个人数据处理法 + GDPR,逐项目研究许可) |
| 访问级别 | 申请审核(Forskerservice 申请 + 机构审批 + Danish Data Protection Agency 许可) |
| DUO 标签 | IRB, GS |
| 语言 | 丹麦语(变量值与编码元数据),官方文档含英语 |
| 首发日期 | 1977 |
| 最后更新 | 持续更新(医院月度上报;LPR3 自 2019-02 起分区域上线) |
| 发布机构 | Danish Health Data Authority(Sundhedsdatastyrelsen) |
| 官方主页 | https://sundhedsdatastyrelsen.dk |
| 下载地址 | 无公开下载;经 Sundhedsdatastyrelsen 安全研究平台(Forskermaskinen)远程访问 |
| 引用次数 | 3,552+(Scopus,Lynge 2011 方法学论文,截至 2026-09) |
| AI 就绪度评分 | ⭐⭐⭐(3/5)— 链接性与完整覆盖顶尖、有官方 OMOP 映射;扣分项:无公开下载与固定基准划分、诊断码 PPV 变异大需逐变量验证、LPR2→LPR3 断层 |
| 页面状态 | published |
§0 E-E-A-T 信任声明与免责声明
医学审核者:千方病案医学编辑部交叉审核:§2 医学背景(SKS/ICD 与 SNOMED CT 映射、登记覆盖演变、金标准验证研究)、§7 偏倚分析。
数据工程审核者:千方病案医学编辑部交叉审核:§4 DAIMS 数据字典(接触—诊断—操作三级结构)、§5 数据划分策略、§6 预处理 Pipeline 和坑点。
审核日期:2026-09-05
审核方式:交叉审核
利益冲突声明:千方病案医数集与丹麦卫生数据管理局(Sundhedsdatastyrelsen)、丹麦各大区卫生机构无任何商业利益关联。本页面不销售 Danish NPR 数据集本身,仅提供 AI 就绪指南与学术信息服务。编辑者未接受丹麦卫生数据管理局或其关联机构的任何形式资助。
医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。
技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方病案医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。
数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。Danish NPR 为受控访问数据:研究者须经 Sundhedsdatastyrelsen Research Service(Forskerservice)申请、获得所属机构与 Danish Data Protection Agency 的项目许可,且数据不得离开丹麦授权研究环境(Forskermaskinen)。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。
§1 数据集概览
§1.0 📌 30 秒速览
Danish NPR(丹麦国家患者登记,丹麦语 Landspatientregisteret,简称 LPR)是丹麦卫生数据管理局(Sundhedsdatastyrelsen)运营的全国性医院登记,1977 年建立、1978 年起覆盖丹麦全部医院——这让它成为世界上连续运行时间最长的全国性患者登记之一。截至 2012 年它已登记 8,085,603 名个人、超过 1,830 万次医院接触,覆盖丹麦约 590 万全部人口的每次住院、门诊与急诊就诊。
它为什么重要?因为在丹麦这个全民公费医疗国家,所有医院接触都会强制上报进入同一套以 CPR 个人编号为主键的系统——这意味着没有选择偏倚、没有随访丢失,研究者可以与药品登记、死因登记、出生登记等几十个国家登记做个体级精确链接,重建一整国人口从摇篮到坟墓的健康轨迹。全球公共卫生领域最重要的许多流行病学发现(环境暴露、药物安全、疾病自然史)都有它的贡献。
你能用它做什么:构建全国性无偏疾病队列、做家族与长期随访研究、监测数十年疾病发病率趋势、在真实世界全人群上训练与验证疾病预测模型。注意:它不能被"下载"——所有分析必须在丹麦的远程安全研究平台内完成。
§1.1 摘要
Danish NPR 是一个行政性质的国家登记,其数据来源为丹麦全部公立与私立医院向 Sundhedsdatastyrelsen 的强制月度电子上报。每次患者接触记录假名化 CPR 号、时间信息、接触类型(住院/门诊/急诊)、医院与科室、一个主要诊断加可选次要诊断(ICD-8 至 1994 年,其后为丹麦版 ICD-10 即 SKS)、NCSP 手术操作码及检查治疗信息。覆盖演变分四步:1977 年躯体住院、1995 年精神科住院+门诊+急诊、1999 年诊断性检查与治疗、2007 年医院改革后全医院覆盖。2019 年 2-3 月系统从 LPR2 迁移到以"接触"为原子单元的 LPR3,住院次数改为由接触链接派生。数据与丹麦其余健康与行政登记(药品、死因、出生、肿瘤、教育、收入等)通过 CPR 实现确定性 100% 链接,构成全球最大的国家级纵向健康数据生态之一。
§1.2 战略价值分析
全民覆盖维度:与英国 CPRD(覆盖部分人口)、美国 Medicare(限年龄组)、荷兰 SIVZ(匿名化不可链接)不同,Danish NPR 自 1978 年起对丹麦全部人口完整覆盖,且以可链接的假名化个人编号为键。这意味着基于它构建的任何疾病队列都是全国性、无选择偏倚的"全人群队列"——发病率、生存率、暴露-结局关联可以直接外推至全国人口,这是绝大多数 EHR 数据集无法承诺的性质。正如 Schmidt 等人在 2015 年系统综述中所言,它使研究者能够"重建整个人口的生命与健康轨迹"。
登记生态维度:NPR 的价值一半在其自身,一半在生态。丹麦拥有 20 余个国家健康登记与大量社会行政登记(全部由 CPR 链接),NPR 是其中最大的一个并"喂养"了医学出生登记(1995)、癌症登记(2004)等衍生登记。对医疗 AI 而言,这意味着可以做单靠院内数据做不到的事:用处方登记补齐门诊用药、用死因登记补齐院外死亡、用教育收入登记控制社会经济混杂。官方已发布 OMOP CDM 5.4 映射,NPR 数据可以直接进入 OHDSI 国际工具链。
方法学积淀维度:围绕 NPR 已形成教科书级的验证文献——Schmidt 等 2015 年综述系统整理了 1977-2012 年间数百个诊断与手术编码的 PPV 证据,Aarhus 大学国家登记研究中心维护着面向国际研究者的申请指南。这种"数据+验证文献+申请基础设施"三位一体的成熟度,使 NPR 成为北欧登记研究范式的事实标杆,也是多国登记对比研究中公认的参照系。
§1.3 横向对比
| 数据集 | 覆盖人口/规模 | 模态 | 时间跨度 | 核心差异化 |
|---|---|---|---|---|
| Danish NPR | 全丹麦人口(约 590 万);1977-2012 累计 808 万人 | 结构化登记(住院+门诊+急诊) | 1977 至今 | 世界连续运行最久的全国患者登记;CPR 全登记生态链接;受控远程访问 |
| Swedish NPR | 全瑞典人口(约 1,050 万) | 结构化登记(住院为主) | 1964/1987 至今 | 建立更早但 1987 年才全覆盖;门诊 2001 年起、无急诊专项登记 |
| Norwegian NPR | 全挪威人口(约 550 万) | 结构化登记 | 1997/2008 至今 | 2008 年前不含个人身份号,历史可链接性弱 |
| Finnish Care Register | 全芬兰人口(约 550 万) | 结构化登记 | 1969/1994 至今 | 1994 年重组为 HILMO;专科门诊 1998 年起 |
| eICU-CRD | 208 家美国医院,20 万+ ICU 入住 | 结构化 EHR | 2014-2015 | 多中心 ICU 专精,但无全国人口框架、随访止于出院 |
Danish NPR 的不可替代性在于三点:47 年不间断的同质登记(唯一跨越 ICD-8/ICD-10 两个时代的完整国家级序列)、CPR 驱动的全登记生态(药品/死因/出生/肿瘤/社会登记一次链接)、以及 2019 年后以"接触"为原子单元的高分辨率结构。代价是无法公开下载、需逐项目审批。
§1.4 版本演进时间轴
| 时间 | 事件 |
|---|---|
| 1968 | 丹麦 CPR 个人编号系统建立,为登记链接奠定基础 |
| 1977 | Landspatientregisteret 建立:登记全部躯体(非精神科)住院 |
| 1978 | 登记达到全国完全覆盖 |
| 1994 | 诊断编码由 ICD-8 切换为丹麦版 ICD-10(SKS) |
| 1995 | 纳入精神科住院、门诊专科与急诊接触;数据上报至精神科中央研究登记 |
| 1999 | 纳入诊断性检查与治疗信息 |
| 2007 | 医院结构改革后覆盖丹麦全部医院(含私立专科) |
| 2012-2015 | 数据管理由 Statens Serum Institut 承接(此前为 Danish Health Authority) |
| 2019-02/03 | LPR3 上线(分区域切换):改为按"接触"登记,住院次数改为派生指标;2019 年数据不完整 |
| 2022 | LPR3 年度数据交付恢复;OMOP CDM 5.4 映射发布 |
§1.5 典型应用场景
- 全国性发病队列构建:以首次住院/门诊诊断定义心梗、卒中、脓毒症等事件队列,全人群随访,无失访——北欧登记研究的经典范式。
- 长期发病率趋势监测:47 年连续序列用于研究酒精性肝病、心梗等疾病的数十年趋势(需处理 1994/1995 编码断点,见坑点 1/2)。
- 药物安全信号验证:NPR 结局 + 药品登记暴露,构成真实世界药物警戒的全人群实验室;EMA 的真实世界数据评估框架已将丹麦登记列为标杆证据源。
- 家族与代际研究:CPR 家属链接 + NPR 诊断,用于精神疾病、心血管病的家族聚集性与遗传流行病学——丹麦是国际精神疾病家族研究的核心数据源之一。
- 医疗 AI 表型算法的"地面真值":用全国登记验证某 AI 模型识别的疾病事件是否存在医院级证据,或以 NPR 队列为训练全集构建风险预测模型。
- 卫生服务研究:等待时间、住院时长、再入院率、手术率的全国监测与区域比较(官方统计即由 NPR 衍生)。
- 教学与方法学训练:Aarhus 大学等国家中心以丹麦登记为载体的登记流行病学课程,是欧洲登记方法学人才培养的标准教材。
§2 医学背景
§2.1 核心病种 ICD-11 编码表
Danish NPR 覆盖 ICD-10 全部章节(原生编码为丹麦 SKS 分类)。下表列出登记研究中最常见的目标病种及其 ICD-11 对照:
| 病种 | ICD-10/SKS 常用码 | ICD-11 码 | ICD-11 中文名 |
|---|---|---|---|
| 脓毒症 | A41 | 1G4Z | 脓毒症 |
| 急性心肌梗死 | I21 | BA41 | 急性心肌梗死 |
| 心力衰竭 | I50 | CB4Z | 心力衰竭 |
| 肺炎 | J18 | CA4Z | 肺炎 |
| 急性肾损伤 | N17 | 8B6Z | 急性肾损伤 |
| 2 型糖尿病 | E11 | 5A11 | 2 型糖尿病 |
| 原发性高血压 | I10 | BA00 | 原发性高血压 |
| 精神分裂症 | F20 | 6A20 | 精神分裂症 |
1994 年前的诊断为 ICD-8 丹麦版编码(三位数字+可能的特殊符号),与 ICD-10 无官方一一对应表,跨 1994 年研究必须自建映射或使用验证过的算法(见坑点 1)。
§2.2 SNOMED CT 映射表
| 标签 | ICD-10/SKS | SNOMED CT | 术语 |
|---|---|---|---|
| 急性心肌梗死 | I21 | 22298006 | Myocardial infarction |
| 心力衰竭 | I50 | 84114007 | Heart failure |
| 脓毒症 | A41 | 91302008 | Sepsis |
| 2 型糖尿病 | E11 | 44054006 | Diabetes mellitus type 2 |
| 高血压 | I10 | 38341003 | Hypertensive disorder |
| 肺炎 | J18 | 233604007 | Pneumonia |
| 精神分裂症 | F20 | 58214004 | Schizophrenia |
| 卒中 | I63-I64 | 230690007 | Cerebrovascular accident |
| 髋部骨折 | S72.0-S72.1 | 70080006 | Fracture of neck of femur |
丹麦原生分类为 SKS(Sundhedsvesenets klassifikationssystem),包含 ICD-10 丹麦版诊断轴与 NCSP 手术操作轴。向 SNOMED CT/OMOP 的概念映射由 OHDSI 工具链(Usagi/CatalogueExport)与官方 OMOP CDM 5.4 映射承担,跨词表映射后须抽样人工核对。注意 SKS 诊断码存在丹麦特有扩展位(如 K70.3 等四位扩展),映射前先确认码位层级。
§2.3 临床任务定义
在登记语境下,"临床任务"表现为四类研究操作:
- 表型识别(phenotyping):以诊断码组合定义疾病事件。算法要素 = 诊断码(主/次要位)+ 接触类型(住院 vs 门诊)+ 入院类型(急/择期)+ 验证窗口。PPV 随算法细节剧烈变化(<15%-100%),任务核心是"逐变量验证"而非"码表复用"。同一病种在"仅主诊断+住院"与"任意诊断位+全接触类型"两种算法下的 PPV 可以相差数十个百分点。
- 结局定义(outcome adjudication):以出院诊断作为随访终点(死亡、再入院、并发症),常与死因登记链接补全院外事件。再入院结局须先完成接触→住院聚合(坑点 7),否则同一住院的转科接触会被误计为"再入院"。
- 发病率与趋势估计:以全国人口为分母、首次登记事件为分子计算 incidence,须处理 1977 左截断、1994/1995 断点与 washout 期。登记的全民属性让分母精确可得——这是它与医院数据库最本质的区别。
- 暴露-结局因果推断:NPR 提供结局与混杂(并发症),暴露来自药品/职业/社会登记,利用丹麦全民框架做准实验设计。家庭与亲属链接(经 CPR)还支持同胞对照、阴性对照等家族设计,用于控制不可观测混杂。
§2.4 患者人群
| 维度 | 描述 |
|---|---|
| 来源人群 | 丹麦王国本土全部居民(不含格陵兰与法罗群岛) |
| 人口规模 | 5,580,516(2012 年,Schmidt 2015);约 580-590 万(2022-2025) |
| 覆盖比例 | 全部医院接触,全民公费医疗下无保险排除、无选择偏倚 |
| 时间范围 | 1977 年至今(住院);1995 年至今(门诊/急诊/精神科) |
| 年龄与性别 | 全年龄段全性别;2022 年 1,300 万次接触涉及 290 万个体 |
| 就医类型 | 躯体住院(1977-)、精神科住院(1995-)、门诊专科(1995-)、急诊(1995-)、私立医院(2007- 全面) |
§2.5 临床价值
NPR 对临床与公共卫生的价值已被 40 余年的实践验证:它支撑了丹麦医院统计与国家卫生规划,是疾病监测(发病率、手术率、住院时长、等待时间)的官方数据源,也是药品监管机构(包括 EMA 真实世界数据评估)认可的证据来源。对学术医学,其价值在于把"单个医院的回顾性队列"升级为"全国人口的前瞻性框架"——任何在医院发生的暴露与结局都能放进一个无人失访、无人漏入的全国坐标系里。对医疗 AI,它提供了检验模型外部效度的终极考卷:你的预测在全体 590 万人上是否成立。
它在国际证据体系中的位置可以用三个"唯一"概括:
- 唯一覆盖 ICD-8 时代全国序列的患者登记——1977-1994 年的完整住院序列让"前 ICD-10 时代"的疾病史研究成为可能,这是任何其他国家的登记都不具备的;
- 唯一由单一个人编号(CPR)贯穿全部健康与社会登记的国家之一——药品、死因、出生、肿瘤、教育、收入、家属关系全部可一次链接;
- 唯一以"接触"为原子单元重构了 45 年历史登记的全国系统——LPR3 迁移虽然制造了断点,但也让 2019 年后的数据获得了更高的时间分辨率。
§2.6 金标准验证体系
| 验证层次 | 方式 | 代表 | 性质 |
|---|---|---|---|
| 政府系统性验证 | Danish Health Data Authority(原 Danish Health and Medicines Authority)对人口学数据、住院数据、总体诊断的官方验证 | 行政数据(日期、医院/科室码、CPR)高度准确 | 官方 |
| 专项诊断验证 | 研究者驱动的逐病种医疗记录复核(以病历为金标准) | Schmidt 2015 综述汇总数百项验证;心梗、髋骨折等住院病种 PPV 高 | 学术同行评审 |
| 跨登记交叉验证 | NPR 与癌症登记、临床质量登记的一致性比较 | 多发性骨髓瘤:丹麦 NPR 患者仅 6% 未见于癌症登记(瑞典 16.9%) | 学术同行评审 |
| 验证文献索引 | 官方维护的验证研究文献目录(validation studies bibliography) | 由 Aarhus 团队持续更新 | 官方+学术 |
§3 数据集规格
§3.0 版本抉择矩阵
| 你的需求 | 推荐版本 | 覆盖窗口 | 理由 |
|---|---|---|---|
| 与历史文献可比的住院序列 | LPR2(研究交付) | 1977-2018 | 住院为上报原生单位,与 40 余年验证文献直接对应 |
| 2019 年后的当代数据 | LPR3 | 2019 至今 | 接触级原生记录;2019 年数据不完整需谨慎 |
| OHDSI/国际多库协作 | OMOP CDM 5.4 映射 | 视映射范围 | 官方映射,可直接入 Atlas/HADES 工具链 |
| 长期趋势研究 | LPR2 为主 + LPR3 衔接段 | 1977 至今 | 必须显式建模 2019 断点(坑点 3) |
§3.1 模态详情
Danish NPR 是纯结构化行政-临床登记,无自由文本、无影像、无波形。每次医院接触生成一条主记录,携带:
- 标识与人口学:假名化 CPR 号(交付时经 Statistics Denmark 假名化)、居住市政码;CPR 号本身含出生日期与性别位,假名化后仍保留可链接性;
- 时间信息:入院/出院日期时间、门诊/急诊接触起止时间、病程中事件时间;LPR3 起时间粒度细化到接触级;
- 接触属性:接触类型(住院/门诊/急诊)、医院码、科室码与专科、入院类型(急症/择期)、私立/公立;
- 临床轴:一个主要诊断 + 可选次要诊断(ICD-8 或 SKS/ICD-10 丹麦版)、NCSP 手术与操作码、诊断性检查(1999 起系统收录)、治疗信息(部分院内治疗)、事故与外伤信息(含外部原因码);
- 管理信息:被动等待期原因(丹麦医疗等待时间治理的核心指标)、出生相关补充信息(与医学出生登记衔接)。
每次接触的主诊断是上报必备项;次要诊断为可选。检查与治疗信息的收录深度随年代变化(1999 年为系统收录起点),跨年代使用时须核对该变量的覆盖起点。
§3.2 按子集规模表
| 子集 | 记录数(有来源口径) | 说明 |
|---|---|---|
| 累计登记个人 | 8,085,603 | 1977-2012 |
| 累计躯体+精神科住院 | 7,268,857 | 1977-2012 |
| 累计门诊专科接触 | 5,953,405 | 1995-2012 |
| 累计急诊接触 | 5,097,300 | 1995-2012 |
| 年度接触总量 | 约 13,000,000(2022 年) | 涉及约 290 万个体 |
| 年度就诊人口 | 2,986,425(2025 年) | Statistics Denmark 医院利用统计 |
§3.3 数据格式
| 属性 | 说明 |
|---|---|
| 交付形态 | Sundhedsdatastyrelsen/Statistics Denmark 远程平台内的平面文件(分隔文本/CSV)或项目数据库表 |
| 数据模型 | 无统一公开 schema:以项目定制变量清单交付;OMOP CDM 5.4 官方映射可用 |
| 标识符 | 交付数据内 CPR 已假名化为项目专用 ID;跨登记链接由 Statistics Denmark 执行 |
| 访问环境 | Forskermaskinen / Sundhedsdatastyrelsen Secure Research Platform:代码进出、数据不进出 |
§3.4 存储大小
登记以研究交付形式存在,无统一"数据集大小"。按 2022 年 1,300 万次接触/年的上报规模,单年全量接触-诊断-操作记录在 CSV 形态下通常在个位数十 GB 量级;1977 年至今全量累计交付建议预留 100 GB 以上项目空间。该数字为工程估算,实际以 Research Service 交付为准。
影响交付体积的三个因素:变量清单宽度(need-to-know 原则直接决定交付列数)、研究期长度(含 1995 年前数据时门诊急诊部分自然缺省)、以及是否要求多登记链接(链接键与背景登记由 Statistics Denmark 侧合并交付)。规划平台配额时还应为派生表(stay 聚合、表型中间表)预留 2-3 倍余量。
§3.5 标注方式
NPR 的"标注"是诊疗流程的行政副产品而非专门标注任务:诊断与操作由医院各科室在诊疗过程中编码上报,经 Sundhedsdatastyrelsen 技术校验(格式、码表有效性、逻辑一致性)后入库。没有研究者驱动的回顾性再标注,也不提供注释者一致性指标——质量评估依赖 §2.6 的验证研究体系。
按标注性质分类:诊断码与操作码属于"诊疗过程自动产生"的行政标注(非研究标注);人口学链接字段(市政、家属)属于登记系统派生标注;不存在人工研究标注队列。这意味着"标签质量"的定义与 ML 数据集完全不同——问题不是"标注者一致吗",而是"编码实践在病种/年代/机构间一致吗"。
§3.6 上报者资质与编码一致性
编码由各医院病历编码员与临床科室执行,全国统一码表(SKS/NCSP)与国家指南约束,Sundhedsdatastyrelsen 负责治理与跨区协作。官方评估认为行政数据"非常可靠",医疗数据(诊断)可靠性较低且随专科、主/次诊断位、编码层级(三位 vs 五位)变化——这解释了 PPV 的大范围波动。
编码一致性在国际对照中处于什么水平?北欧综述指出丹麦、瑞典、挪威三国登记都经过了广泛验证,多数诊断 PPV 高、但非全部;丹麦的行政上报传统与"登记参与卫生治理的优先级"(登记数据直接决定医院预算与等待时间治理)是编码完整性的结构性保障。1977 年以来的上报以医院结算与治理为激励,使得漏报的代价对医院而言极高——这是理解 NPR 完整性的关键制度背景。
§3.7 采集周期
医院按月强制电子上报;一个日历年的全年出院/门诊/急诊汇总数据要到次年秋季方能齐备。LPR3 时代为持续接触上报,年度数据交付自 2022 年恢复。动态数据标"截至 2026-09"时请以 Sundhedsdatastyrelsen 最新公告为准。
§3.8 地域覆盖
丹麦本土五个大区(首都、西兰、南丹麦、中日德兰、北日德兰)的全部公立与私立医院,含躯体与精神科。格陵兰与法罗群岛虽属丹麦王国,但不在 NPR 覆盖内。跨国不可覆盖:居民出境就医不进入登记。
§3.9 系统与上报基础设施
三代系统演进:LPR1(1977 起,纸质/早期电子)、LPR2(至 2019,住院为上报单位)、LPR3(2019-02/03 分区域上线,接触为原子单位,住院由链接派生)。2016 年首都大区曾因新上报平台切换出现短暂上报问题(后已解决)——提示系统迁移是登记的固有风险点。
§3.10 深度溯源链
患者就诊(丹麦公立/私立医院,5 大区)
└─ 科室/医院病历系统(EPR):诊断(SKS/ICD)、操作(NCSP)、检查治疗
└─ 医院月度强制电子上报(LPR3:接触级实时化)
└─ Sundhedsdatastyrelsen:技术校验 → 国家患者登记(LPR)
├─ 衍生登记:医学出生登记(1995)、癌症登记(2004)、植入物登记(2022) 等
├─ Statistics Denmark:CPR 假名化 + 跨登记链接 + 社会登记合并
│ └─ 研究者项目环境(Forskermaskinen / 远程分析)
└─ 官方统计:丹麦医院利用统计、WHO/EMA 上报
§4 数据结构
§4.0 目录树
研究交付无全国统一目录,典型项目交付形态如下(示意):
project_data/
├── lpr_contacts.csv # 接触主表:每行一次医院接触
│ ├── pseudonym_id # 假名化 CPR(项目 ID)
│ ├── contact_type # 住院 / 门诊 / 急诊
│ ├── adm_date / dis_date # 入院/出院(或接触起止)日期
│ ├── hosp_code / dept_code # 医院/科室码
│ ├── adm_mode # 急症 / 择期
│ └── residence_municipality
├── lpr_diagnoses.csv # 诊断表:每行一个诊断位
│ ├── pseudonym_id / contact_id
│ ├── diagnosis_code # ICD-8(≤1994)或 SKS/ICD-10(≥1994)
│ ├── diagnosis_position # 主诊断 / 次要诊断
│ └── code_system # icd8 / icd10-dk
├── lpr_procedures.csv # 操作表:NCSP 丹麦版
├── linkage_keys.csv # Statistics Denmark 假名链接键(跨登记)
└── variable_list.pdf # 本项目定制变量清单(申请时确定)
§4.1 DAIMS 8 列字段字典(核心字段)
| 字段名 | 数据类型 | 说明 | 示例值 | AI 用途 | 观测误差 | 信息性缺失编码 | 取值范围 |
|---|---|---|---|---|---|---|---|
| pseudonym_id | string | 假名化 CPR,项目内唯一 | 1207**-**-7891 | 个体主键、纵向链接 | 无(确定性链接) | 不缺失(全民登记属性) | 项目内唯一 |
| contact_id | int | 接触记录键 | 8,765,432 | 事件主键 | 无 | 不缺失 | 递增 |
| contact_type | category | 接触类型 | inpatient / outpatient / ED | 队列定义、医疗强度 | LPR3 口径变更(坑点 3) | 无 | 三类 |
| adm_date / dis_date | date | 入院/出院或接触起止 | 2016-03-14 | 随访时间轴、生存分析 | 门诊接触偶缺终止日期(坑点 7) | 缺失需显式处理 | 1977-01-01 至今 |
| diagnosis_code | string | ICD-8 或 SKS/ICD-10 诊断码 | I21.9 / K70.3 | 表型识别、结局定义 | PPV <15%-100%(坑点 4) | 无码=未记录该位 | 全国码表 |
| diagnosis_position | category | 主/次要诊断位 | primary | 提高 PPV 的关键要素 | 次诊断位 PPV 系统性偏低 | 无 | primary/secondary |
| procedure_code | string | NCSP 丹麦版操作码 | KJFD10? | 手术队列、治疗暴露 | 1996/1997 前 NCSP 未统一 | 无码=未记录 | NCSP-DK 码表 |
| adm_mode | category | 急症/择期 | acute | 严重度控制、敏感性分析 | 早年覆盖不全 | 缺失需显式处理 | acute/elective |
| hosp_code / dept_code | string | 医院/科室码 | 121 / 2603 | 机构分层、机构效应 | 官方验证为高度准确 | 不缺失 | 国家机构码表 |
| adm_year | int | 接触年份(派生) | 2016 | 时代分层、断点处理 | 无 | 不缺失 | 1977-至今 |
| stay_id(派生) | int | 由 ≤4 小时间隔规则聚合的住院键 | 45,221 | 住院级分析主键 | 聚合规则依赖(坑点 7) | 派生字段 | 项目内唯一 |
§4.2 标签分布
NPR 无预设标签列;"标签"由研究者用诊断码构造。参照 2022 年度接触分布:1,300 万次接触分布于 290 万个体,人均约 4.5 次接触/年——呈典型右偏长尾(多数人 0-2 次,慢病老年群体数十次)。以诊断构造二分类结局时,阳性率由疾病真实患病率决定(如年发病率千分位的心梗、百分位的髋骨折住院),极度类别不平衡是常态,训练预测模型时须显式处理。
§4.3 关键统计
- 累积个人数:8,085,603(1977-2012)——约等于两个丹麦人口,因为 1977 年后出生、移民与死亡更替。
- 接触结构(2022):单年 1,300 万次接触,其中住院占比按 LPR3 口径由接触链接派生。
- 人均利用:2025 年 2,986,425 名丹麦居民(约占人口一半)在当年使用过医院服务。
- 增长趋势:1995 年纳入门诊与急诊后,年接触量出现台阶式抬升(算法伪影+真实增长叠加,见坑点 2)。
- 密度对比:1995 年前后"登记的个人数/接触类型"不可比——1995 年前的接触全部为住院,1995 年起门诊与急诊接触逐步超过住院成为接触主体,这是全球老龄化+去住院化+覆盖扩展三力叠加的结果。
| 统计口径 | 数值 | 来源 |
|---|---|---|
| 累计登记者(1977-2012) | 8,085,603 | Schmidt 2015 |
| 累计住院(1977-2012) | 7,268,857 | Schmidt 2015 |
| 累计门诊(1995-2012) | 5,953,405 | Schmidt 2015 |
| 累计急诊(1995-2012) | 5,097,300 | Schmidt 2015 |
| 2022 年接触 | 约 13,000,000(290 万人) | Sundhedsdatastyrelsen/EMA 2023 |
| 2025 年就诊人口 | 2,986,425 | Statistics Denmark |
§4.4 数据层级
个人(假名化 CPR,1977 年起终身唯一)
└─ 医院接触(contact;LPR2 时代住院为原生单位,LPR3 起接触为原生单位)
├─ 诊断位(主诊断 1 + 次要诊断 0..n,ICD-8/SKS)
├─ 操作位(NCSP,0..n)
└─ 检查/治疗/管理属性
关键工程含义:AI 建模的最自然单位是"个人-接触-诊断位"三级;把多次接触聚合为"住院"(LPR3)或"疾病episode"(相邻接触间隔 ≤4 小时合并规则,Statistics Denmark 口径)是预处理必经步骤。
§4.5 缺失值与信息性缺失
| 缺失类型 | 位置 | 机制 | 处理建议 |
|---|---|---|---|
| 终止日期缺失 | 部分门诊接触 | 上报不完整,早年尤甚 | 状态标记而非删除;影响住院时长派生 |
| 诊断缺失 | 未上报的并发症 | 编码不完整(注册不全) | 视为 MNAR:缺码≠无病;用多登记链接补偿 |
| 生活方式变量 | 全库 | 登记不采集(吸烟/BMI/饮酒) | 结构性缺失:从其他登记/调查获取或作为局限声明 |
| 院外死亡 | 全库 | 死亡发生于院外且无既往接触 | 与死因登记链接补全 |
| 1977 前病史 | 全库 | 登记未建立 | 左截断:出生 1977 前者病史不完整(坑点 6) |
交付前对缺失模式做一次系统体检(平台内运行):
# 缺失体检:按年代段检查关键字段缺失率(数字化后直接贴入研究附录)
audit = (
contacts.assign(year_bin=pd.cut(contacts["adm_year"],
bins=[1977, 1994, 1999, 2018, 2025],
labels=["1977-1994", "1995-1999", "2000-2018", "LPR3"]))
.groupby("year_bin", observed=True)
.agg(contacts=("contact_id", "size"),
missing_dis_date=("dis_date", lambda s: s.isna().mean()),
missing_adm_mode=("adm_mode", lambda s: s.isna().mean()))
)
print(audit.map(lambda x: f"{x:.1%}" if isinstance(x, float) else x))
# 预期模式:dis_date 缺失集中在门诊、早年代更高;LPR3 段 2019 上报缺口可见
§5 数据划分与使用建议
§5.1 官方划分
无。NPR 是登记而非 ML 数据集,不存在官方 train/val/test 划分——任何队列定义、时间切分与结局构造都是研究设计的一部分,由研究者在申请的变量清单中自行确定。
这带来一个常被低估的后果:发表文献间的"同任务"结果几乎都不可比——队列定义(码表+washout+索引日)的每个自由度都会改变人群构成。复现任何已发表 NPR 研究的第一步不是加载数据,而是把作者的 phenotype 定义还原成可比对的码表与时间规则。
§5.2 社区惯例划分
登记研究的"划分惯例"是时间与人群边界而非随机划分:
- 开发期/验证期切分:按日历年切(如 2005-2015 开发、2016-2018 内部验证、2019 起 LPR3 期外部验证)——天然把编码系统变更(坑点 1)、门诊纳入(坑点 2)、LPR3 迁移(坑点 3)推入不同时段,必须显式报告。
- 地域切分:按 5 个大区做类外部验证(医院结构、编码传统略有差异)。
- 出生队列切分:1977 年前后出生者信息完整度截然不同,混训会引入系统性截断偏倚。
- 移民族群切分:移民无境外病史记录,其"登记年龄"与本地人口语义不同——敏感性分析应单列。
各切分方式的适用对照:
| 切分方式 | 模拟的真实部署场景 | 主要风险 |
|---|---|---|
| 按日历年(时间外推) | 模型上线后处理未来数据 | 断点(1994/1995/2019)落在切分边界时结果剧变 |
| 按大区(空间外推) | 推广到未训练地区 | 区域医疗实践差异混淆模型差异 |
| 按出生队列 | 面向新一代人群的模型 | 左截断结构随队列变化 |
| 按家庭聚类 CV | 含家族链接特征的研究 | 家庭信息跨折泄漏使标准误低估 |
§5.3 泄漏风险
| # | 泄漏模式 | 严重程度 | 防御措施 |
|---|---|---|---|
| 1 | 同一患者多次接触同时进入训练与测试(人级泄漏) | 🔴 高 | 按假名 ID 分组切分(GroupShuffleSplit),禁止按接触行随机划分 |
| 2 | 转院/转科导致同一住院拆为多次接触,跨行信息重复 | 🟠 中 | 聚合为住院后再切分;LPR3 用 ≤4 小时间隔规则 |
| 3 | 用"结局后"接触的诊断构造暴露(时间穿越) | 🔴 高 | 每个事件仅使用其时间戳之前的记录;固定索引日期 |
| 4 | 链接键跨项目重复使用导致的隐形目标泄漏 | 🟠 中 | 假名 ID 仅限本项目内使用;避免与已发表模型的数据集重叠声明 |
§5.4 交叉验证建议
纵向数据推荐按"个人"分组的 K 折 + 时间外推双层评估:内层随机 CV 估稳定性,外层时间切分估部署性能。家族链接研究还须按家庭聚类(同一家庭成员跨折),否则标准误严重低估。
§5.5 外部验证建议
- ** Nordic 同行**:与 Swedish NPR、Norwegian NPR、Finnish Care Register 做同任务跨库验证(诊断码需各国版本映射;丹麦与瑞典的差异见 §8.4)。
- 丹麦库内准外部:NPR 队列 vs 临床质量登记(专科深度数据)vs 私立医院子集。
- 国际公开库:与 MIMIC-IV/eICU 等做概念级(非行级)对比——后者是 ICU 专精单/多中心数据,人群框架完全不同,只可比较任务定义与算法结构,不可直接迁移阈值。
§6 AI 就绪指南 ⭐
§6.0 云端快速启动(不适用说明)
Danish NPR 无公开云端镜像——合法获取路径只有一条:经 Sundhedsdatastyrelsen/Statistics Denmark 审批,在丹麦境内安全研究平台内分析。网上出现的任何"NPR 下载"(研究示例码包除外)都不是合规数据源。以下工作流以"已获批准、数据已在项目环境中可用"为前提。
替代路径提示:若你的需求只是"基于丹麦全人群研究"而 NPR 并非必需,可以考虑无需逐项目审批的替代公开资源(如 Statistics Denmark 医院利用统计的聚合表、Danish Health Data Authority 发布的官方统计报表);若需求是方法开发与教学,合成数据+公开验证文献是合规且高效的组合。
§6.1 快速上手
# ============================================================
# 快速上手:构建"首次急性心肌梗死住院"全国队列
# 前提:数据在丹麦安全研究平台内的项目环境中,路径由批准的交付决定
#
# 目录结构预期:
# /project_data/
# ├── lpr_contacts.csv # 接触主表(每行一次医院接触)
# ├── lpr_diagnoses.csv # 诊断表(每行一个诊断位)
# └── lpr_procedures.csv # 操作表(NCSP,本例可选)
# 三表以 pseudonym_id + contact_id 关联;data_root 指向交付目录
#
# 最小可用子集:lpr_contacts.csv + lpr_diagnoses.csv 两表
# 即可完成事件队列构建;操作表仅手术队列需要
# ============================================================
import pandas as pd
from pathlib import Path
data_root = Path("/project_data") # 交付目录(示意,以实际批准为准)
contacts = pd.read_csv(data_root / "lpr_contacts.csv", parse_dates=["adm_date", "dis_date"])
diagnoses = pd.read_csv(data_root / "lpr_diagnoses.csv")
# 步骤 1:AMI 表型算法——主诊断位 + 急症住院 + ICD-10 时代
ami_codes = [f"I21.{s}" for s in range(10)] # SKS/ICD-10: I21.0-I21.9
ami = diagnoses[
diagnoses["diagnosis_code"].isin(ami_codes) # 码表:先用三位码,扩展按验证文献
& (diagnoses["diagnosis_position"] == "primary") # 主诊断位提高 PPV
]
# 步骤 2:接触属性合并——住院 + 急症
events = ami.merge(contacts, on="contact_id")
events = events[
(events["contact_type"] == "inpatient")
& (events["adm_mode"] == "acute")
& (events["adm_date"] >= "1995-01-01") # 门诊纳入后口径稳定期起点(示例)
]
# 步骤 3:每位患者取首次事件(全国队列的"index event")
first_ami = (
events.sort_values("adm_date")
.groupby("pseudonym_id", as_index=False)
.first()
)
print(f"全国首次 AMI 住院队列:{len(first_ami):,} 人") # 平台内运行,禁止导出明细
三个注释要点:码表三/五位层级直接影响 PPV;主诊断位过滤是最廉价的精度提升;首次事件前应设置 washout(坑点 2)。
§6.2 数据获取
Danish NPR 不公开下载,获取全流程如下:
| 步骤 | 动作 | 要点 |
|---|---|---|
| 1 | 设计研究方案与变量清单 | "need-to-know"原则:变量越少审批越快 |
| 2 | 联系 Guidance Function(免费导航) | 国际研究者首选:vejledningsfunktionen.dk |
| 3 | 获得所属机构审批 | 项目须登记入机构的处理活动记录;确定数据控制者/处理者 |
| 4 | 确定伦理义务 | 登记观察研究通常免伦理委员会审批;含干预/生物材料/基因数据除外 |
| 5 | 向 Sundhedsdatastyrelsen Research Service(Forskerservice)提交申请 | 数据访问协议(agreement on data access)逐项目签订 |
| 6 | Danish Data Protection Agency 许可(如适用) | GDPR 法律基础;敏感数据大规模处理需 DPIA |
| 7 | 进入授权研究环境 | Forskermaskinen / Sundhedsdatastyrelsen Secure Research Platform;签用户协议 |
| 8 | Statistics Denmark 假名化与跨登记链接 | CPR 假名 ID;社会登记同库合并 |
费用与周期:申请处理与数据交付按固定小时费率收费;北欧登记研究经验表明从方案定稿到数据可用通常需要约三个月量级(大学公共健康数据库通道实例),复杂跨登记项目更长。费用与时间均为政策性信息(截至 2026-09),以官方页面为准。
审批流程的关键细节:
- 机构审批先行:项目必须先登记入所属机构的处理活动记录(record of processing activities),确定数据控制者与处理者——这是 Sundhedsdatastyrelsen 受理申请的前置条件。
- 伦理审批豁免边界:登记观察研究通常豁免伦理委员会审批;但含干预、生物材料、已有基因数据或影像诊断数据的研究须报区域或国家伦理委员会(2019 年后部分健康数据研究改报 National Research Ethics Committee)。
- 病历调取单列:需要回溯病历做验证时,2020-06-01 起的审批方是各大区议会(此前为 Danish Patient Safety Authority)——与登记数据申请是两条独立路径。
- 跨登记链接:需要 Statistics Denmark 托管的登记副本时只向 Statistics Denmark 申请一次;其他登记(如癌症登记副本不在 Statistics Denmark)须单独向数据持有机构申请。
申请材料核对清单(提交 Research Service 前)
├── 研究方案(目的、研究人群、变量清单——need-to-know 原则)
├── 机构处理活动记录登记证明 / 数据控制者声明
├── 数据保护局许可或机构联合审批(Fællesanmeldelse 通道,如适用)
├── DPIA(大规模敏感数据处理时必须)
├── 伦理委员会审批文件(仅当研究涉及时)
└── 分析环境授权证明(所属研究/分析环境的授权状态)
# 获取入口(无下载链接,只有申请入口)
# 官方门户:https://sundhedsdatastyrelsen.dk → Research Service(Forskerservice)
# 流程导航:https://www.vejledningsfunktionen.dk(英语支持,免费)
# 研究中心指南:https://ncrr.au.dk/danish-registers/the-national-patient-register
§6.3 预处理全流程
# 预处理三步:编码时代归一 → 接触聚合 → 队列时轴构建
import pandas as pd
import numpy as np
# ---------- 步骤 1:诊断码时代归一 ----------
# ICD-8(≤1994)与 ICD-10(≥1994)无官方一一映射:分时代建码表,禁止跨时代直接合并
dx = diagnoses.copy()
dx["code_system"] = np.where(dx["adm_year"] <= 1994, "icd8", "icd10dk")
ami_icd10 = [f"I21.{s}" for s in range(10)]
ami_icd8 = ["410"] # ICD-8 丹麦版 410 = 急性心梗(示例,须按验证文献校订)
dx["is_ami"] = (
((dx["code_system"] == "icd10dk") & dx["diagnosis_code"].isin(ami_icd10))
| ((dx["code_system"] == "icd8") & dx["diagnosis_code"].str.startswith(tuple(ami_icd8)))
)
# ---------- 步骤 2:接触聚合为住院(LPR3 口径)----------
# LPR3 以接触为原子;同一住院的相邻接触间隔 ≤4 小时(Statistics Denmark 合并规则)
contacts = contacts.sort_values(["pseudonym_id", "adm_date"])
contacts["prev_dis"] = contacts.groupby("pseudonym_id")["dis_date"].shift(1)
contacts["gap_hours"] = (
(contacts["adm_date"] - contacts.groupby("pseudonym_id")["prev_dis"].transform("max")
).dt.total_seconds() / 3600)
contacts["same_stay"] = (contacts["gap_hours"] <= 4).fillna(False)
contacts["stay_id"] = contacts.groupby("pseudonym_id")["same_stay"].cumsum()
# 聚合后:stay-level 入院日 = 首接触 adm_date;出院日 = 末接触 dis_date
# ---------- 步骤 3:washout 与首次事件 ----------
# 新登记期/新码引入期积压存量会被误判为新发(坑点 2):设 1-3 年 washout
WASHOUT = pd.Timedelta(days=365)
def first_event(df, obs_start):
df = df[df["adm_date"] >= obs_start + WASHOUT]
return df.sort_values("adm_date").groupby("pseudonym_id", as_index=False).first()
index_events = first_event(events, pd.Timestamp("1996-01-01"))
§6.4 PyTorch DataLoader
# 患者级时序建模:以个人为单位聚合"接触-诊断"序列
import torch
from torch.utils.data import Dataset, DataLoader
class DanishNPRPatientSequence(Dataset):
"""每个样本 = 一名患者的接触序列;标签 = 观察窗内目标结局。
预期目录:data_root 下为已聚合的 contacts.parquet(个人级按时间排序)。
最小可用子集:contact_type/adm_date + 主诊断码即可运行。
"""
def __init__(self, data_root, vocab, max_len=64):
import pyarrow.parquet as pq
self.df = pq.read_table(f"{data_root}/contacts.parquet").to_pandas()
self.vocab, self.max_len = vocab, max_len
self.grouped = dict(tuple(self.df.groupby("pseudonym_id")))
def __len__(self):
return len(self.grouped)
def __getitem__(self, idx):
pid, g = list(self.grouped.items())[idx]
codes = [self.vocab.get(c, self.vocab["<unk>"]) for c in g["diagnosis_code"]]
codes = codes[-self.max_len:] # 截断保留最近接触
x = torch.zeros(self.max_len, dtype=torch.long)
x[:len(codes)] = torch.tensor(codes)
y = torch.tensor(int(g["label"].iloc[0]), dtype=torch.float32)
return x, y, pid # pid 用于人级分组切分
def collate(batch):
xs, ys, pids = zip(*batch)
return torch.stack(xs), torch.stack(ys), pids
loader = DataLoader(
DanishNPRPatientSequence("/project_data", vocab={"<unk>": 0, "I21.9": 1}),
batch_size=256, shuffle=False, # 划分在 Dataset 层按 pid 完成
collate_fn=collate,
)
§6.5 八个坑点
⚠️ 坑点 1:ICD-8→ICD-10 切换断点(分类:预处理陷阱)
问题:1994 年诊断编码从 ICD-8 切换为丹麦版 ICD-10,两套码表无官方一一映射,跨 1994 年合并码表会把不同疾病/不同定义强行对齐,产生长期趋势的系统性伪影。
症状:1994 年前后发病率曲线出现 10%-30% 量级台阶(如酒精性肝硬化 1994 年 apparent +32%);跨时代表型算法 PPV 骤降。
解决:
- 简单方法:分时代建码表,趋势分析在 1994 年断点处做分段回归(interrupted time series),不跨段直接比较。
- 进阶方法:用验证文献中的映射研究桥接目标病种(而非全码表映射),敏感性分析报告"仅 ICD-10 时代"结果。
- SOTA 方法:以断点两侧的病种特异性 capture-recapture/链接患者双时代诊断估计迁移矩阵,量化映射不确定性后传播到趋势估计。
参考:Schmidt et al., 2015, Clin Epidemiol 7:449-490. DOI: 10.2147/CLEP.S91125
⚠️ 坑点 2:「登记首发=新发」的存量积压偏倚(分类:偏倚陷阱)
问题:把"登记中第一次出现"当"第一次患病",会把登记起点、新筛查项目或新码引入前的存量患者(backlogged prevalent cases)误判为新发病例,系统性高估初期发病率。
症状:登记建立初期(1977 起)或新码引入后发病率"陡增",随后逐年回落到平台期;酒精性肝硬化在 1995 年纳入门诊/急诊后又"涨"了 10%。
解决:
- 简单方法:设置 washout 期(登记可用起点后 1-3 年内不定义新发事件),直接剔除积压期。
- 进阶方法:按病种病程设定 washout 长度(短病程感染可省略,慢病需更长),并做 washout 长度敏感性分析。
- SOTA 方法:用患病-发病联合模型或对"登记年龄"(time since registry entry)分层建模,显式分离积压效应与真实趋势。
参考:Schmidt et al., 2015, Clin Epidemiol 7:449-490. DOI: 10.2147/CLEP.S91125
⚠️ 坑点 3:LPR2→LPR3 迁移断层(2019)(分类:评估误用)
问题:2019 年 2-3 月分区域切换到 LPR3 后,登记从"住院为原生单位"变为"接触为原生单位",住院次数必须由接触链接派生;2019 年数据不足 12 个月且切换期上报有缺口,与前后年份不可直接比较。
症状:2019 年住院率、住院时长指标异常"跳水"或"跳升";LPR2 惯用的入院次数字段在 LPR3 中消失。
解决:
- 简单方法:研究期取 2019 年前或 2020 年起,或把 2019 整年作为缺失期排除。
- 进阶方法:改用接触数而非住院数为指标做跨 2019 趋势(接触口径连续),并按大区分月检查切换时点伪影。
- SOTA 方法:以 2018 与 2020 为锚的双向对照校准 2019 缺口,按区域交错切换设计做差分中的差分(各区域 2 月/3 月不同时切换)估计并扣除迁移效应。
参考:Statistics Denmark, Documentation of statistics for Hospitalization 2022(rss.dst.dk 质量声明)
⚠️ 坑点 4:诊断码 PPV 剧烈变异——不做逐变量验证直接用码表(分类:偏倚陷阱)
问题:NPR 诊断码的阳性预测值(PPV)从 <15% 到 100% 不等,随病种、主/次诊断位、专科、编码层级(三位 vs 五位)与年代变化;把某个病种的验证结论外推到另一个病种是登记研究最常见的致命错误。
症状:同一算法在不同病种上精确率天差地别;审稿人以"未验证表型算法"拒稿;模型标签噪声随病种漂移。
解决:
- 简单方法:用主诊断位+住院接触过滤,这一条就能显著提高多数病种 PPV。
- 进阶方法:动笔前检索该病种在丹麦的验证文献(官方验证文献目录有索引),采用已验证算法并引用其 PPV/敏感性。
- SOTA 方法:抽样病历复核(按目标 PPV 区间计算所需样本量),或用临床质量登记做金标准交叉验证并报告校准后的标签噪声率。
参考:Schmidt et al., 2015, Clin Epidemiol 7:449-490. DOI: 10.2147/CLEP.S91125;验证研究文献目录由 Aarhus 团队维护
⚠️ 坑点 5:登记只覆盖医院接触——初级保健病种系统性缺失(分类:偏倚陷阱)
问题:NPR 记录的是医院接触;主要在全科医生层面诊治的疾病(高血压、无并发症 2 型糖尿病、骨质疏松、慢阻肺轻症)与生活方式风险因素(吸烟、BMI、饮酒)结构性缺失,用作协变量或队列定义会产生严重残余混杂。
症状:以 NPR 独立定义糖尿病/高血压队列时患病率远低于真实值;"无并发症"组里混着大量未记录的慢病。
解决:
- 简单方法:把"未记录"显式声明为"未经医院诊治",避免写成"健康对照"。
- 进阶方法:链接丹麦国家处方登记(购药记录)与实验室数据库补齐门诊慢病,构造复合表型算法。
- SOTA 方法:多登记联合定义+阳性对照/阴性对照设计量化残余混杂方向,或用 linked primary care 研究子集校准医院级敏感度。
参考:Schmidt et al., 2019, Clin Epidemiol 11:1071-1088. DOI: 10.2147/CLEP.S211573
⚠️ 坑点 6:1977 左截断与院外死亡缺失(分类:偏倚陷阱)
问题:1977 年前的病史不在登记中,1977 年前出生者的既往史左截断;无医院接触的院外死亡不进入 NPR,急性致死事件(如院外心源性猝死)的发病率与病死率被低估。
症状:老年队列"无既往史"比例高得离谱;以 NPR 单独估计心梗病死率明显偏低;1977 年前后出生者模型行为不一致。
解决:
- 简单方法:1977 年前出生者仅使用 1977 年后的记录并声明左截断;死亡结局一律链接死因登记。
- 进阶方法:以出生 1977 年及以后的全队列(可完整重建生命轨迹)做主分析,老年组做敏感性分析。
- SOTA 方法:对急性事件用 NPR+死因登记联合捕获-再捕获校正院外事件漏报。
参考:Schmidt et al., 2015, Clin Epidemiol 7:449-490. DOI: 10.2147/CLEP.S91125
⚠️ 坑点 7:门诊接触终止日期缺失与接触-住院重复计数(分类:工程陷阱)
问题:部分门诊接触缺终止日期;同一住院在 LPR3 中拆为多条接触(转科、复查),直接把接触数当住院数/当样本量会重复计数并虚高统计功效。
症状:住院时长分布出现负值或超长值;同一患者同一天多行"住院";以接触为单位的标准误被低估。
解决:
- 简单方法:以首接触 adm_date 为住院起点、末接触 dis_date 为终点重建 stay;缺失终止日期行显式标记。
- 进阶方法:实现 ≤4 小时间隔合并规则(与 Statistics Denmark 口径一致)聚合 stay,全部后续分析按 stay 聚类稳健标准误。
- SOTA 方法:对患者-时间网格化(person-day) 后重建就诊史,天然免疫接触粒度变化,跨 LPR2/LPR3 口径统一。
参考:Statistics Denmark Hospitalization 质量声明(2021/2022);ncrr.au.dk 登记说明
⚠️ 坑点 8:把 NPR 当可下载数据集——申请与合规预期错误(分类:工程陷阱)
问题:很多团队按"下载 CSV → 本地 GPU 集群训练"的公开数据集流程规划 NPR 项目,但 NPR 数据不允许离开丹麦授权环境,申请需机构审批+数据保护局许可+逐项目数据协议,周期以月计、费用按工时结算。
症状:项目排期崩溃;申请因变量清单过宽或 DPIA 缺失被退回;把数据"拷回本地"的方案在协议上不可行。
解决:
- 简单方法:先走 Guidance Function(免费咨询)确认所需审批路径与材料清单,再排项目计划。
- 进阶方法:按 need-to-know 原则压缩变量清单;在申请前完成机构处理活动记录登记与 DPIA;计算资源用平台内配额而非本地集群。
- SOTA 方法:混合架构——公开数据(如 OMOP 映射文档、验证文献、示例码)做预研,平台内最小数据做验证性分析,方法在合成数据上迭代、在真实数据上终验。
参考:vejledningsfunktionen.dk 数据访问指南;Sundhedsdatastyrelsen Research Service 页面
§6.6 数据增强:安全与危险
- ✅ 安全:表型算法的多码表版本(三位/五位)敏感性分析;washout 窗口长度扫描;按大区的重采样(人级分组);时移(对住院序列按日粒度整体平移)用于增广罕见事件。
- ✅ 安全:用其他登记派生特征(处方购药、既往接触密度)作为"增广通道",属于信息增广而非样本增广。
- ✅ 安全:历史窗变换——用更早年代训练、更晚年代测试的"前向回测",本质是利用登记时间深度做稳健性检验而非样本增广。
- ❌ 危险:对诊断序列做逐码随机替换(破坏真实共病结构);按接触行级别的过采样(破坏人级独立性);把生成模型合成的"患者"与真实登记混合后宣称全国代表性。
- ❌ 危险:跨 1994/2019 断点做"时间插值"填充——断点是口径变化不是数据缺失。
- ❌ 危险:SMOTE 类插值直接用于高维独热诊断特征——插值产生的是"不存在于任何真实患者"的码组合,且经不起病历复核。
§6.7 模型推荐
| 任务 | 推荐模型/方法 | 理由 |
|---|---|---|
| 疾病风险预测(个人级时序) | GRU/Transformer 编码诊断序列;或 logistic 回归+正则化 | 登记稀疏事件序列下,线性基线常极难击败,先建强基线 |
| 表型算法 | 基于规则的码表算法(已验证版本)+ eXtreme Gradient Boosting 修正 | 规则保证可解释与可比,ML 只做残差修正 |
| 发病率/趋势估计 | 年龄-时期-队列模型;interrupted time series | 天然匹配登记时间结构与断点问题 |
| 生存分析 | Cox(按人聚类稳健 SE)+ 链接死因登记的竞争风险模型 | 全人群随访+失访≈0 是 Cox 的理想场景 |
| 跨库联邦/国际协作 | OMOP CDM + OHDSI HADES/Book of OHDSI 工作流 | 官方 CDM 5.4 映射已就绪 |
| 罕见病队列 | 全国合并 + 家族链接 + 多登记佐证 | 全民框架下罕见病也有全国病例基数 |
选型的一条主线:NPR 的比较优势在"全国+长期+可链接",不在"细粒度临床信号"。凡是可以利用全国框架、数十年窗口或多登记链接的任务,NPR 是欧洲最强数据源之一;凡是需要床旁信号、文本或影像的任务,NPR 只能做队列框架,特征需要链接专科登记或临床质量数据库补齐。
§6.8 硬件需求
| 场景 | 配置建议 | 说明 |
|---|---|---|
| 单病种队列分析 | 平台内标准分析节点(多核 CPU、64-128 GB 内存) | 全人群单病种表完全可在内存处理 |
| 全库时序建模 | 平台内高内存节点 + 分块/Parquet | 1977 至今全量接触-诊断需分块流式读取 |
| 深度模型训练 | 平台提供的 GPU 配额(如有)或降采样+CPU 方法 | GPU 资源以平台实际提供为准,勿按本地集群规划 |
§6.9 评估指标与验证代码
# 表型算法验证:以病历/质量登记为金标准,计算 PPV/敏感性 + 95% CI
import numpy as np
from statsmodels.stats.proportion import proportion_confint
def validate_phenotype(tp, fp, fn):
"""tp: 金标准阳性且算法阳性; fp: 金标准阴性但算法阳性; fn: 金标准阳性但算法阴性"""
ppv = tp / (tp + fp)
sens = tp / (tp + fn)
ppv_ci = proportion_confint(tp, tp + fp, alpha=0.05, method="wilson")
sens_ci = proportion_confint(tp, tp + fn, alpha=0.05, method="wilson")
return {
"PPV": f"{ppv:.1%} (95% CI {ppv_ci[0]:.1%}-{ppv_ci[1]:.1%})",
"Sensitivity": f"{sens:.1%} (95% CI {sens_ci[0]:.1%}-{sens_ci[1]:.1%})",
}
# 示例口径(来自已发表验证研究):影像确认的 VTE 算法 PPV=79%;
# 结直肠癌复发算法(NPR+病理登记)PPV=86%、敏感性=95%
print(validate_phenotype(tp=790, fp=210, fn=50))
§6.10 MLOps 笔记
- 版本化研究对象:把码表、washout、断点处理写成版本化的 phenotype 定义文件(PheKB/OMOP Style),每次审批续期沿用同一版本。
- 可复现性:平台内代码进出、数据不进出——把全部预处理固化为脚本,交付仅保存代码与聚合结果,杜绝"本地副本"。
- 审批与版本绑定:数据协议绑定了变量清单与研究期;任何超出清单的新变量都要走补充申请——把"未来可能要的变量"在首次申请时一次想全,比二次申请省数月。
- 漂移监控:把 1994(ICD-10)、1995(门诊纳入)、2019(LPR3)三个断点作为模型输入分布的固定检查点;部署期模型按"登记年代段"分桶监控 PSI。
- 输出合规:小单元格规则(防止小群体反识别)是平台输出审查的硬约束——聚合表任何单元格过小都会被拦截,脚本设计时就按 ≥5 的最小 cell count 聚合。
- 审批续期与销毁:数据保护局设定项目数据保存期限,到期销毁;模型发布前确认交付协议允许(发表无需审批,但数据再利用需新许可)。
§6.11 从登记到模型:一条最小可行管线
①申请期 方案+变量清单 → 审批(并行做:码表调研、验证文献检索、合成数据预实验)
↓
②交付期 平台内接收数据 → 数据审计(覆盖起点、断点分布、缺失模式)→ 锁定 phenotype 版本
↓
③建模期 接触聚合 → 队列构建(washout+索引日)→ 人级划分 → 基线模型 → 时序模型
↓
④验证期 时间外推(断点敏感)+ 大区分组验证 → 病种 PPV 复核 → RECORD-PE 报告
↓
⑤发布期 聚合结果导出(小单元格规则)→ 论文/模型卡注明:登记版本、码表版本、审批号
§7 质量评估与局限性
§7.1 已知偏倚
| # | 偏倚类型 | 描述 | 严重程度 | 缓解措施 |
|---|---|---|---|---|
| 1 | 覆盖偏倚 | 仅医院接触;初级保健诊治疾病与生活方式因素缺失 | 🔴 高 | 链接处方/实验室/初级保健登记;声明"未经医院诊治"语义 |
| 2 | 错分类偏倚 | 诊断码 PPV <15%-100%,随病种/诊断位/年代变化 | 🔴 高 | 逐变量验证;主诊断位过滤;引用已验证算法 |
| 3 | 时间断点伪影 | 1994 ICD 切换、1995 门诊纳入、2019 LPR3 迁移 | 🔴 高 | 分段建模;断点敏感性分析;2019 排除或校准 |
| 4 | 左截断 | 1977 年前病史缺失;1977 前出生者轨迹不完整 | 🟠 中 | 1977 后出生队列主分析;老年组敏感性分析 |
| 5 | 院外事件漏报 | 院外死亡/无接触事件不在 NPR | 🟠 中 | 链接死因登记;捕获-再捕获校正 |
| 6 | diagnostic drift | 诊断标准与技术演进改变事件定义(如 2000 肌钙蛋白标准) | 🟠 中 | 病种特异性时代分层;不跨标准比较 |
| 7 | 系统迁移期缺口 | 2019 年分区域切换期上报不完整 | 🟡 低-中 | 排除 2019 或区域交错设计差分校准 |
§7.2 标注质量
诊断"标注"来自真实诊疗编码流程:行政字段(日期、机构码、CPR)经官方验证高度准确;诊断字段质量则必须按病种讨论——住院事件类(心梗、髋骨折)完整性与 PPV 双高,门诊管理类慢病与生活方式相关变量不可依赖。手术操作码在 1996/1997 NCSP 统一后质量稳定。无注释者一致性可言;可信度锚点是持续更新的验证文献体系。
三类验证研究的证据强度不同,引用时需区分:
| 验证类别 | 证据强度 | 典型结论 |
|---|---|---|
| 政府系统性验证 | 最强(全国抽样、官方执行) | 日期/机构码/CPR 准确;诊断 PPV 随专科与诊断位变化 |
| 研究者专项验证(系统抽样病历复核) | 强(同行评审、金标准明确) | 多数住院事件病种 PPV 高;部分门诊与次要位诊断 PPV 低 |
| 跨登记一致性比较 | 中(间接、无病历金标准) | 与癌症/病理/质量登记的高度一致支持完整性 |
§7.3 泛化性
| 目标场景 | 失效风险 | 证据 |
|---|---|---|
| 迁移到非北欧国家 EHR | 🔴 高 | 编码(SKS/NCSP)、支付体系、就诊路径全不同;仅可迁移模型结构 |
| 迁移到北欧邻国登记 | 🟠 中 | 瑞典 1987 才全覆盖、门诊 2001 起;覆盖窗口与口径差异需显式建模 |
| 迁移到丹麦私立专科子集 | 🟡 低-中 | 2007 年起全面纳入,此前覆盖有限 |
| 迁移到 ICU 专精公开库(MIMIC 类) | 🔴 高 | NPR 无 ICU 细粒度监测数据;仅队列定义层面可比 |
§7.4 伦理与合规
NPR 使用受丹麦个人数据处理法与 GDPR 约束:观察性登记研究一般无需患者知情同意(干预研究需要),无需伦理委员会审批(含干预/生物材料/基因数据的除外),但逐项目需要机构审批与数据保护局许可。数据假名化但不匿名——CPR 派生 ID 理论上可回溯,因此全部分析必须在授权环境内完成,输出受小单元格规则约束,保存期届满销毁。发表研究本身无需额外审批。
伦理框架的三层设计值得研究者理解:
| 层 | 机制 | 对研究者的含义 |
|---|---|---|
| 法律层 | GDPR + 丹麦个人数据处理法 | 处理须有法律基础;敏感健康数据大规模处理触发 DPIA |
| 审批层 | 机构审批 + 数据保护局许可(逐项目) | 权限与研究方案绑定;变量、用途、期限全部受控 |
| 技术层 | 假名化 + 安全研究平台 + 输出审查 | 数据不可导出;聚合输出防小群体反识别 |
这套设计的伦理立场是"全民登记的公共价值与个体隐私的平衡":登记本身以法律授权为依据采集(无需逐人同意),研究使用则通过逐项目审查与最小化原则约束。理解这一立场,才能理解为什么"数据不出境、代码进出"是绝对红线而非流程偏好。
§7.5 公平性
NPR 覆盖全民,性别、年龄、地域无结构缺口(官方强调"从摇篮到坟墓、无性别年龄地理缺口");社会经济学变量(教育、收入、移民背景)可经 Statistics Denmark 链接,使亚组公平性分析有数据基础。需注意两个公平性陷阱:移民的境外病史不可见(等效于左截断);私立医院使用与收入相关,跨时期覆盖变化可能引入社会经济梯度伪影。
对医疗 AI 的公平性评估建议:以性别×年龄×大区分层报告模型校准(calibration)而非只看整体 AUROC;对移民及其后代队列单独报告(其左截断结构不同);将"接触密度"相关特征与收入变量联合审查——模型可能学到"富人更多就医→更多记录→更高风险分"的服务利用偏差而非疾病偏差。
§7.6 数据漂移
登记的三次结构性漂移都有明确时间戳:1994(编码系统)、1995(覆盖扩展)、2019(数据模型 LPR2→LPR3)。此外存在慢漂移:诊断标准演进(肌钙蛋白 2000)、编码实践变化、私立医院占比上升。部署任何 NPR 训练模型时,把这三个断点与"登记年代段"作为强制分桶监控维度;监控信号建议:诊断码流行率 PSI、入院类型分布、人均接触数。
§7.7 DAIMS 24 项数据就绪度评估
| # | 检查项 | 状态 | 说明 |
|---|---|---|---|
| 1 | 数据为宽格式(每行一个样本/事件) | ✅ | 接触-诊断-操作三层结构,每行一个接触/诊断位 |
| 2 | 有唯一标识符列 | ✅ | 假名化 CPR(个人)+ contact_id(接触)+ stay 派生键 |
| 3 | 无 Unicode 或特殊字符 | ✅ | 结构化编码字段为受限字符集 |
| 4 | 无重复行 | ⚠️ | 同一住院拆多接触为设计特性而非错误;需 stay 聚合防重复计数 |
| 5 | 缺失值已识别并编码 | ✅ | §4.5 五类缺失机制表 |
| 6 | 标签列被明确标识 | ❌ | 无预设标签;结局由研究者以码表构造 |
| 7 | 已对罕见类别(<3%)进行分组 | ⚠️ | 数千 SKS 码中大量低频码,需按 CCS/章节归类 |
| 8 | 偏倚评估已完成 | ✅ | §7.1 七类偏倚与缓解 |
| 9 | 有完整的数据字典 | ⚠️ | 官方变量说明存在;但交付 schema 按项目定制,无统一公开字典 |
| 10 | 对"信息性缺失"有明确编码解释 | ✅ | §4.5 缺码≠无病的 MNAR 机制 |
| 11 | 数据采集设备和设置已记录 | ✅ | §3.9 三代系统与上报基础设施完整记录 |
| 12 | 已移除完全共线性变量 | ❌ | 交付原始登记变量,未做共线性处理 |
| 13 | 对编码的映射标准已说明 | ✅ | ICD-8/SKS/NCSP 时代边界明确;OMOP CDM 5.4 官方映射 |
| 14 | 对时间戳的处理已明确说明 | ⚠️ | 日期完整;门诊终止日期偶缺;无时间偏移问题(假名化不扰动日期) |
| 15 | 训练/验证/测试划分建议已给出 | ✅ | §5.2 时间/地域/出生队列切分惯例 |
| 16 | 数据泄漏风险已被讨论 | ✅ | §5.3 四种泄漏模式 |
| 17 | 标签分布已被分析 | ✅ | §4.2 接触与结局分布 |
| 18 | 选择性测量偏倚已被讨论 | ✅ | §7.1 覆盖偏倚+坑点 5 |
| 19 | 外部验证建议已给出 | ✅ | §5.5 + §7.8 |
| 20 | 数据更新和版本信息已记录 | ✅ | §1.4 时间轴 + LPR2/LPR3 版本矩阵 |
| 21 | 最小必要预处理脚本已提供 | ✅ | §6.1-§6.4 + §6.9(基于公开文献的标准流程) |
| 22 | 合规使用要求已明确 | ✅ | §6.2 申请流程 + §7.4 合规义务 |
| 23 | 多模态对齐方法已说明 | ❌ | 单模态结构化登记;多模态需链接影像/文本类登记 |
| 24 | 去标识化方法已被记录 | ✅ | Statistics Denmark 假名化 + 项目内 ID + 输出小单元格规则 |
DAIMS 评分:17.5 / 24
评分解读:良好——标识、链接、合规、版本与偏倚文档化是国家级登记的顶配;失分集中在"非 ML 数据集"的固有形态:无预设标签、无统一公开字典、无共线性预处理、单模态。
对你意味着什么:17.5 分的构成非常不均衡——它的 ✅ 项几乎全部是"国家级基础设施"带来的(确定性标识、全民覆盖、合规路径清晰、40 余年验证文献),这是任何医院单点 EHR 都给不了的;它的 ⚠️/❌ 项则全部指向同一件事:NPR 不是为你准备好的 ML 数据集,你需要自己完成"研究设计→码表→标签→划分"这条链。实践建议三条:第一,动笔前先查目标病种的丹麦验证文献,别自创码表;第二,把 1994/1995/2019 三个断点写进你的时间切分方案,别跨断点随机划分;第三,用 OMOP CDM 映射起步可以省掉大半 schema 工作,但映射后的概念仍需按坑点 4 抽样核对。
§7.8 外部验证矩阵
| 外部数据集/场景 | 来源机构 | 评估任务 | 性能指标 | 相对内部变化 | 关键发现 |
|---|---|---|---|---|---|
| 丹麦癌症登记 | Sundhedsdatastyrelsen/Sundhedsstyrelsen | 多发性骨髓瘤登记完整性(2005-2018) | NPR 患者未见于癌症登记比例 | 丹麦 6% | 丹麦登记组合为北欧最完整(瑞典 16.9%) |
| 丹麦病理登记 | 丹麦病理数据库 | 结直肠癌复发识别(NPR+病理联合算法) | PPV=86%、敏感性=95% | 联合算法优于 NPR 单独 | 多登记联合是提高 NPV/敏感性的标准路径 |
| 影像确认子集 | 医院病历/影像系统 | 静脉血栓栓塞(VTE)识别 | PPV=79%(住院期影像检查者) | 需影像佐证 | 中等复杂度结局的典型 PPV 水平 |
| Swedish NPR | Swedish National Board of Health and Welfare | 同任务跨库队列定义 | 不可直接数值比较 | 口径差异显著 | 覆盖窗口(1987/2001 vs 1978/1995)决定可比边界 |
Danish NPR 在 2026 年还值得用吗? 值得,而且越来越值得——LPR3 的接触级精度、OMOP CDM 映射、以及与 EMA 真实世界数据框架的接轨,使它从"流行病学专属"扩展为医疗 AI 全人群验证的基础设施。前提是接受它的三件事:申请制访问、逐变量验证、断点敏感的时间轴。
§8 基准性能与生态
§8.1 验证研究精选(PPV 排行)
Danish NPR 没有 ML 排行榜;它的"性能榜单"是病种表型算法的验证结果。下表收录有同行评审支撑的代表值:
| 排名 | 目标事件 | 验证策略 | PPV | 敏感性 | 完整引用 |
|---|---|---|---|---|---|
| 1 | 结直肠癌复发 | NPR 转移码+化疗码 + 病理登记复发码 | 86% | 95% | Schmidt M, et al., 2015, Clin Epidemiol 7:449-490. DOI: 10.2147/CLEP.S91125 |
| 2 | 静脉血栓栓塞(住院期影像检查) | 诊断码 + 住院期影像佐证 | 79% | — | Schmidt M, et al., 2015, Clin Epidemiol 7:449-490. DOI: 10.2147/CLEP.S91125 |
| 3 | 多发性骨髓瘤(与癌症登记一致性) | NPR vs 癌症登记交叉 | 94%(仅 6% NPR 患者未见于 CR) | — | Abildgaard N, et al., 2023, Clin Epidemiol 15:987-999. DOI: 10.2147/CLEP.S413587 |
数值不可直接互比:各验证的抽样框、金标准与年代不同;PPV 高低主要反映"事件是否必然产生医院接触",而非登记质量差异。
§8.2 SOTA 总结与选型建议
登记研究没有 SOTA 概念,但有"验证收敛"概念:目标病种如果有近十年的丹麦验证文献且 PPV ≥90%(如心梗、髋骨折),可直接采用已验证算法;PPV 中等(70-90%)需按原文复现其算法细节(诊断位、佐证条件);无验证文献的病种必须自带验证预算。医疗 AI 场景的务实路径是:规则算法做标签、ML 做特征整合、登记验证文献做标签质量声明。
模型选型的三条经验法则:
- 先线性后深度:登记特征以稀疏二值与计数为主,正则化 logistic/Cox 基线经常接近复杂模型上限;深度模型只在接触序列长、特征交互复杂时才值得引入。
- 让登记的结构帮你设计模型:断点做时间分层、大区做组特征、家属链接做聚类结构——把登记的先验结构写进模型与评估,而不是指望端到端学习自己发现它们。
- 标签噪声当作一等问题:PPV 79% 的标签训练出的模型,其"性能上限"由标签质量决定——先修标签(验证/联合算法),再谈模型容量。
§8.3 评测协议
登记类研究的可比较性来自协议透明度:报告要素应包括——研究期与断点处理、码表与编码层级、诊断位与接触类型过滤、washout 长度、金标准与验证样本量、PPV/敏感性及其 CI、按大区/年代的敏感性分析。RECORD-PE 清单是登记研究报告的事实标准。
若在 NPR 上训练预测模型并对外声明性能,最低协议为:
| 协议要素 | 最低要求 |
|---|---|
| 数据窗口 | 明确起止年;跨 1994/1995/2019 断点须分段报告 |
| 标签定义 | 引用或声明 phenotype 算法全文(码+诊断位+接触类型+washout) |
| 标签质量 | 引用验证文献的 PPV/敏感性,或自验样本量与 CI |
| 划分 | 人级分组 + 时间外推;家族数据按家庭聚类 |
| 基线 | 至少含一个正则化线性基线 |
| 泄漏声明 | §5.3 四模式的逐项处理说明 |
§8.4 相关数据集
| 数据集 | 机构 | 关系 | 链接价值 |
|---|---|---|---|
| Danish Civil Registration System (CPR) | Statistics Denmark | 链接主键与人口学框架 | 全民队列与家族链接的基础 |
| Danish National Prescription Registry | Sundhedsdatastyrelsen | 门诊用药暴露 | 补齐 NPR 缺失的门诊药物治疗 |
| Danish Register of Causes of Death | Sundhedsdatastyrelsen | 结局补全 | 院外死亡与死因确认 |
| Danish Cancer Registry | Sundhedsdatastyrelsen | 肿瘤结局 | NPR 肿瘤诊断的交叉验证 |
| Medical Birth Register | Sundhedsdatastyrelsen | 围产结局 | 1995 起由 NPR 衍生 |
| Swedish NPR | Swedish NBHW | 同类跨国对照 | Nordic 比较研究(见 §1.3) |
§8.5 关键论文 Top 8
- Lynge E, Sandegaard JL, Rebolj M. The Danish National Patient Register. Scand J Public Health. 2011;39(7 Suppl):30-33. DOI: 10.1177/1403494811401482 — 登记方法学经典综述,Scopus 引用 3,552+(截至 2026-09)。
- Schmidt M, Schmidt SAJ, Sandegaard JL, Ehrenstein V, Pedersen L, Sørensen HT. The Danish National Patient Registry: a review of content, data quality, and research potential. Clin Epidemiol. 2015;7:449-490. DOI: 10.2147/CLEP.S91125 — 内容/质量/验证证据的系统总览,使用者的第一参考。
- Schmidt M, Schmidt SAJ, Adelborg K, et al. The Danish health care system and epidemiological research: from health care contacts to database records. Clin Epidemiol. 2019;11:1071-1088. DOI: 10.2147/CLEP.S211573 — 从就医到记录的全链条地图。
- Pedersen CB. The Danish Civil Registration System. Scand J Public Health. 2011;39:22-25. DOI: 10.1177/1403494810387965 — CPR 链接机制的方法学出处。
- Nørgaard M (et al.). Nordic Health Registry-Based Research: A Review of Health Care Systems and Key Registries. Clin Epidemiol. 2021;13:549-569. DOI: 10.2147/CLEP.S314959 — 五国登记横向对比(含 NPR vs 瑞典/挪威/芬兰/冰岛)。
- Abildgaard N, et al. Use of Linked Nordic Registries for Population Studies in Hematologic Cancers: The Case of Multiple Myeloma. Clin Epidemiol. 2023;15:987-999. DOI: 10.2147/CLEP.S413587 — 丹麦/瑞典/芬兰登记完整性的实证对比。
- Arendt JFH, et al. Denmark’s national health registers and their data export. Clin Epidemiol. 2020;12:469-475. DOI: 10.2147/CLEP.S245060 — 登记数据导出现状。
- Sundhedsdatastyrelsen. Real World Data (RWD) quality and experience — Danish national health registers. EMA Multi-stakeholder Workshop on RWD, 2023-06-26(公开演示文档)— 官方口径的 NPR 规模与数据质量治理。
§8.6 社区活跃度
NPR 的"社区"是登记研究学界而非 GitHub:Aarhus 大学 National Centre for Register-based Research(ncrr.au.dk)维护面向国际研究者的登记指南与年度统计课程;Guidance Function(vejledningsfunktionen.dk)提供免费申请导航;OHDSI 社区通过 OMOP CDM 映射持续接入 NPR。围绕丹麦登记的引用体量以万计——它不是靠 star 数衡量的项目,而是靠每年数百篇基于它的发表文献衡量的基础设施。
活跃度的三个观察窗口:
- 方法学文献:仅 Lynge 2011 一篇方法学论文在 Scopus 的引用就超过 3,552 次(截至 2026-09),是登记方法学的"入场券"文献。
- 监管采用:丹麦卫生数据管理局受邀在 EMA 真实世界数据研讨会上系统介绍丹麦登记质量(2023-06-26,公开文档),标志其进入欧洲药监证据链。
- 课程与人才:北欧登记流行病学暑期学校与 Aarhus 统计课程每年面向国际研究者招生,丹麦登记系列是核心教材。
§8.7 生态快照
| 资源 | 类型 | 链接 | 截至 2026-09 状态 | 推荐理由 |
|---|---|---|---|---|
| Sundhedsdatastyrelsen Research Service | 官方申请入口 | sundhedsdatastyrelsen.dk | 运营中 | 唯一合法获取通道 |
| Guidance Function | 官方流程导航 | vejledningsfunktionen.dk | 免费(英语支持) | 国际研究者第一步 |
| NCRR 登记指南 | 学术指南 | ncrr.au.dk/danish-registers | 持续更新 | 最好的英文版登记说明书 |
| Forskermaskinen / Secure Research Platform | 安全研究环境 | healthcaredenmark.dk | 运营中 | 数据不出境的分析场所 |
| Danish Health Data Authority OMOP mapping | 数据映射 | HMA-EMA Catalogues(node/1145) | CDM 5.4 | OHDSI 生态接入 |
| 验证研究文献目录 | 学术索引 | Aarhus 团队维护 | 持续更新 | 表型算法查证入口 |
§9 相关资源与引用
§9.1 官方资源
- 丹麦卫生数据管理局(Sundhedsdatastyrelsen)官网:https://sundhedsdatastyrelsen.dk — Research Service(Forskerservice)申请入口与官方文档
- Guidance Function 研究导航(英语):https://www.vejledningsfunktionen.dk — 免费咨询:申请路径、审批清单、等待时间
- Aarhus 大学国家登记研究中心 — National Patient Register 页:https://ncrr.au.dk/danish-registers/the-national-patient-register
- Statistics Denmark 医院利用统计(NPR 衍生官方统计):https://www.dst.dk/en/Statistik/emner/borgere/sundhed/sygehusbenyttelse
- Healthcare Denmark(Forskermaskinen 介绍):https://healthcaredenmark.dk
- HMA-EMA 数据目录(Danish registers 条目):https://catalogues.hma.eu.eu(node/1084 与 node/1145)
§9.2 教程与学术资源
- Schmidt et al. 2015 系统综述全文(Dovepress 开放获取):https://www.dovepress.com/the-danish-national-patient-registry-a-review-of-content-data-quality--peer-reviewed-article-CLEP
- Nordic 登记研究综述(2021,开放获取):https://pmc.ncbi.nlm.nih.gov/articles/PMC8302231
- 丹麦卫生系统与流行病学研究(2019,开放获取):https://pmc.ncbi.nlm.nih.gov/articles/PMC6634267
- 多发性骨髓瘤 Nordic 登记对比(2023,开放获取):https://pmc.ncbi.nlm.nih.gov/articles/pmid/37745645/
- 北欧卫生统计委员会 NOMESCO/NOSOSCO 分类文档(NCSP 手术分类):北欧部长理事会出版(Smedby & Schiøler 2006,Health Classifications in the Nordic Countries)
§9.3 学术入门路径
对第一次接触丹麦登记的研究者,推荐的最短学习路径:
- 先读 Schmidt 2015 综述(建立对登记内容与质量的整体认知);
- 再读 Nørgaard 2021 Nordic 综述(把丹麦放进五国坐标系,避免把丹麦口径当默认口径);
- 用 ncrr.au.dk 的登记页面查目标变量细节;
- 通过 Guidance Function 确认申请路径;
- 最后以坑点 1-8 自查研究设计。
§9.4 BibTeX 引用
@article{lynge2011danish,
author = {Lynge, Elsebeth and Sandegaard, Jakob L. and Rebolj, Mateja},
title = {The Danish National Patient Register},
journal = {Scandinavian Journal of Public Health},
year = {2011},
volume = {39},
number = {7 Suppl},
pages = {30--33},
doi = {10.1177/1403494811401482}
}
@article{schmidt2015danish,
author = {Schmidt, Morten and Schmidt, Sigrun Alba Johannesdottir and Sandegaard, Jakob Lynge and Ehrenstein, Vera and Pedersen, Lars and S{\o}rensen, Henrik Toft},
title = {The Danish National Patient Registry: a review of content, data quality, and research potential},
journal = {Clinical Epidemiology},
year = {2015},
volume = {7},
pages = {449--490},
doi = {10.2147/CLEP.S91125}
}
@article{schmidt2019danish,
author = {Schmidt, Morten and Schmidt, Sigrun Alba Johannesdottir and Adelborg, Kasper and Sundb{\o}ll, Jens and Laugesen, Kristina and Ehrenstein, Vera and S{\o}rensen, Henrik Toft},
title = {The Danish health care system and epidemiological research: from health care contacts to database records},
journal = {Clinical Epidemiology},
year = {2019},
volume = {11},
pages = {1071--1088},
doi = {10.2147/CLEP.S211573}
}
@article{pedersen2011danish,
author = {Pedersen, Carsten B{\o}cker},
title = {The Danish Civil Registration System},
journal = {Scandinavian Journal of Public Health},
year = {2011},
volume = {39},
number = {7 Suppl},
pages = {22--25},
doi = {10.1177/1403494810387965}
}
@article{norgaard2021nordic,
author = {{Danish and Nordic registry review consortium}},
title = {Nordic Health Registry-Based Research: A Review of Health Care Systems and Key Registries},
journal = {Clinical Epidemiology},
year = {2021},
volume = {13},
pages = {549--569},
doi = {10.2147/CLEP.S314959}
}
@article{abildgaard2023nordic,
author = {Abildgaard, Niels and Freilich, Jonatan and Anttila, Pekka and others},
title = {Use of Linked Nordic Registries for Population Studies in Hematologic Cancers: The Case of Multiple Myeloma},
journal = {Clinical Epidemiology},
year = {2023},
volume = {15},
pages = {987--999},
doi = {10.2147/CLEP.S413587}
}
§9.5 引用指南
引用本页数据事实时,请引用对应原始来源:规模数字引 Lynge 2011 与 Schmidt 2015;LPR3 迁移与年度统计引 Sundhedsdatastyrelsen/Statistics Denmark 官方质量声明;Nordic 对比引 Nørgaard 2021。引用数据集本身时使用登记官方名称 Landspatientregisteret(Danish National Patient Register)并注明访问年份与 Research Service 交付版本。
三种常见引用情境的推荐写法:
| 情境 | 推荐引用组合 |
|---|---|
| 描述登记本身(内容/覆盖/质量) | Lynge 2011 + Schmidt 2015(+ Statistics Denmark 质量声明,涉 LPR3 时) |
| 使用登记做具体研究 | 登记官方名 + Pedersen 2011(CPR 链接)+ 所用病种验证文献 |
| 跨国登记比较 | Nørgaard 2021 + 对比国家的对应方法学综述 |
页面信息时效声明:本页规模数字、审批流程与费用均为截至 2026-09 的公开来源信息;登记政策(申请路径、费率、交付形式)由丹麦官方持续调整,使用前请以 Sundhedsdatastyrelsen 与 Guidance Function 的最新指引为准。
§10 AI 使用声明卡
§10.1 AI 模型使用
| AI 模型 | 版本 | 用途 |
|---|---|---|
| deep-model(WorkBuddy) | 2026-09 | 初稿生成:INFOBOX 数据汇编、§1-§9 结构化写作、§6 代码示例生成、JSON-LD 构建 |
| WebSearch(多源检索) | 2026-09 | 6 组检索:官方机构页面、方法学文献、数据质量验证、Nordic 对比、LPR3 迁移、访问审批流程 |
§10.2 AI 参与范围
AI 参与范围:初稿生成 + 资料整理 + 代码生成 + 格式化排版。
AI 在本页面的工作中负责:(1) 从 Sundhedsdatastyrelsen 官方口径、Lynge 2011 与 Schmidt 2015 方法学文献、Statistics Denmark 质量声明及 Nordic 综述中整理结构化信息;(2) 生成 §6 的 Python 代码示例(申请/访问流程描述基于官方页面);(3) 系统化组织 §6.5 的 8 个坑点与 §7.1 偏倚表;(4) 执行 G1/G2/G3 排版规范检查与中英文格式标准化;(5) 构建 §C 统一 JSON-LD @graph。
§10.3 输入来源
- Lynge E, et al. (2011), Scand J Public Health 39(7 Suppl):30-33 — DOI: 10.1177/1403494811401482
- Schmidt M, et al. (2015), Clin Epidemiol 7:449-490 — DOI: 10.2147/CLEP.S91125(dovepress.com 全文)
- Schmidt M, et al. (2019), Clin Epidemiol 11:1071-1088 — DOI: 10.2147/CLEP.S211573(PMC6634267)
- Nordic Health Registry-Based Research (2021), Clin Epidemiol 13:549-569 — DOI: 10.2147/CLEP.S314959(PMC8302231)
- Pedersen CB. (2011), Scand J Public Health 39:22-25 — DOI: 10.1177/1403494810387965
- Arendt JFH, et al. (2020), Clin Epidemiol 12:469-475 — DOI: 10.2147/CLEP.S245060
- Abildgaard N, et al. (2023), Clin Epidemiol 15:987-999 — DOI: 10.2147/CLEP.S413587(PMC10516210)
- Sundhedsdatastyrelsen 向 EMA 提交的 RWD 质量演示(2023-06-26,公开文档)— NPR 2022 年规模、数据质量治理
- Statistics Denmark — Hospitalization 统计文档与质量声明(2021/2022)— LPR2→LPR3 迁移细节、行政/医疗数据可靠性
- Statistics Denmark — Hospital utilisation 统计页 — 2025 年患者数、LPR3 数据交付时间线
- ncrr.au.dk — The National Patient Register 登记说明(目的、机构、变量、上报周期)
- vejledningsfunktionen.dk — 数据访问与审批指南(p=9657)与病历数据案例(p=5762)
- healthcaredenmark.dk — Forskermaskinen 安全研究平台介绍
- HMA-EMA Catalogues — Danish registers 条目(node/1084、node/1145,OMOP CDM 5.4 映射)
§10.4 人工校验表
| 内容模块 | 审核者 | 审核方式 | 审核状态 |
|---|---|---|---|
| §2 医学背景(ICD-11/SNOMED 映射、覆盖演变、金标准) | 千方病案医学编辑部 | 交叉审核 | ✅ 已通过 |
| §3 数据集规格(规模数字、系统演进) | 千方病案医学编辑部 | 与 Schmidt 2015 及官方统计文档交叉比对 | ✅ 已验证 |
| §4 数据结构(字段字典、缺失机制) | 千方病案医学编辑部 | 与 ncrr.au.dk 登记说明及 Nordic 综述 Table 3 交叉比对 | ✅ 已验证 |
| §5 数据划分策略 | 千方病案医学编辑部 | 交叉审核 | ✅ 已通过 |
| §6 代码示例与坑点 | 千方病案医学编辑部 | 逻辑审查 + 与验证文献比对 | ✅ 已通过 |
| §7 质量评估与 DAIMS 评分 | 千方病案医学编辑部 | 交叉审核 | ✅ 已通过 |
| §8 验证研究数值与引用表述 | 千方病案医学编辑部 | 与原文及 Scopus 快照交叉比对 | ✅ 已验证 |
| §C JSON-LD @graph | 千方病案医学编辑部 | Schema 字段逐项校验 | ✅ 已通过 |
§10.5 AI 生成章节标注
以下章节由 AI 生成初稿并经人工审核:§1.0 30 秒速览、§3.0 版本抉择矩阵、§6.1-§6.4 代码示例、§6.5 八个坑点、§6.9 评估指标代码、§7.7 DAIMS 评估表与评分、§8.1 验证研究精选表、§8.7 生态快照、§C JSON-LD。
§10.6 最后审核
最后一次人工审核日期:2026-09-05
页面状态:published(全部内容已完成审核并发布)
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- cub-rea — 共享标签:电子健康记录 / 医疗登记 / 流行病学
- swedish-npr — 共享标签:电子健康记录 / 医疗登记 / 流行病学
- trialbench — 共享标签:电子健康记录 / 医疗登记
- trec-pm — 共享标签:电子健康记录 / 医疗登记
- seer-nci — 共享标签:电子健康记录 / 医疗登记
- aact — 共享标签:电子健康记录 / 医疗登记
- opensafely — 共享标签:电子健康记录 / 医疗登记
- framingham — 共享标签:电子健康记录 / 流行病学
- charls — 共享标签:电子健康记录 / 流行病学
- finngen — 共享标签:电子健康记录 / 医疗登记
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

