信息速览

Swedish NPR 瑞典国家患者登记 — 横跨六十年的全国专科照护登记 AI-Ready Wikipedia
INFOBOX
| 数据集名称 | Swedish National Patient Register |
| 英文全称 | Swedish National Patient Register(住院部分:Swedish National Inpatient Register / Hospital Discharge Register) |
| 别名/简称 | NPR、Patientregistret、slutenvårdsregistret(住院登记)、IPR(Inpatient Register) |
| 疾病分类 | 全疾病谱(ICD-11 全章适用;登记内部编码体系为 ICD-7 → ICD-8 → ICD-9 → ICD-10-SE 演变,详见 §3.1) |
| SNOMED CT | 不适用(诊断采用 ICD-10-SE,操作采用 KVÅ 分类;术语映射需经研究自行建立,详见 §2.1) |
| 数据模态 | 结构化行政与临床登记数据(ICD 诊断编码、KVÅ 操作编码、入出院日期、机构与科室信息) |
| AI 任务类型 | 疾病表型识别、队列构建、结局定义、发病率/患病率时序分析、药物警戒、风险预测标签源、登记式自然实验 |
| 样本总数 | 覆盖约 1,050 万人口;每年约 1,500,000 例住院出院;个体级住院记录自 1964 年累积、专科门诊记录自 2001 年累积 |
| 数据大小 | 未公布固定总量(按研究项目定制提取交付) |
| 数据格式 | 定制提取交付(CSV/文本/SAS 等格式,与 Socialstyrelsen 按申请约定) |
| 许可证 | 非标准公共许可证——瑞典官方保密健康数据,依《健康数据登记法》(1998:543)与《公共访问与保密法》(2009:400)管理,经审批后按项目释放 |
| 访问级别 | 申请审核(瑞典伦理审查局审批 + 向 Socialstyrelsen Registerservice 提交数据申请) |
| DUO 标签 | IRB(需伦理批准)、GS(地理/司法管辖限制:瑞典审批体系) |
| 语言 | 瑞典语(诊断与操作编码字段采用国际/北欧分类体系) |
| 首发日期 | 1964(住院登记启动)/ 1987(住院全国覆盖)/ 2001(纳入专科门诊登记) |
| 最后更新 | 持续更新(各省级机构与私立提供方每月上报) |
| 发布机构 | 瑞典国家卫生福利委员会(Socialstyrelsen / National Board of Health and Welfare) |
| 官方主页 | Socialstyrelsen — National Patient Register |
| 下载地址 | 无公开下载(经审批定制交付;见 §6.2 申请流程) |
| DOI | 无数据集 DOI;权威描述文献 DOI 10.1186/1471-2458-11-450(Ludvigsson et al. 2011) |
| AI 就绪度评分 | ⭐⭐(2/5)— 数据质量与验证证据一流、长时程全国覆盖;扣分项:无公开下载包、无预处理脚本、无官方划分,须经审批定制提取后自行构建分析数据集 |
| 页面状态 | published |
§0 E-E-A-T 信任声明与免责声明
医学审核者:千方病案医学编辑部交叉审核:§2 医学背景(ICD-10-SE 与 ICD-11/SNOMED CT 映射、登记覆盖范围与临床任务定义、金标准描述)、§7 偏倚分析。
数据工程审核者:千方病案医学编辑部交叉审核:§4 DAIMS 数据字典(登记字段体系、encounter 级主键)、§5 数据划分策略、§6 预处理 Pipeline 和坑点。
审核日期:2026-09-05
审核方式:交叉审核
利益冲突声明:千方病案医数集与 Socialstyrelsen、瑞典伦理审查局无任何商业利益关联。本页面不销售或转售 Swedish NPR 数据,仅提供 AI 就绪指南与学术信息服务。编辑者未接受相关机构的任何形式资助。
医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。
技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方病案医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。
数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。Swedish NPR 要求研究经瑞典伦理审查局(Swedish Ethical Review Authority)审批,并向 Socialstyrelsen Registerservice 提交个体级数据申请(审批后一般 3-6 个月处理,按小时计费)。DUO 标签仅供参考,具体使用限制以瑞典官方法规与审批决定为准。
§1 数据集概览
§1.0 30 秒速览
这是什么? 瑞典国家患者登记(Swedish NPR,瑞典语 Patientregistret)是瑞典全国性的专科照护登记,由瑞典国家卫生福利委员会(Socialstyrelsen)管理。它记录了每一次住院出院(1964 年起,1987 年起全国完整覆盖)和每一次专科门诊医生诊疗(2001 年起,含日间手术与精神科门诊),每条记录带 ICD 诊断码、KVÅ 操作码和入出院日期。初级保健不在其覆盖范围内。
为什么重要? 它是世界上运行时间最长的全国患者登记之一——住院数据从 1964 年至今从未中断,覆盖约 1,050 万人口。所有医师(公立与私立)依法强制上报,当前超过 99% 的躯体与精神科出院记录被纳入。借助瑞典全民统一的个人编号(personnummer),它可以与癌症登记、死因登记、处方药物登记等十几个国家级登记个体级链接,支撑覆盖整个人群数十年的随访研究。
我能用它做什么? 构建全人群疾病队列、定义结局事件、估计发病率与患病率的长期趋势、做药物安全性研究、训练疾病表型识别与风险预测模型。注意:它不是"下载数据集",而是需要伦理审批后向官方申请定制提取的登记数据。
§1.1 摘要
Swedish NPR 是一个行政登记型数据源而非打包发布的 ML 数据集。其数据由瑞典 21 个省(region)及私立提供方每月上报至 Socialstyrelsen,含患者身份、诊断(主诊断+辅诊断)、操作、机构与行政信息四组变量。登记内部经历了 ICD-7(1964-1967)、ICD-8(1968/1969-1986)、ICD-9(1987-1996)、ICD-10-SE(1997 起)四次编码体系切换,操作编码亦从 K06(1963-1996)经 NOMESCO 改编版(1997)演进至现行的 KVÅ 分类。验证证据充分:2011 年对 132 篇验证文献的系统回顾显示住院诊断 PPV 一般为 85-95%;2025 年纳入 89 项研究的更新版综述(首次含专科门诊数据)报告诊断码中位 PPV 84%(IQR 72-93%)、手术操作中位 PPV 97%(IQR 86-99%)、对其他登记/队列的中位敏感度 73%(IQR 45-80%)。对 AI 而言,它最适合作为全人群级别、长时程的标签源与队列底座,而非即插即用的训练集(Socialstyrelsen 官方页;Ludvigsson et al. 2011;2025 更新版综述)。
§1.2 战略价值
维度一:时间深度。 住院登记自 1964 年运行,是世界上少数提供六十年连续住院记录的全人群数据源。芬兰登记 1969 年起、丹麦 1977 年起、冰岛 1999 年起、挪威 2008 年起(Laugesen et al. 2022)。对于研究疾病自然史、早期暴露-远期结局关联(如围产期因素与成年期疾病),这段 1964-1987 年间的独有数据几乎无法替代——但必须理解该时期覆盖率从 6% 逐步爬升的历史(详见坑点 1)。
维度二:链接生态。 瑞典法律要求所有医疗文档以个人编号(personnummer,PIN)登记。经伦理审批后,NPR 可与癌症登记(1958 年起)、死因登记、处方药物登记(2005 年 7 月起)、LISA 社会经济登记、总人口登记等个体级链接,形成"一个人从出生到死亡的全轨迹"研究能力(BMJ Open 2018 队列构建实例;DELIVER 队列 2022)。统计局以序列号替换 PIN 交付研究者,密钥由统计局保管(研究者不可访问),使大规模个体级分析在合规框架内可行。
维度三:验证文化。 相比多数行政数据源,NPR 拥有罕见的验证文献密度——2011 年系统回顾梳理 132 篇验证研究,2025 年更新版再纳入 89 项(含门诊数据)。这意味着 AI 团队在把 NPR 用作标签源时,可以站在大量已发表的 PPV/敏感度证据上做病种级别的可行性判断,而不是盲目试错。
维度四:方法论透明度。 Socialstyrelsen 公开登记的生产与质量文档(编码年表、质检规则、去重机制、滞后原因),配合官方统计的免费汇总产出,使得研究者在申请个体数据之前就能完成大部分可行性论证——这是许多国家登记体系不具备的透明度水平。对 AI 项目而言,"先论证后申请"能显著缩短从立项到拿到数据的周期。
§1.3 同类数据集横向对比
| 数据集 | 规模 | 模态 | 诊断标注 | 差异化 |
|---|---|---|---|---|
| Swedish NPR | 约 1,050 万人口;约 150 万住院出院/年 | 结构化登记(诊断+操作+行政) | ICD-7/8/9/10-SE,住院 1964 起、门诊 2001 起 | 时间跨度最长;验证文献最密;审批制定制提取 |
| 丹麦 DNPR | 约 558 万(2012 年);1977-2012 年登记 8,085,603 人 | 结构化登记 | ICD-8/ICD-10,住院 1977 起、门诊+急诊 1995 起 | 与 NPR 结构最接近的对照组;PPV 跨病种差异极大(<15%-100%) |
| 芬兰 Care Register | 约 550 万人口 | 结构化登记 | ICD,住院 1969 起 | 北欧次早;验证 PPV 多在 75-99% |
| 英国 CPRD | 约 6,000 万人口中抽样式基层样本 | 初级保健 EHR | Read/ICD-10,1987 起 | 覆盖初级保健(NPR 缺失的部分),但为选样 GP 诊所数据 |
| MIMIC-III | 46,520 名患者 / 58,976 次住院 | ICU 高频时序+文本 | ICD-9/10 编码+结构化生命体征 | 单院深颗粒度 vs NPR 全人群广颗粒度;开放申请 vs 官方审批 |
关键结论:NPR 与 MIMIC-III 互为互补——前者提供全人群长时程"广度",后者提供单次住院内高频监护"深度"。与丹麦 DNPR 的详细对比见 §8.4 与坑点 4(Schmidt et al. 2015)。
选择建议:如果你的研究问题是"某病在全人群中的长期结局/趋势/药物安全",NPR 类登记是正解;如果是"单次危重住院内的精细生理预测",MIMIC 类 ICU 库是正解;如果两者都要(如"ICU 救治后的十年生存"),考虑登记+ICU 库的链接或分阶段设计。
§1.4 版本时间轴
| 时间 | 事件 | 对使用者的含义 |
|---|---|---|
| 1962 | Socialstyrelsen 开始收集精神科住院数据 | 1990 年代登记重建时,1973 年前精神科数据被删除,不可用 |
| 1964 | 住院登记(IPR)在 6 个省启动,覆盖约 6% 人口 | 1964-1986 年为渐进覆盖期,需做覆盖率校正 |
| 1964-1967 | 采用 ICD-7(瑞典改编) | 最早年代诊断码体系与现代差异最大 |
| 1968 / 1969 | ICD-8 于 1968 年并行过渡,1969-1986 全面使用 | 1968 年为 ICD-7/8 混存年 |
| 1973 | 精神科诊断纳入(当年覆盖 86%) | 精神科纵向研究最早从 1973 年起算 |
| 1984 | 政府决定强制所有省参与 | 覆盖率 86% 的关键一年 |
| 1987 | 住院登记全国全覆盖 | 全人群发病率研究的推荐起点 |
| 1987-1996 | ICD-9 时期 | 与 ICD-8 之间需跨版本映射 |
| 1993 | 政府宣布 IPR 以 personnummer 为唯一标识 | 1993 年后各省重建 1984-91 年记录(2 个省缺 1985 年) |
| 1997 | ICD-10-SE 与 NOMESCO 改编手术分类启用;日间手术纳入上报 | Skåne 省 1997 全年仍用 ICD-9(该省人口占 8-9%) |
| 2001 | 专科门诊医生诊疗纳入(公立+私立) | 门诊结局研究最早从 2001 年起算 |
| 2007 | 内科操作(KMÅ)由非强制转为强制上报 | 2007 年前操作数据仅外科(KKÅ)相对完整 |
| 2009/2010 | 强制精神科照护数据上报(2009 起)/ 纳入登记(2010 起) | 早期质量经官方评估不宜直接用于研究 |
| 2015 | 急诊后收住院须同时记门诊+住院两条记录 | 2015 前后急诊相关频数不可直接比较 |
| 2016 | 急诊等待时间数据纳入;急诊时间点变量质量尚可 | 急诊流程研究最早自 2016 年起算 |
| 2024 | 精神科门诊非医生专业人员诊疗纳入 | 医生视角的门诊口径与全人员口径并存 |
来源:Socialstyrelsen 官方页、Socialstyrelsen 生产与质量 PDF、Ludvigsson et al. 2011。
§1.5 典型应用场景
- 全人群疾病队列与自然史:以首次诊断码为索引日期构建全国队列,匹配参照个体,随访数十年结局(如 DELIVER 肝病队列)。
- 发病率/患病率长期趋势:1987 年后全国覆盖期内的时序分析,用于卫生规划与疾病负担估计。
- 药物警戒:NPR 结局 × 处方药物登记暴露(2005 年 7 月起),做大样本安全性信号验证。
- 手术操作结局研究:KVÅ 编码支撑手术质量与并发症研究——IBD 相关手术编码 PPV 96.8%、敏感度 94.5%(Forss et al. 2019)。
- AI 标签源与表型队列:为机器学习模型提供全人群级疾病标签( phenotype definitions),再与其他数据源(基因组、问卷、生物样本库)链接训练预测模型。
- 登记式自然实验:利用政策/地区差异做因果推断——瑞典统一登记+分省实施差异(如药物报销门槛、组织改革时点)为断点/双重差分设计提供了高质量分组变量,这是单中心数据无法支持的因果研究范式。
一个反例提醒:NPR 不适合回答"初级保健利用与轻症管理"类问题——相关接触根本不在库里。立项前先确认研究问题的暴露与结局都落在"专科照护"的覆盖范围内,能省掉大量返工。
§2 医学背景
§2.1 ICD-11 与 SNOMED CT 映射
NPR 原生编码为 ICD-10-SE(1998 年起标准化)与更早版本;跨数据源训练或与 ICD-11 原生系统对接时需自行建立映射。下表给出 NPR 研究中高频病种的 ICD-10 → ICD-11 → SNOMED CT 参考映射(ICD-10 码即 NPR 1997/1998 年后记录的码值)。
ICD-11 映射表
| 疾病标签 | NPR 中 ICD-10 码 | ICD-11 码 | ICD-11 中文名 |
|---|---|---|---|
| 急性心肌梗死 | I21 | BA41 | 急性心肌梗死 |
| 心力衰竭 | I50 | BD10 | 心力衰竭 |
| 脓毒症 | A41 | 1G40-1G4Z | 脓毒症(区间) |
| 1 型糖尿病 | E10 | 5A14 | 1 型糖尿病 |
| 精神分裂症 | F20 | 6A20 | 精神分裂症 |
| 阿尔茨海默病痴呆 | F00/G30 | 6D86 | 阿尔茨海默病 |
| 乳腺癌 | C50 | 2C61 | 乳腺癌 |
| 克罗恩病 | K50 | DD70 | 克罗恩病 |
| 溃疡性结肠炎 | K51 | DD71 | 溃疡性结肠炎 |
SNOMED CT 映射表
| 疾病标签 | ICD-11 码 | SNOMED CT 码 | SNOMED 术语 |
|---|---|---|---|
| 急性心肌梗死 | BA41 | 22298006 | Myocardial infarction |
| 心力衰竭 | BD10 | 48447003 | Heart failure |
| 脓毒症 | 1G40-1G4Z | 91302008 | Sepsis (disorder) |
| 1 型糖尿病 | 5A14 | 46635009 | Diabetes mellitus type 1 |
| 精神分裂症 | 6A20 | 58214004 | Schizophrenia (disorder) |
| 阿尔茨海默病 | 6D86 | 26929004 | Alzheimer disease |
| 乳腺癌 | 2C61 | 254837009 | Malignant neoplasm of breast |
| 克罗恩病 | DD70 | 34000006 | Crohn disease |
| 溃疡性结肠炎 | DD71 | 64560004 | Ulcerative colitis |
两点工程提醒:其一,ICD-10-SE 含"表现-病因"(dagger-asterisk,剑号-星号)双编码机制,例如晚发性阿尔茨海默痴呆可记为 F00.1*(表现)+ G30.1†(病因),映射到 ICD-11/SNOMED 时应先做码对拆解(Socialstyrelsen 生产与质量 PDF);其二,1997 年前的 ICD-8/ICD-9 记录需先映射到 ICD-10 再走上表路径,官方未提供完整自动映射表。
§2.2 疾病谱简介与覆盖特征
NPR 覆盖专科照护接诊的全疾病谱,但覆盖深度因病种而异。住院部分对急重症、手术、损伤中毒、精神科住院的捕捉近乎完整(当前 >99% 出院记录纳入);门诊专科部分(2001 起)对需专科随访的慢病(炎症性肠病、风湿病、癫痫、肿瘤随访等)覆盖良好,而对主要在初级保健管理的疾病(高血压、轻症抑郁、糖尿病常规管理)系统性低估——这些患者只有出现专科接诊时才会进入登记。
| 病种域 | 住院覆盖(1964/1987 起) | 专科门诊覆盖(2001 起) | 补充来源建议 |
|---|---|---|---|
| 急重症(心梗、卒中、脓毒症) | 优 | 优(急诊后住院) | 死因登记复核致死性事件 |
| 手术与操作 | 优(外科码 1963/1997 起) | 优(含日间手术) | — |
| 精神障碍(住院) | 优(1973 起;1973 前已删除) | 良 | 强制照护子库 2010 起 |
| 炎症性肠病等专科慢病 | 优 | 优 | 患者组织质量登记补深度 |
| 肿瘤 | 良(诊疗接触) | 良 | 癌症登记(1958 起)更优 |
| 传染病 | 中 | 中 | 传染病法定登记更优 |
| 慢病常规管理(高血压等) | 差(仅并发症住院) | 差 | 处方药物登记(2005.7 起)间接推断 |
| 产科/新生儿 | 良 | 良 | 医学出生登记补孕产细节 |
例如炎症性肠病在瑞典患病率约 0.65%,其识别算法需 ≥2 次诊断条目以保证特异度(Forss et al. 2019;2025 更新版综述)。肿瘤、传染病等病种另有专门国家级登记(癌症登记 1958 年起)作为更优来源,Ludvigsson 等在 2011 年综述中明确建议这些领域优先使用专门登记。
§2.3 临床任务定义
| 任务类型 | 定义 | 在 NPR 中的实现方式 |
|---|---|---|
| 疾病表型识别 | 从编码序列判定个体是否患病 | 验证过的 ICD 码组合/算法(如 IBD ≥2 次诊断条目) |
| 结局事件定义 | 为生存分析定义事件 | 首次符合算法的住院/门诊记录日期 |
| 发病率估计 | 全人群新发病例速率 | 1987 年后全国覆盖期,按索引日期计数 |
| 手术操作研究 | 操作暴露与短期/远期结局 | KVÅ 码(1997 起 NOMESCO 体系)+ 出院日期 |
| 风险预测标签 | 为 ML 提供结局标签 | 以验证 PPV 估计标签噪声并做敏感性分析 |
| 登记式自然实验 | 利用政策/地区差异做因果推断 | 跨省/跨时期比较+链接社会经济登记 |
§2.4 患者人群构成
| 维度 | 描述 |
|---|---|
| 来源 | 瑞典全部专科照护接诊(公立+私立),住院 1964 起、专科门诊 2001 起 |
| 时间跨度 | 1964 至今(持续更新) |
| 年龄 | 全年龄段(含儿科与老年;登记无年龄上限) |
| 性别 | 全部;personnummer 编码含性别信息 |
| 种族/民族 | 登记不直接记录种族;出生国与移民背景可经总人口登记/LISA 链接获得 |
| 就医类型 | 住院出院、专科门诊医生诊疗(含日间手术)、强制精神科照护(2010 起)、急诊(2016 起等待时间) |
| 地域 | 瑞典 21 个省,1987 年起全国全覆盖 |
§2.5 临床与科研价值
对临床 AI 而言,NPR 的核心价值是"全人群、全时段、可链接"的真实世界标签层:任何在瑞典开展的临床试验、队列或生物样本库子研究,几乎都可以回链到数十年前的住院史与前瞻延展的结局事件。这使它成为 rare exposure(罕见暴露)、long latency(长潜伏期)、multiple outcomes(多结局)研究的首选底座。北欧五国登记体系的同构性(约 2,700 万人口)还支持跨国复制验证——同一算法在瑞典与丹麦同时检验,是泛化性评估的天然试验场(Laugesen et al. 2022)。
§2.6 金标准与验证方法
| 要素 | 描述 |
|---|---|
| 验证金标准 | 患者病历回顾(chart review)为主;部分研究用其他登记/独立队列作参照 |
| 标注方式 | 研究者按预定义诊断标准独立复核病历,计算 PPV(登记码正确概率)与敏感度 |
| 标注者资质 | 各专科临床医生/研究团队按国际公认诊断标准判读 |
| 验证密度 | 2011 年综述 132 篇(住院);2025 年更新综述 89 项(含门诊) |
| 关键结论 | 住院诊断 PPV 一般 85-95%(中位 84%);手术操作中位 PPV 97%;敏感度中位 73% |
性质说明:NPR 的"标注"是行政编码而非研究标注——由主治医生负责填写诊断、编码员按体系归类,且主诊断由主治医生决定,跨专科就诊时可能不一致。这一点对所有标签工程有直接影响(详见坑点 5)。
§3 数据集规格
§3.0 版本/时间窗抉择矩阵
NPR 无"版本号",但时间窗选择等效于版本选择。申请数据前先对号入座:
| 你的需求 | 推荐时间窗 | 大小预期 | 理由 |
|---|---|---|---|
| 全人群发病率/患病率趋势 | 1987 年至今 | 大(约 150 万出院/年+门诊) | 1987 起住院全国全覆盖,无需覆盖率校正 |
| 长潜伏期暴露-结局研究 | 1973/1987 年起+链接出生/普查登记 | 大 | 1964-1986 渐进覆盖期须做敏感性分析(坑点 1) |
| 门诊专科接触结局 | 2001 年至今 | 中 | 2001 前无门诊记录;初期主诊断缺失较多 |
| 手术操作研究 | 1997 年至今 | 中 | NOMESCO/KVÅ 体系启用;2007 年起内科操作才强制(坑点 7) |
| 药物-结局联动 | 2005 年 7 月至今 | 中 | 与处方药物登记(Prescribed Drug Register)链接的起点 |
| 精神科纵向研究 | 1973 年至今 | 中 | 1973 年前精神科数据已于重建时删除 |
| 急诊流程研究 | 2016 年至今 | 小 | 急诊时间点变量自 2016 年质量尚可 |
§3.1 模态详情
诊断编码(核心模态)。 每条照护记录含 1 个主诊断+多个辅诊断,编码体系按年代为:ICD-7(1964-1967)、ICD-8(1968 并行过渡,1969-1986 全面使用)、ICD-9(1987-1996)、ICD-10-SE(1997 起;Skåne 省 1997 全年仍为 ICD-9)。ICD-10-SE 为瑞典本地化版本,含剑号-星号(病因-表现)双编码。
操作编码。 外科操作 1963-1996 年用 Classification of Operations(K06)第六版,1997 年起改用 NOMESCO 手术分类的瑞典改编版并纳入日间手术上报;现行 KVÅ(klassifikation av vårdåtgärder)= KKÅ(外科)+ KMÅ(内科操作)+ 放射编码(1991 分类)+ 行政代码。2007 年前仅外科操作强制上报。NordDRG 为由诊断+操作推导的二次分组(非上报字段)。
行政与时间字段。 入院/出院或就诊日期、医院与科室代码、医护类型、省份;2016 年起含急诊时间点变量。数据由 21 个省及私立提供方每月上报,含 encounter 级唯一标识(vtf_id)(Socialstyrelsen 生产与质量 PDF)。
§3.2 子集与记录规模
| 子集 | 起始年份 | 规模 | 备注 |
|---|---|---|---|
| 住院出院登记 | 1964(全国 1987) | 约 1,500,000 例出院/年 | 多数为躯体照护;>99% 当前覆盖率 |
| 专科门诊登记 | 2001 | 未公布统一年度总量 | 含日间手术、精神科门诊;仅医生诊疗;启动年主诊断缺失较多 |
| 强制精神科照护 | 2010(上报 2009 起) | 未公布 | 官方评估早期质量不宜直接研究 |
| 急诊等待时间 | 2016 | 未公布 | 时间点变量质量自 2016 年尚可 |
| 精神科门诊非医生诊疗 | 2024 | 未公布 | 新增口径,与医生门诊并存 |
§3.3 数据格式
| 环节 | 格式 |
|---|---|
| 各省/私立上报 | 按官方规定格式(含 encounter ID)月度报送 |
| 官方质检 | 合理性校验(区域/年份对比)+ encounter ID 唯一性检查;无个人级重复检查 |
| 官方统计产出 | 基于 NPR 的官方统计域(疾病与症状、手术与治疗、强制精神科照护、损伤中毒、急诊等待、心梗、卒中等) |
| 研究交付 | 定制提取,CSV/文本/SAS 等按申请约定;个人编号以序列号形式交付 |
§3.4 存储与体量
官方未公布登记总大小。以每年约 150 万例住院出院、每例含多条诊断/操作码估算,数十年累积的住院部分为十亿行级的关系表规模;研究提取通常按病种/时段裁剪后交付,单项目提取包多为 MB 至 GB 级。申请时可在项目中明确字段与年份范围以控制体量。体量估算的三个锚点:①住院约 1,500,000 出院/年;②每例平均携带多条辅诊断与 0-n 条操作码(行数放大 2-5 倍);③门诊 2001 年后接触量随年份增长,近年在部分病域超过住院量级。
§3.5 标注方式
非研究标注,而是行政编码:主治医生决定主诊断并填写诊断,医疗机构编码员按 ICD/KVÅ 体系归类;上报为法定义务(初级保健除外)。因此"标签"的性质是报销+统计导向的编码,而非为研究设计的诊断判定——编码模式可受报销激励影响(2025 更新版综述)。
§3.6 标注者资质与一致性
填写者为执业医师(公立/私立),归类者为医疗机构编码人员。一致性无跨机构统一考核,但国家层面的合理性校验(区域/年度频数对比、主诊断有效率检查)构成兜底:可疑数据会被退回要求重报。诊断级一致性由验证文献间接刻画(PPV 85-95%)。
一致性风险的两个结构性来源:其一,编码文化存在机构差异——不同医院对辅诊断的填写积极程度不同,导致辅诊断完整度不可跨机构直接比较;其二,时代差异——早期年代编码依赖纸质流程,1993 年 PIN 化重建后的记录质量普遍优于更早年代。跨年代/跨机构建模时应把这两个维度作为协变量显式纳入。
§3.7 采集周期与更新节奏
月度上报;官方按月/年做频数合理性检查,重大偏差触发重报。注意登记存在更新滞后:完整年度数据需数年后才趋稳定,早期年份仍可能被回填修订——跨时期比较时应锁定提取日期(坑点 8)。
更新节奏的实用时间线(研究者视角):
| 时点 | 状态 | 建议 |
|---|---|---|
| 参考年当年 | 月度滚动入库,数据不完整 | 不用于分析 |
| 参考年+1 至 +2 | 年度完整交付与合理性检查 | 谨慎使用,标注"初步" |
| 参考年+3 起 | 趋于稳定,仍有回填可能 | 常规研究可用 |
| 任意时点 | 官方可要求提供方重报历史区间 | 关键结论双快照对比 |
§3.8 地域覆盖
瑞典全国 21 个省。住院覆盖按省逐级扩展:1964 年 6 省(约 6% 人口)→1972 年 36%→1976 年 >50%→1982 年 71%→1984 年 86%→1987 年 100%;精神科 1973 年 86%→1985 年 94%。1997 年编码体系切换时 Skåne 省(约 8-9% 人口)滞后一年。地域维度的三个研究用法:①做覆盖率校正的分母(省×年×年龄组人口来自总人口登记);②跨省自然实验的分组变量(如政策 rollout 差异);③机构地理编码的基础(hospital_code ↔ 省份映射)。
§3.9 机构与设备信息
登记不记录监护仪/影像设备等技术参数(区别于 ICU 数据库)。机构维度提供医院代码、科室/医护类型、所在省,可支撑跨机构质量比较。需要设备级细节的研究应将 NPR 用作结局/队列层而非暴露测量层。
§3.10 深度溯源链
医护填写诊断 → 医疗机构编码并月度上报 → Socialstyrelsen 质检(encounter ID 唯一性+合理性对比,可疑退回重报)→ 年度归档与统计产出 → 研究者经伦理审批+申请获得序列号化的定制提取。完整变量清单以官方变量列表(variable list)为准(Socialstyrelsen 官方页)。
§4 数据结构
§4.0 交付包目录树
NPR 无固定公开目录结构;经审批交付的研究提取通常形如下述(实际文件名与格式以与 Socialstyrelsen 约定的交付规范为准):
npr_extract/
├── README_extract.txt # 交付说明:提取日期、变量清单、编码版本说明
├── inpatient_1987_2024.csv # 住院出院记录:一行为一次出院
│ ├── person_serial # 个体序列号(personnummer 已替换)
│ ├── vtf_id # 照护接触唯一标识
│ ├── admission_date / discharge_date
│ ├── main_diagnosis # 主诊断(ICD 码,随年代变化)
│ ├── diag_2 ... diag_n # 辅诊断
│ ├── proc_1 ... proc_n # 操作码(KKÅ/KVÅ)
│ ├── hospital_code / county
│ └── care_type # 照护类型(躯体/精神科等)
├── outpatient_2001_2024.csv # 专科门诊记录:一行为一次医生诊疗
│ ├── person_serial / vtf_id
│ ├── visit_date
│ └── main_diagnosis / diag_2 ...
├── procedures_1997_2024.csv # 操作明细:一行为一个操作
│ └── procedure_code / procedure_date
└── linkage_keys/ # 与其他登记链接所需的序列号对照(按项目交付)
§4.1 DAIMS 字段字典(核心字段)
命名说明:下表为交付变量按功能归类后的通用命名;实际交付的原始变量名(瑞典语缩写体系)以当次申请的官方变量清单为准。
| 字段名 | 类型 | 说明 | 示例值 | AI 用途 | 观测误差 | 信息性缺失编码 | 取值范围 |
|---|---|---|---|---|---|---|---|
| person_serial | 文本 | 个体序列号(personnummer 替换后) | 4501011234 | 个体级聚合/划分主键 | 极低(法定 PIN 登记) | 无 | 全国唯一 |
| vtf_id | 文本 | 照护接触唯一标识(encounter ID) | 12345678 | 去重/连接诊断与操作 | 低(官方唯一性检查) | 无 | 全局唯一 |
| admission_date | 日期 | 入院日期 | 2015-03-12 | 时序建模/随访起点 | 低 | 无 | 1964-至今 |
| discharge_date | 日期 | 出院日期 | 2015-03-19 | 住院时长/结局时点 | 低 | 无 | ≥入院日 |
| main_diagnosis | 文本 | 主诊断码(ICD-7/8/9/10-SE 按年代) | K50.9 | 标签源 | 跨专科主诊断不一致;早期版本码值不同 | 门诊启动年缺失多 | ICD 全码空间 |
| diag_2…diag_n | 文本 | 辅诊断码 | E11.5 | 合并症/表型丰富化 | 辅诊断完整度低于主诊断 | 空=未记录 | ICD 全码空间 |
| procedure_code | 文本 | 操作码(K06→NOMESCO/KVÅ) | JDB23 | 手术暴露/事件 | 2007 前内科操作不强制;私立漏报 | 空=无操作上报 | KVÅ 码空间 |
| hospital_code | 文本 | 机构代码 | 10012 | 机构聚类/跨院去重 | 机构改组致码值变迁 | 无 | 官方机构表 |
| care_type | 分类型 | 照护类型(躯体/精神科等) | somatic | 分层分析 | 口径随年份微调 | 无 | 官方类别表 |
| specialty_code | 分类型 | 科室/专科代码 | 110 | 来源专科分层(主诊断偏倚校正) | 专科目录随年代调整 | 无 | 官方专科表 |
| day_surgery_flag | 布尔 | 日间手术标志(1997 起) | 1 | 手术场景分层 | 1997 前无此口径 | 无 | 0/1 |
| county | 分类型 | 省份(21 个) | 12 | 覆盖率校正/地区分层 | 无 | 无 | 1-25(省码) |
| ed_wait_time | 数值 | 急诊等待时间(2016 起) | 45 | 急诊流程研究 | 早期年份部分省待改善 | 空=无急诊环节 | 分钟 |
§4.2 标签分布特征
诊断码分布高度长尾:常见病(循环系统、损伤中毒、消化系统、精神障碍)占据主要频数,罕见病码值极度稀疏。官方未发布全库码值频数表;研究通常先对自己的提取包做码值分布审计,再决定是否按"验证过的算法"而非单码定义标签。病种级参考点:IBD 患病率约 0.65%(算法 ≥2 次诊断条目);肝病(HCC/肝硬化)PPV >90%(DELIVER 2022)。
# 码值分布审计三步(对任意提取包):
# 1) 长尾诊断:统计 main_diagnosis 前 3 位类目码频数,识别稀疏类目
# freq3 = df["main_diagnosis"].str[:3].value_counts()
# sparse = freq3[freq3 < 50] # 建议聚类的罕见类目
# 2) 年代断层:按 (year, icd_version) 交叉计数,定位编码切换年异常
# pivot = df.pivot_table(index="year", columns="icd_version",
# values="vtf_id", aggfunc="count")
# 3) 缺失画像:门诊主诊断缺失率按年份绘制,验证 2001-2005 改善曲线
# miss = df.groupby("year")["main_diagnosis"].apply(lambda s: s.isna().mean())
§4.3 关键统计
| 统计项 | 数值 | 来源 |
|---|---|---|
| 覆盖人口 | 约 1,050 万 | Socialstyrelsen |
| 年住院出院量 | 约 1,500,000 例 | DELIVER 2022 |
| 当前出院记录纳入率 | >99%(躯体+精神科) | Ludvigsson et al. 2011 |
| 住院诊断 PPV | 一般 85-95%;2025 综述中位 84%(IQR 72-93%) | 2011 综述;2025 综述 |
| 手术操作中位 PPV | 97%(IQR 86-99%) | 2025 综述 |
| 诊断/操作中位敏感度 | 73%(IQR 45-80%) | 2025 综述 |
| IBD 手术编码 PPV/敏感度/特异度 | 96.8% / 94.5% / 98.5% | Forss et al. 2019 |
躯体照护人口覆盖率历史序列(住院部分,人口加权):
| 年份 | 覆盖率 | 年份 | 覆盖率 |
|---|---|---|---|
| 1964 | 6% | 1982 | 71% |
| 1972 | 36% | 1984 | 86% |
| 1976 | >50% | 1987 | 100% |
精神科覆盖率:1973 年 86% → 1985 年 94% → 当前 >99%。序列来源:Ludvigsson et al. 2011 图 2/图 3。
§4.4 数据层级
个体(person_serial)
└── 照护接触(vtf_id;住院出院 / 专科门诊)
├── 主诊断(1 条)
├── 辅诊断(0-n 条)
├── 操作记录(0-n 条;KVÅ)
└── 行政字段(机构、省份、日期、类型)
AI 建模的最常见单元是"个体×时间窗":将接触级记录聚合为个体级暴露/结局时间线。注意同一 encounter 的诊断与操作通过 vtf_id 连接,而没有个人级重复检查——同一人在不同 encounter 的记录天然多次出现(坑点 6)。
聚合模式速查:
| 建模单元 | 聚合方式 | 典型用途 |
|---|---|---|
| 接触级(encounter) | 一行一次住院/门诊 | 再住院预测、住院时长 |
| 个体-年 | 按 person_serial×year 聚合 | 发病率分母/分子、年度利用指标 |
| 个体-生命线 | 全史按时间排序的码序列 | 纵向表型、时序模型 |
| 队列 | 索引日期+入排标准切片 | 登记式队列研究 |
| 配对集 | 病例+匹配参照 | 病例-参照分析 |
§4.5 缺失值与信息性缺失
| 缺失类型 | 范围 | 处理建议 |
|---|---|---|
| 门诊主诊断缺失 | 2001 年启动初较多,此后大幅改善 | 2001-2005 年门诊结局做敏感性分析 |
| 内科操作(KMÅ)缺失 | 2007 年前非强制上报 | 操作研究限外科码或 2007 年后 |
| 私立机构漏报 | 门诊高于住院 | 按机构类型分层评估 |
| 给药/药物操作码缺失 | 特定变量系统性缺失 | 药物暴露改用处方药物登记 |
| 早期年代记录缺失 | 1964-1986 覆盖率 6%→86% | 覆盖率加权/起点后移 |
官方不做插补;“空"即"未上报”,在操作字段中属信息性缺失(无操作 vs 有操作未上报不可区分),建模时不可当作"阴性标签"直接使用。
§5 数据划分与使用建议
§5.1 官方划分
不存在。NPR 是全人群登记而非 ML 基准数据集,官方仅提供数据访问,不提供训练/验证/测试划分。
§5.2 社区惯例
登记研究以流行病学设计为主(队列、病例对照、自身对照),一般不做 ML 式划分。近年 ML 研究的通行做法是:按个体序列号哈希划分(如 70/15/15),并以时间外推集(train 前、test 后)评估部署性能。此外两种常见设计值得注意:①病例-参照抽样(incidence density sampling)——为每个病例按风险集匹配参照个体,使优势比可直接解释为发病率比,是登记研究的经典匹配策略;② sibling/family 设计——利用家庭链接控制共享混杂,NPR 可经亲属关系链接支持此类设计。
§5.3 划分策略与泄漏风险(重点)
- 个体级泄漏(最严重):同一人多次住院/门诊遍布全库。若按记录随机划分,患者的历史同时出现在 train 与 test,AUC 虚高。必须按 person_serial 划分。
- 时间泄漏:结局定义窗口若覆盖预测时点之后(如用全年诊断预测年初风险),构成标签泄漏。采用"过去窗口→未来事件"的前向切片,并保留时间外推测试集。
- 机构泄漏:编码风格与主诊断选择因机构而异。跨机构泛化评估时按医院划分测试集。
- 链接泄漏:与其他登记链接后,社会经济等静态特征可能间接编码时间信息,划分前应审视特征时间戳。
§5.4 交叉验证建议
按个体分组 K 折(GroupKFold over person_serial);若做时序模型,改用前向链时序 CV(expanding window),确保每折训练早于验证。
# 个体级分组 K 折 + 前向时序校验的组合模板
import pandas as pd
from sklearn.model_selection import GroupKFold
gkf = GroupKFold(n_splits=5)
X = rec[["year", "los_days", "dx3_id"]].to_numpy()
y = rec["label"].to_numpy()
groups = rec["person_serial"].to_numpy()
for k, (tr, va) in enumerate(gkf.split(X, y, groups)):
# 在 va 折内再做时间外推:验证期必须晚于训练期最后日期
tr_end = rec.iloc[tr]["discharge_date"].max()
va = va[rec.iloc[va]["discharge_date"].to_numpy() > tr_end]
print(f"fold {k}: train n={len(tr)}, time-safe val n={len(va)}")
§5.5 外部验证建议
优先级依次为:丹麦 DNPR(结构最近、1995 年起含门诊)、芬兰 Care Register(1969 起)、挪威/冰岛登记;跨国算法研究可复用北欧同构编码体系。注意各国 ICD 版本年代不同——同一 ICD-10 码在丹麦与瑞典的启用年份不完全一致,映射须按各国年表(§7.8)。
跨国算法一致性检查清单:
- 启用年表对齐:瑞典 ICD-10 自 1997(Skåne 1998)起,丹麦自 1994 年前后切换——跨国同病种比较时先对齐编码时段窗口。
- 算法定义对齐:同一疾病在各国文献使用的最小诊断条目数不同(瑞典 IBD ≥2 次 vs 丹麦 ≥1 次,2025 综述)。
- 覆盖范围对齐:瑞典/丹麦登记均不含初级保健,与加拿大/以色列类数据库(含初级保健)比较时须解释算法复杂度差异。
- 验证证据移植:优先引用各国各自的验证研究 PPV,而非假定同码同质量。
§6 AI 就绪指南
§6.0 云端快速启动
不适用:NPR 为审批制登记数据,无官方云镜像/BigQuery 公共表。云端可行的部分是分析环境:获得提取包后,将去标识化 CSV 上传至所在机构获批的安全计算环境或官方授权的远程访问环境,禁止上传至未获审批的第三方云盘。本章代码均假设你在合规环境中运行。
阅读本章的两种路径:
- 快速通道(已有提取包,目标病种已有验证算法):直接读 §6.1(读入)→ §6.3(版本归一)→ §6.9(标签验证),预计半天跑通基线。
- 完整通道(立项阶段):§6.2(申请准备,含 3-6 个月周期与计费)→ §6.3-§6.4(管线设计)→ §6.5 坑点(写入数据管理计划)→ §6.10(MLOps 约定),在数据交付前完成全部工程决策。
§6.1 快速上手
# ============================================================
# 快速上手:读取审批交付的 NPR 提取包
# ------------------------------------------------------------
# 目录结构预期(以你的交付规范为准,本例假设):
# data_root/
# ├── inpatient_1987_2024.csv # 住院出院:一行=一次出院
# ├── outpatient_2001_2024.csv # 专科门诊:一行=一次诊疗
# └── procedures_1997_2024.csv # 操作明细:一行=一个操作
# data_root 拼接关系:所有路径 = Path(data_root) / 文件名
# 最小可用子集:住院表 + person_serial + main_diagnosis 两列
# 即可做首个表型队列(以克罗恩病 K50 为例)。
# ============================================================
import pandas as pd
from pathlib import Path
DATA_ROOT = Path("data_root") # 改为你的提取包目录
# 瑞典语环境 CSV 常见 UTF-8;若出现 ÅÄÖ 乱码,改 encoding="latin-1"
ip = pd.read_csv(DATA_ROOT / "inpatient_1987_2024.csv", low_memory=False)
# 1) 克罗恩病候选记录(1998 年起 ICD-10-SE 稳定期,含 1997 年非 Skåne 省)
# 注意:ICD-10 码以 K 开头;主诊断或辅诊断命中均算候选(辅诊断列名以交付为准)
crohn = ip[ip["main_diagnosis"].astype(str).str.startswith("K50")]
# 2) 个体级首次诊断日期(索引日期)
first_dx = (crohn.groupby("person_serial")["discharge_date"]
.min()
.rename("index_date"))
print(f"克罗恩病候选个体数:{first_dx.shape[0]:,}")
print(first_dx.head())
§6.2 数据获取
流程一览(个体级研究数据;统计汇总另走统计订购渠道):
| 环节 | 内容 |
|---|---|
| 1 | 伦理申请:向瑞典伦理审查局提交,含科学目的、数据范围、链接登记清单、数据安全安排 |
| 2 | 数据申请:向 Socialstyrelsen Registerservice 提交,明确字段、年份范围、交付格式 |
| 3 | 处理与计费:个体级数据申请一般 3-6 个月;SEK 1,200/小时(不含 VAT),含管理、法务咨询与数据提取 |
| 4 | 交付:序列号化提取包;与其他登记的链接经统计局完成 PIN→序列号替换 |
| 5 | 归档:项目结束后按审批决定处置数据;发表时注明审批号与提取批次 |
申请材料准备清单(经验性整理,正式清单以官方现行要求为准):
- 伦理审批决定书(含批准的数据范围与链接计划)
- 研究计划书:病种、ICD 码集(分年代列出)、起止年份、所需字段
- 链接计划:拟链接的其他登记(癌症/死因/处方药物/LISA 等)及用途
- 数据安全说明:存储环境、访问人员清单、销毁计划
- 预算与经费信息(按小时计费,3-6 个月周期需计入项目排期)
# 申请前体量自查:用公开统计先估算提取规模
# Socialstyrelsen 提供基于 NPR 的官方统计(住院频次、诊断分布等),
# 可在不申请个体数据的情况下预判研究可行性。
# 建议:先下载官方统计核对目标病种年频数,再确定申请的字段范围。
§6.3 预处理全流程
# ============================================================
# 预处理:ICD 版本归一 + Skåne 1997 特例 + 个体级宽表
# 输入:data_root/ 下三张 CSV(见 §6.1 注释)
# 输出:个体级诊断时间线长表 person_diagnosis_long
# ============================================================
import pandas as pd
import numpy as np
from pathlib import Path
DATA_ROOT = Path("data_root")
ip = pd.read_csv(DATA_ROOT / "inpatient_1987_2024.csv", low_memory=False)
ip["year"] = pd.to_datetime(ip["discharge_date"]).dt.year
# ---- 步骤 1:ICD 版本标注 ----
# 官方年表:1964-1967 ICD-7;1968 并行;1969-1986 ICD-8;
# 1987-1996 ICD-9;1997 除 Skåne 外 ICD-10-SE;1998 起 ICD-10-SE
# Skåne 省码以交付变量为准(示例假设 county==12;务必核对官方省码表)
SKANE_COUNTY = 12
def icd_version(year, county):
if year <= 1967: return "ICD7"
if year == 1968: return "ICD7or8"
if year <= 1986: return "ICD8"
if year <= 1996: return "ICD9"
if year == 1997: return "ICD9" if county == SKANE_COUNTY else "ICD10"
return "ICD10"
ip["icd_version"] = [icd_version(y, c) for y, c in zip(ip["year"], ip["county"])]
# ---- 步骤 2:跨版本候选码典 ----
# 同一疾病在不同版本码不同,例:克罗恩病 ICD-9=555、ICD-10=K50
# (ICD-8 的消化细分码请对照官方历史码表核对后再入库)
CROHN_CODES = {"ICD9": {"555"}, "ICD10": {"K50"}}
def hit(code, ver, codebook):
s = str(code)
return any(s.startswith(p) for p in codebook.get(ver, set()))
ip["is_crohn"] = [
(v == "ICD10" and hit(m, v, CROHN_CODES)) or
(v == "ICD9" and hit(m, v, CROHN_CODES))
for m, v in zip(ip["main_diagnosis"], ip["icd_version"])
]
# ---- 步骤 3:去重(encounter 级已由 vtf_id 保证;个体级聚合) ----
crohn_ev = (ip[ip["is_crohn"]]
.loc[:, ["person_serial", "discharge_date", "vtf_id", "icd_version"]]
.sort_values(["person_serial", "discharge_date"]))
# IBD 验证算法惯例:≥2 次诊断条目提升特异度(见 §2.2)
n_contacts = crohn_ev.groupby("person_serial")["vtf_id"].nunique()
crohn_cases = n_contacts[n_contacts >= 2].index
person_long = crohn_ev[crohn_ev["person_serial"].isin(crohn_cases)]
print(f"≥2 次接触的克罗恩病病例:{len(crohn_cases):,}")
要点复述:版本归一先行、Skåne 1997 特判、算法化标签(≥2 条目)、一切历史码值对照官方历史码表核验。
后续可选步骤:
# ---- 步骤 4:合并门诊来源(2001 年起),补全个体的专科接触史 ----
# op = pd.read_csv(DATA_ROOT / "outpatient_2001_2024.csv", low_memory=False)
# op["year"] = pd.to_datetime(op["visit_date"]).dt.year
# op["icd_version"] = [icd_version(y, c) for y, c in zip(op["year"], op["county"])]
# 同样套用码集匹配后,与住院记录按 person_serial 纵向合并,
# 并保留 care_setting 列(inpatient/outpatient)以支持分层分析。
# ---- 步骤 5:输出分析就绪的个体级结果表 ----
# case_summary = (
# person_long.groupby("person_serial")
# .agg(first_dx=("discharge_date", "min"),
# n_contacts=("vtf_id", "nunique"),
# ever_icd9=("icd_version", lambda s: (s == "ICD9").any()))
# )
# ever_icd9 列用于提示:索引日期落在 ICD-9 时代的病例需标注码版本敏感性。
§6.4 PyTorch 数据集与 DataLoader
<details>
<summary>查看完整可运行代码(约 60 行)</summary>
# ============================================================
# PyTorch Dataset:个体级"未来 1 年再住院"二分类
# 输入:§6.3 产出的住院长表 ip(含 person_serial, admission_date,
# discharge_date, main_diagnosis);目标病种标签按需替换
# 设计要点:按 person_serial 分组划分,杜绝个体级泄漏(§5.3)
# ============================================================
import pandas as pd, numpy as np, torch
from torch.utils.data import Dataset, DataLoader
from sklearn.model_selection import GroupShuffleSplit
ip["discharge_date"] = pd.to_datetime(ip["discharge_date"])
ip["admission_date"] = pd.to_datetime(ip["admission_date"])
END = ip["discharge_date"].max()
# 标签:索引接触后 365 天内是否有再住院
g = ip.sort_values(["person_serial", "discharge_date"]).reset_index(drop=True)
g["next_admit"] = g.groupby("person_serial")["admission_date"].shift(-1)
g["gap_days"] = (g["next_admit"] - g["discharge_date"]).dt.days
rec = g.dropna(subset=["gap_days"]).copy()
rec["label"] = (rec["gap_days"] <= 365).astype(int)
# 特征:出院年、住院时长、当次主诊断前 3 位(one-hot 由 vocab 完成)
rec["los_days"] = (rec["discharge_date"] - rec["admission_date"]).dt.days
rec["dx3"] = rec["main_diagnosis"].astype(str).str[:3]
vocab = {d: i + 1 for i, d in enumerate(sorted(rec["dx3"].unique()))}
rec["dx3_id"] = rec["dx3"].map(vocab)
split = GroupShuffleSplit(n_splits=1, test_size=0.2, random_state=42)
tr_idx, te_idx = next(split.split(rec, groups=rec["person_serial"]))
class NprReadmit(Dataset):
def __init__(self, df, idx):
self.x = df.iloc[idx][["year", "los_days", "dx3_id"]].to_numpy(np.float32)
self.y = df.iloc[idx]["label"].to_numpy(np.float32)
def __len__(self): return len(self.y)
def __getitem__(self, i):
return torch.from_numpy(self.x[i]), torch.tensor(self.y[i])
tr_ds, te_ds = NprReadmit(rec, tr_idx), NprReadmit(rec, te_idx)
tr_dl = DataLoader(tr_ds, batch_size=1024, shuffle=True)
te_dl = DataLoader(te_ds, batch_size=2048)
xb, yb = next(iter(tr_dl))
print(xb.shape, yb.mean().item()) # 首批形状与阳性率
</details>
§6.5 坑点(8 个)
⚠️ 坑点 1:1964-1986 年覆盖率爬坡造成的假性发病率上升(分类:偏倚陷阱)
问题:住院登记 1964 年仅覆盖约 6% 人口(6 个省),1972 年 36%、1976 年 >50%、1982 年 71%、1984 年 86%,1987 年才达 100%。直接按年份计数会得到"发病率逐年暴涨"的假象。
症状:任何 1987 年前起点的时间序列图都呈单调上升;早期年份病例的地理分布集中在早期参与省份。
解决:
- 简单方法:发病率分析一律从 1987 年起算。
- 进阶方法:需要更早年代时,按官方覆盖率曲线做分母校正(各省×年份的人口覆盖比例加权),并报告敏感性分析。
- SOTA 方法:利用省×年×病种频数拟合覆盖过程模型(如将"开始上报省份"处理为分阶段进入的阶梯协变量),或仅在 1987 年后已覆盖省份内部做 1984-1986 年的受限比较,并声明外部效度限制。
参考:Ludvigsson et al. 2011, BMC Public Health 11:450
⚠️ 坑点 2:ICD-7/8/9/10 四代编码断层(分类:标签理解)
问题:登记内诊断码历经 ICD-7(1964-1967)→ ICD-8(1968 并行、1969-1986)→ ICD-9(1987-1996)→ ICD-10-SE(1997 起)四代体系,同一疾病码值完全不同;跨版本直接字符串匹配会漏掉大量病例。
症状:纵向病例数在某切换年(1968、1987、1997)断崖式下跌或跳升;用 ICD-10 码检索 1990 年代数据得到 0 结果。
解决:
- 简单方法:研究期限制在单一版本内(如 1998 年起)。
- 进阶方法:为每个目标疾病维护"版本→码集"字典(如克罗恩病 ICD-9=555、ICD-10=K50),检索时按记录的年代路由到对应码集。
- SOTA 方法:将所有历史码经官方历史分类文档映射到 ICD-10 锚点后再统一分析;对映射不确定的码做双人独立核验并报告 Kappa;对剑号-星号(病因-表现)双码先拆解码对。
参考:Socialstyrelsen 生产与质量 PDF(官方 ICD 年表)
⚠️ 坑点 3:Skåne 省 1997 年 ICD-9/ICD-10 混存(分类:预处理陷阱)
问题:ICD-10-SE 于 1997 年全国启用,但 Skåne 省(约 8-9% 瑞典人口)整个 1997 年仍使用 ICD-9——同年数据里两代编码并存。
症状:1997 年 K 码(ICD-10)检索覆盖不了 Skåne 病例;按年统计的 1997 年病例数出现地区性凹陷。
解决:
- 简单方法:研究起点定在 1998 年,完全绕开混存年。
- 进阶方法:1997 年记录按省份路由——Skåne 用 ICD-9 码集、其余省用 ICD-10 码集,分别匹配后合并。
- SOTA 方法:对 1997 年 Skåne 记录做 ICD-9→ICD-10 算法映射并在结果中单列敏感性分析;涉及诊断日期精度的研究还应核对切换的具体月界。
参考:Ludvigsson et al. 2011(图 1 与说明)
⚠️ 坑点 4:2001 年门诊边界与 2015 年急诊双记录规则(分类:标签理解)
问题:专科门诊记录 2001 年才纳入——2001 年前"没有门诊事件"不等于"没看门诊"。另外 2015 年起急诊后收住院必须同时记门诊+住院两条记录,此前只记住院,跨 2015 年的"接触次数"口径不可比。
症状:以门诊定义的结局(如专科随访)在 2001 年前恒为 0;1990 年代队列的"门诊利用"缺失被误读为"未就诊";2015 年前后急诊相关频数突然上升。
解决:
- 简单方法:门诊结局研究从 2001 年起算;涉及急诊频数的分析以 2015 年为界分段。
- 进阶方法:需要 2001 年前门诊信息的,改用(若获批)区域级登记或专科质量登记补齐,并在方法节明确"全国门诊不可得"。
- SOTA 方法:在断点处(2001、2015)做 interrupted time series,把口径变化与真实趋势分离;对同一患者用 2015 年前后住院记录对齐校验双记录规则的影响。
参考:Socialstyrelsen 官方页;European Health Information Portal
⚠️ 坑点 5:主诊断由主治医生决定,跨专科不一致(分类:偏倚陷阱)
问题:主诊断由当次接诊的主治医生确定——同一患者(如糖尿病+脂肪肝)在肝病专科就诊记肝病为主诊断、在内分泌就诊记糖尿病为主诊断。仅用主诊断定义疾病会系统性漏检。
症状:某病种"首次诊断日期"在不同专科来源间漂移;按主诊断估计的患病率低于文献值;跨机构比较时主诊断构成差异巨大。
解决:
- 简单方法:疾病识别用主诊断+全部辅诊断的并集。
- 进阶方法:采用已验证的算法定义(多码+最低接触次数,如 IBD ≥2 次诊断条目),而非单条主诊断。
- SOTA 方法:结合机构/专科代码对来源做分层校正;在验证子样本中分别报告"主诊断命中"与"任意诊断命中"的 PPV/敏感度,选择标签策略。
参考:DELIVER 队列,Scand J Gastroenterol 2022;2025 更新版综述
⚠️ 坑点 6:无个人级去重——按记录划分必泄漏(分类:数据泄漏)
问题:官方只保证 encounter ID(vtf_id)唯一,同一人在同一天、不同日期的多次记录自然存在且不做个人级重复检查。ML 管线若按记录行随机划分,同一患者的历次记录会同时出现在训练与测试集。
症状:模型 AUC 异常高(>0.95 且与文献不可比);检查发现测试集 person_serial 在训练集出现。
解决:
- 简单方法:GroupShuffleSplit/GroupKFold over person_serial(见 §6.4 代码)。
- 进阶方法:在个体级划分基础上再加时间外推集(train 用早期年、test 用近期年),同时监控按机构划分的性能衰减。
- SOTA 方法:三重留出(个体×时间×机构)报告三维泛化矩阵;对重复记录(同患者同日多机构)先做实体解析再划分。
参考:Socialstyrelsen 生产与质量 PDF(F2.5.2 无个人级重复检查)
⚠️ 坑点 7:2007 年前内科操作缺失与私立漏报(分类:预处理陷阱)
问题:2007 年前仅外科操作(KKÅ)强制上报,内科操作(KMÅ,如内镜、给药)非强制;此外私立提供方的上报完整度整体偏低,给药/药物操作码为系统性缺失重灾区。
症状:内科操作频数在 2007 年出现台阶式跳升;私立门诊的某些操作检出率显著低于公立;用操作码定义暴露的研究出现时代伪影。
解决:
- 简单方法:操作研究限 1997 年后的外科码,或直接限 2007 年后。
- 进阶方法:按机构类型(公立/私立)分层报告缺失;药物暴露改用处方药物登记(2005 年 7 月起)而非操作码。
- SOTA 方法:对 2007 年边界做断点敏感性分析;在验证子样本中估计操作级敏感度(文献报告手术编码中位 PPV 97% 但敏感度中位仅 73%),用 PPV-敏感度二维证据校准标签策略。
参考:Socialstyrelsen 生产与质量 PDF;2025 更新版综述
⚠️ 坑点 8:登记更新滞后与回填修订——研究版本漂移(分类:工程陷阱)
问题:数据月度上报但完整年度质量需数年沉淀;官方发现重大偏差会要求提供方重报,早期年份可能被回填修订。不同时间点的两次提取可能给出不同数字。
症状:同一病种两次申请的病例数对不上;复现他人论文时频数有 1-3% 级别差异;发表后审稿人要求更新数据时数字变化。
解决:
- 简单方法:在论文与代码中记录提取日期与提取编号,全部结果以该冻结快照为准。
- 进阶方法:最近 2-3 个参考年视为"未稳定期",做趋势研究时终点前移一年。
- SOTA 方法:申请时索要交付批次说明;关键结论在冻结快照与更新快照上双跑对比,披露差异量级(登记无插补、无个人级去重,回填会同时改变频数与重复结构)。
参考:Socialstyrelsen 生产与质量 PDF(F2.5.3 合理性检查与重报)
§6.6 数据增强:安全与危险操作
| 操作 | 评价 | 说明 |
|---|---|---|
| 时间平移(整段 ± 少量天) | ✅ 安全 | 保留诊断序列语义,注意不超过随访窗边界 |
| 诊断码掩码(随机置空辅诊断) | ✅ 安全 | 模拟辅诊断缺失,提升稳健性 |
| 接触级下采样(保留个体) | ✅ 安全 | 缓解高频患者主导损失函数 |
| 混合增强(时间序列 mixup) | ⚠️ 谨慎 | 病码组合无临床意义,需验证有效性 |
| 生成式插补辅诊断 | ⚠️ 谨慎 | 可能放大编码偏倚,需验证下游一致性 |
| 随机改写主诊断 | ❌ 危险 | 破坏编码语义,主/辅诊断不对称 |
| 跨患者拼接记录 | ❌ 危险 | 制造临床不可能的病史,污染标签 |
| 用 ICD 版本错配码做增广 | ❌ 危险 | 码值随版本语义漂移(坑点 2),禁止自动改码 |
一条总原则:对登记数据,最有价值的"增强"往往不是合成新样本,而是把已知的系统性缺失(辅诊断、内科操作、私立漏报)建模为显式的缺失机制——让模型看见真实世界的上报过程,胜过掩盖它。
§6.7 模型推荐
| 任务 | 推荐模型/方法 | 理由 |
|---|---|---|
| 表型识别 | 规则算法(已验证码组合)+ 逻辑回归基线 | 登记研究的可解释性金标准,PPV 有文献支撑 |
| 再住院/风险预测 | 梯度提升树(XGBoost/LightGBM) | 表格+稀疏码特征的首选,样本效率高 |
| 纵向诊断序列建模 | 时序 Transformer / RETAIN 式注意力 | 个体多年诊断序列的注意力归因可读 |
| 罕见病信号检测 | 收缩估计/分层贝叶斯 | 稀疏码值的稳定估计 |
| 多登记链接表 | 生态位模型(分割回归/异质性森林) | 跨省/跨时期异质性显式建模 |
| 登记式因果推断 | 边际结构模型 / 目标试验模拟 | 处理时变混杂(治疗-结局闭环) |
§6.8 硬件需求
| 场景 | 配置建议 |
|---|---|
| 规则表型与统计建模 | 笔记本级 CPU + 16 GB 内存即可(提取包多为 MB-GB 级) |
| 全国全量住院表分析 | 32-64 GB 内存工作站,或分块读取/Arrow/DuckDB |
| 深度时序模型 | 单张 24 GB 显存 GPU 足够(特征为稀疏码向量,非影像) |
| 链接多登记的整合库 | 建议 64 GB+ 内存 + 快速 NVMe;或机构安全服务器集群 |
§6.9 评估指标与验证代码
# ============================================================
# 标签策略评估:以病历回顾子样本计算 PPV / 敏感度 / 特异度
# 输入:val_df —— 在验证子样本上人工复核后的对照表
# 列:register_pos(登记算法判阳性),gold_pos(病历金标准)
# 方法对应 §2.6 金标准;文献参照:诊断中位 PPV 84%、
# 手术中位 PPV 97%、中位敏感度 73%(2025 综述)
# ============================================================
import numpy as np
def validate(val_df, register_col="register_pos", gold_col="gold_pos"):
tp = ((val_df[register_col] == 1) & (val_df[gold_col] == 1)).sum()
fp = ((val_df[register_col] == 1) & (val_df[gold_col] == 0)).sum()
fn = ((val_df[register_col] == 0) & (val_df[gold_col] == 1)).sum()
tn = ((val_df[register_col] == 0) & (val_df[gold_col] == 0)).sum()
ppv = tp / (tp + fp) if tp + fp else np.nan
sens = tp / (tp + fn) if tp + fn else np.nan
spec = tn / (tn + fp) if tn + fp else np.nan
return {"PPV": round(ppv, 3), "Sensitivity": round(sens, 3),
"Specificity": round(spec, 3), "n": len(val_df)}
# 用法示例(假想验证子样本):
# val_df = pd.read_csv("chart_review_sample.csv")
# print(validate(val_df)) # 与同类病种文献 PPV 区间对照解读
解读规则:PPV 高但敏感度低(登记研究常见形态)→ 标签"阳性可信、阴性存疑",适合做病例队列而非纯净阴性训练;PPV 低 → 先收紧算法(加接触次数门槛)再训练。
§6.10 MLOps 笔记
- 数据版本:登记回填修订(坑点 8)→ 训练数据必须绑定"提取批次 ID+提取日期",模型再训练时不得静默换批次。
- 标签版本:表型算法(码集+接触门槛)单独版本化,与模型版本共同发布。
- 监控:上线后监控输入码值分布漂移——ICD 切换、2015 双记录规则等已知断点是天然报警阈值。
- 合规管道:序列号数据不出获批安全环境;导出结果须按《公共访问与保密法》做小单元格抑制(避免可回溯个体的低频交叉表)。
- 再训练节奏:跟随官方年度数据冻结(而非月度增量),减少回填噪声。
§7 质量评估与局限性
§7.1 已知偏倚
| 偏倚类型 | 描述 | 严重程度 | 缓解 |
|---|---|---|---|
| 覆盖率时间梯度 | 1964-1986 年覆盖 6%→86%,1987 年起 100% | 高(早期研究) | 1987 年起算或覆盖率加权(坑点 1) |
| 编码激励偏倚 | 诊断编码与医院报销挂钩,编码模式可被激励扭曲 | 中 | 用已验证算法;跨期比较时审视报销制度变化 |
| 主诊断专科依赖 | 主诊断随就诊专科漂移 | 中 | 主+辅诊断并集定义标签(坑点 5) |
| 私立漏报 | 门诊高于住院;特定变量(给药码)系统性缺失 | 中 | 分机构类型评估(坑点 7) |
| 初级保健盲区 | 轻症/慢病常规管理不入库 | 高(此类病种) | 改用区域初级保健登记或链接处方数据推断 |
| 口径断点 | 2001 门诊、2007 内科操作、2015 双记录、2016 急诊时间点 | 中 | 断点分段分析(坑点 4、7) |
§7.2 标注质量
两代系统综述给出一致图景:住院诊断 PPV 一般 85-95%(2011,132 篇);全库(含门诊)中位 PPV 84%、手术操作中位 97%,但中位敏感度仅 73%(2025,89 项)。含义:登记码"说了的"大多可信,"没说的"不能当阴性。 completeness 随时间改善;私立与给药变量为主要缺口(Ludvigsson et al. 2011;2025 综述)。
补充三点解读纪律:
- PPV 是条件指标:它回答"登记阳性者真患病的概率",受患病率影响——同一算法在低患病率筛查场景的 PPV 会低于高患病率临床场景,迁移使用时须重估。
- 验证子样本的代表性:多数验证研究在特定医院/时段抽样,把文献 PPV 直接外推到全国全时段会引入不确定性;理想做法是同时报告文献区间与自己样本的验证结果。
- 发表偏倚存在:2025 综述作者明确提示,结果差的验证研究可能未被发表——文献里"看不到坏消息"不等于没有坏消息,对未经验证的病种保持保守。
§7.3 泛化性
| 场景 | 失效风险 | 证据 |
|---|---|---|
| 外推到初级保健主导疾病(高血压等) | 高 | NPR 不含初级保健(官方页明示) |
| 外推到非北欧国家 | 高 | 医疗体系/编码实践差异;丹麦 PPV 跨病种 <15%-100% 的巨大方差 |
| 外推到丹麦/芬兰等北欧登记 | 中 | 结构同构、效力可比,但 ICD 年代表不同 |
| 2001 年前门诊任务 | 极高 | 门诊数据不存在(坑点 4) |
| 瑞典境内跨省 | 低-中 | 1997 年 Skåne 特例、机构改组差异 |
§7.4 伦理与合规
数据为法定保密的个人健康数据:上报无患者知情同意豁免(法定登记),研究使用须经瑞典伦理审查局审批;个体级数据按申请交付、序列号去标识、密钥由统计局保存。发表通常无需患者同意,但须遵守审批决定范围与小单元格抑制规则(BMJ Open 2018 流程实例)。
§7.5 公平性
登记本身不记种族,但可与 LISA/总人口登记链接获得出生国、收入、教育等社会分层变量——既是公平性分析工具,也是偏倚放大器:不同群体的专科照护可及性差异会直接传导为标签覆盖差异。移民与低收入人群的专科利用率不同,模型性能需按社会分层评估。
§7.6 数据漂移
已知断点清单:1968/1987/1997(ICD 切换)、1997 Skåne 特例、2001(门诊)、2007(KMÅ 强制)、2015(急诊双记录)、2016(急诊时间点)、2024(精神科非医生)。任何跨断点的模型或指标都会遭遇编码语义漂移;推荐以断点为界的分段监控+版本化标签。
漂移监控的分层视图:
| 漂移层 | 表现形式 | 监控手段 |
|---|---|---|
| 编码体系漂移 | ICD 切换年码值空间突变 | 按 icd_version 分桶监控码频分布 |
| 上报行为漂移 | 私立份额变化、辅诊断填写积极性变化 | 按机构类型×年份监控记录量与辅诊断密度 |
| 规则漂移 | 2015 双记录等口径变化 | 断点前后同指标双跑对比 |
| 回填漂移 | 历史年份数据被重报修订 | 冻结快照间 diff 报告(坑点 8) |
| 临床实践漂移 | 诊疗模式演变(如日间手术替代住院) | 与临床指南变更时间点交叉解读 |
§7.7 DAIMS 数据就绪度自评(24 项)
| # | 检查项 | 状态 | 说明 |
|---|---|---|---|
| 1 | 宽格式可用 | ✅ | 定制交付可约定宽表;个体×时间聚合直观 |
| 2 | 唯一标识 | ✅ | personnummer 序列号+encounter ID(vtf_id)双键 |
| 3 | 特殊字符处理 | ⚠️ | 瑞典语 ÅÄÖ 与历史编码(Latin-1/UTF-8)需显式处理 |
| 4 | 重复行检查 | ⚠️ | 仅 encounter 级唯一性;个人级不去重(坑点 6) |
| 5 | 缺失编码明确 | ✅ | 空值=未上报,语义清晰;无插补 |
| 6 | 标签标识清晰 | ✅ | 诊断/操作码即标签;主/辅诊断字段分明 |
| 7 | 罕见类分组 | ⚠️ | 罕见病码值极稀疏,需自行聚合分组 |
| 8 | 偏倚评估 | ✅ | 两代系统综述(132 篇/89 项)提供病种级偏倚证据 |
| 9 | 数据字典 | ✅ | 官方变量清单+生产质量文档完备 |
| 10 | 信息性缺失解释 | ⚠️ | 操作字段缺失(无操作 vs 未上报)需研究者自行辨析 |
| 11 | 设备记录 | ❌ | 无设备/仪器技术参数字段 |
| 12 | 共线性检查 | ⚠️ | 高维稀疏码空间,共线性自查靠研究端 |
| 13 | 编码映射 | ⚠️ | ICD 四代断层官方无完整自动映射表(坑点 2) |
| 14 | 时间戳处理 | ✅ | 入院/出院/就诊/操作日期字段明确 |
| 15 | 划分建议 | ⚠️ | 无官方划分;本 Wiki §5.3 给出个体级方案 |
| 16 | 泄漏讨论 | ✅ | 个体级/时间/机构泄漏均有明确对策(§5.3、坑点 6) |
| 17 | 标签分布 | ⚠️ | 无官方全库码值频数表,需自行审计 |
| 18 | 测量偏倚 | ⚠️ | 主诊断专科依赖、编码激励偏倚有据可查 |
| 19 | 外部验证建议 | ✅ | 北欧同构登记体系提供现成外部验证场(§5.5、§7.8) |
| 20 | 版本记录 | ✅ | 官方历史沿革与编码年表详尽(§1.4) |
| 21 | 预处理脚本 | ❌ | 无官方脚本;本 Wiki §6.3 提供参考实现 |
| 22 | 合规要求 | ✅ | 伦理审批+申请制+去标识流程制度化 |
| 23 | 多模态对齐 | ⚠️ | 单模态结构化数据;与其他登记链接后需自行对齐 |
| 24 | 去标识化 | ✅ | 序列号替换+密钥第三方保管,制度成熟 |
DAIMS 评分:17.5 / 24
评分解读:作为登记型数据源,NPR 在标识体系、时间戳、合规与验证证据四块达到满分级水准(登记系统工程的产物);失分集中在"ML 便利性"维度——无预处理脚本、无官方划分、编码映射断层、设备与多模态缺位。这是一份"底层极稳、上层需自建"的数据源。
对你意味着什么:如果你做流行病学/登记式研究,17.5/24 意味着可以直接开工,重点投入在编码映射与覆盖率校正上;如果你做 ML 建模,请把预算的三成留给数据工程——按 §5.3 做个体级划分、按 §6.3 做版本归一、按 §6.9 先验证标签再训练模型,三项缺一都会让结果不可信。
§7.8 外部验证矩阵
| 外部数据集/场景 | 来源机构 | 评估任务 | 性能指标 | 相对内部变化 | 关键发现 |
|---|---|---|---|---|---|
| 患者病历回顾(住院) | 多中心验证文献 | 住院诊断码核对 | PPV 85-95%(一般) | — | 2011 年 132 篇综述的总体结论 |
| 患者病历回顾(含门诊) | 2025 更新综述 | 诊断/操作码核对 | 诊断中位 PPV 84%(IQR 72-93%);操作中位 PPV 97%;中位敏感度 73% | 门诊略低于住院报告值 | 缺失主要来自私立漏报与给药码 |
| 病历回顾(IBD 手术) | 瑞典多院 | IBD 手术编码核对 | PPV 96.8%;敏感度 94.5%;特异度 98.5% | 高于诊断码平均水平 | 手术编码质量优于诊断码 |
| 病历回顾(肝病) | DELIVER 队列 | HCC/肝硬化/失代偿 | PPV >90% | 专科病种上游水平 | 支持肝病结局定义 |
| 丹麦 DNPR | 奥胡斯大学(Schmidt 2015) | 跨国同构对照 | 丹麦诊断 PPV <15%-100%(跨病种) | 方差远大于瑞典报告 | 证明"登记质量因病种而异"需逐病种验证 |
| 芬兰/冰岛/挪威登记 | 各国统计局/THL 等 | 北欧横向可比性 | 芬兰 PPV 多在 75-99%;冰岛 8 种慢病综合 PPV 93% | 与 NPR 大体可比 | 跨北欧算法研究可行,但需按各国年表映射 |
§8 基准性能与生态
§8.1 代表性验证与效应研究(无社区排行榜)
NPR 是登记型数据源,不存在模型排行榜或统一基准;下表列出以"验证研究"为核心的代表成果。各行性能数字来自不同病种、不同金标准的独立研究,不可直接互比(金标准、算法定义、样本均不同)。
| 排名 | 研究 | 性能 | 年份 | 关键技术 | 完整引用 | 代码 |
|---|---|---|---|---|---|---|
| 1 | 住院登记外部验证综述 | 住院诊断 PPV 85-95% | 2011 | 132 篇验证文献系统回顾 | Ludvigsson JF, et al. BMC Public Health 2011;11:450. DOI 10.1186/1471-2458-11-450 | 无公开代码 |
| 2 | 含门诊的更新版诊断准确性综述 | 诊断中位 PPV 84%;操作中位 PPV 97%;中位敏感度 73% | 2025 | 89 项验证研究系统综述 | Diagnostic accuracy in the Swedish national patient register(作者列表见原文). PMC12137447 | 无公开代码 |
| 3 | IBD 手术编码验证 | 手术码 PPV 96.8%/敏感度 94.5% | 2019 | 病历回顾金标准 | Forss A, et al. BMC Med Inform Decis Mak 2019;19:217. DOI 10.1186/s12911-019-0948-z | 无公开代码 |
| 4 | DELIVER 肝病队列描述 | 肝病诊断 PPV >90% | 2022 | 多登记联合全国队列 | Cohort profile: DELIVER. Scand J Gastroenterol 2022. DOI 10.1080/00365521.2022.2051202 | 无公开代码 |
| 5 | 丹麦 NPR 对照综述 | 丹麦 PPV <15%-100% | 2015 | 丹麦登记全景(跨国对照) | Schmidt M, et al. Clin Epidemiol 2015;7:449-490. DOI 10.2147/CLEP.S91125 | 无公开代码 |
§8.2 SOTA 总结与选型建议
登记数据没有"SOTA 模型"而有"SOTA 算法":对目标疾病,最优实践是采用已验证的表型算法(码集+接触门槛)并报告其 PPV/敏感度证据;若该病种尚无验证研究,规范做法是先在病历子样本上自行验证再用于训练。
选型决策树:
- 目标病种已有验证算法?→ 直接采用并引用其 PPV/敏感度(如 IBD ≥2 条目)。
- 尚无验证但 PPV 区间可类比(同类专科慢病)?→ 采用加严算法(提高接触门槛)+ 计划验证子样本。
- 病种主要在初级保健管理?→ 放弃纯 NPR 标签,改用"处方推断"(处方药物登记)或区域级数据。
- 需要操作/手术暴露?→ 限 1997 年后外科码或 2007 年后全操作码,参考手术编码高质量证据(中位 PPV 97%)。
- 结局为死亡?→ 死因登记为主、NPR 为并发症补充。
§8.3 评测协议
登记研究的事实评测协议是"验证研究":抽取登记码阳性记录 → 调阅病历 → 按预定义金标准判读 → 报告 PPV(必须)与敏感度(推荐)。ML 延伸协议:在验证子样本上校准标签噪声后,按个体级+时间外推划分评估(§5.3)。
标准验证研究的五个设计要点(依两代综述的通行做法):
- 抽样框:从登记码阳性记录中随机抽样(避免仅抽单中心);
- 金标准:预定义诊断标准+盲法病历判读(判读者不接触登记结果);
- 指标:PPV 必报;敏感度需外部参照(其他登记/队列);特异度在可得的阴性子样本上估计;
- 分层报告:按年代(编码版本)、机构类型(公立/私立)、接触类型(住院/门诊)分层;
- 复现包:公开码集字典与判读表单,便于算法更新后再验证。
§8.4 相关数据集
| 数据集 | 机构/国家 | 与 NPR 的关系 |
|---|---|---|
| 丹麦 DNPR | 丹麦 | 结构最接近的对照;住院 1977 起、门诊/急诊 1995 起 |
| 芬兰 Care Register | 芬兰(THL) | 北欧次早(1969 起) |
| 挪威/冰岛患者登记 | 挪威/冰岛 | 2008/1999 起,跨国复制验证 |
| 瑞典癌症登记 | Socialstyrelsen | 1958 起;肿瘤结局更优来源 |
| 瑞典处方药物登记 | Socialstyrelsen | 2005 年 7 月起;药物暴露来源 |
| 英国 CPRD | 英国 | 覆盖初级保健的对照视角 |
| MIMIC-III | MIT/BIDMC | 单院 ICU 深颗粒度对照 |
§8.5 关键论文 Top 6
- Ludvigsson JF, et al. External review and validation of the Swedish national inpatient register. BMC Public Health 2011;11:450. DOI 10.1186/1471-2458-11-450 —— NPR 住院部分的权威画像与 132 篇验证文献回顾,任何使用前的第一篇必读。
- Diagnostic accuracy in the Swedish national patient register(含门诊数据的更新版系统综述). 2025. PMC12137447 —— 首次系统纳入 2001 年后门诊数据的中位 PPV/敏感度证据。
- Schmidt M, et al. 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 —— 跨国对照的基准文献。
- Laugesen K, Ludvigsson JF, Schmidt M, Gissler M, et al. Nordic Health Registry-Based Research: A Review of Health Care Systems and Key Registries. Clin Epidemiol 2022 —— 五国登记体系与实操法律路径总览。
- Forss A, et al. Validating surgical procedure codes for inflammatory bowel disease in the Swedish National Patient Register. BMC Med Inform Decis Mak 2019;19:217. DOI 10.1186/s12911-019-0948-z —— 操作编码验证的模板研究。
- Cohort profile: DELIVER(瑞典肝病全国队列). Scand J Gastroenterol 2022. DOI 10.1080/00365521.2022.2051202 —— 多登记联合队列构建的当代范例(含 NPR 主诊断机制讨论)。
§8.6 社区活跃度
NPR 的"社区"是瑞典及北欧登记研究共同体:卡罗林斯卡学院、乌普萨拉、奥胡斯等机构持续产出登记方法学综述与验证研究;Socialstyrelsen 通过 Registerservice 与官方文档提供用户支持。近二十年登记研究文献持续高产出(2011 年综述本身即回顾了 132 篇验证文献,2025 年更新版检索到 3,990 项候选研究),是活跃度最直接的代理指标。
研究协作的四个入口:①瑞典流行病学会(Swedish Society of Epidemiology)网络——2011 年验证综述即通过其 218 名成员征集到大量验证文献;②北欧登记研究协作(跨国比较与联合队列);③各病种国家级质量登记(与 NPR 互为补充与校验);④Socialstyrelsen 官方统计发布(免费汇总数据,用于预研与教学)。对 AI 团队而言,加入任一网络都能显著降低表型算法的试错成本。
§8.7 生态快照
| 资源 | 类型 | 链接 | 访问截至 | 推荐理由 |
|---|---|---|---|---|
| NPR 官方页 | 官方文档 | socialstyrelsen.se | 2026-09 | 内容范围、法规、变量清单入口 |
| 生产与质量 PDF | 官方质量文档 | Socialstyrelsen PDF | 2026-09 | ICD/KVÅ 官方年表、质检机制(坑点 2/3/6/8 的原始出处) |
| Ludvigsson 2011 全文 | 方法学综述 | BMC Public Health | 2026-09 | 覆盖率曲线与 PIN 链接史 |
| 2025 诊断准确性综述 | 系统综述 | PMC12137447 | 2026-09 | 含门诊的最新验证证据汇总 |
| European Health Information Portal | 门户页 | healthinformationportal.eu | 2026-09 | 上报机制与质量简述的英文汇编 |
§9 相关资源与引用
§9.1 官方资源
- Socialstyrelsen — National Patient Register:登记范围、法规依据、变量清单入口。
- Production and quality of the Patient Register(PDF):官方生产与质量文档(编码年表、质检、去重机制)。
- Registerservice 数据申请联系(Registerservice@socialstyrelsen.se,见门户页):个体级数据申请(3-6 个月,SEK 1,200/小时不含 VAT)。
- Swedish Ethical Review Authority:伦理审批机构(研究使用的前提)。
- European Health Information Portal — NPR:英文的覆盖与质量摘要。
§9.2 方法学与教程
- Ludvigsson et al. 2011(IPR 全文):历史、覆盖率图、PIN 链接史。
- Laugesen et al. 2022(北欧登记研究):五国体系、法律与实操。
- BMJ Open 2018(多登记合并数据库流程实例):PIN→序列号的匿名化链接流程逐步拆解。
- Forss et al. 2019(手术编码验证):验证研究设计模板。
- DELIVER 2022(肝病全国队列):多登记联合队列的方法学画像。
§9.3 BibTeX 引用
@article{ludvigsson2011external,
title = {External review and validation of the Swedish national inpatient register},
author = {Ludvigsson, Jonas F and Andersson, Eva and Ekbom, Anders and Feychting, Maria and Kim, Jeong-Lim and Reuterwall, Christina and Heurgren, Mona and Otterblad Olausson, Petra},
journal = {BMC Public Health},
volume = {11},
pages = {450},
year = {2011},
doi = {10.1186/1471-2458-11-450}
}
@article{schmidt2015danish,
title = {The Danish National Patient Registry: a review of content, data quality, and research potential},
author = {Schmidt, Morten and Schmidt, Sigrun Alba Johannesdottir and Sandegaard, Jakob Lynge and Ehrenstein, Vera and Pedersen, Lars and S{\o}rensen, Henrik Toft},
journal = {Clinical Epidemiology},
volume = {7},
pages = {449--490},
year = {2015},
doi = {10.2147/CLEP.S91125}
}
@article{forss2019validating,
title = {Validating surgical procedure codes for inflammatory bowel disease in the Swedish National Patient Register},
author = {Forss, Anders and Myrelid, P{\"a}r and Ol{\'e}n, Ola and Everhov, {\AA}sa H and Nordenvall, Caroline and Halfvarson, Jonas and Ludvigsson, Jonas F},
journal = {BMC Medical Informatics and Decision Making},
volume = {19},
pages = {217},
year = {2019},
doi = {10.1186/s12911-019-0948-z}
}
@article{laugesen2022nordic,
title = {Nordic Health Registry-Based Research: A Review of Health Care Systems and Key Registries},
author = {Laugesen, Kristina and Ludvigsson, Jonas F and Schmidt, Morten and Gissler, Mika and Valdimarsdottir, Unnur Anna and Lunde, Astrid and S{\o}rensen, Henrik Toft},
journal = {Clinical Epidemiology},
volume = {14},
year = {2022},
note = {Clin Epidemiol 2022;14}
}
@article{deliver2022cohort,
title = {Cohort profile: decoding the epidemiology of liver disease in Sweden (DELIVER)},
journal = {Scandinavian Journal of Gastroenterology},
year = {2022},
doi = {10.1080/00365521.2022.2051202}
}
@misc{socialstyrelsen_npr,
title = {National Patient Register},
author = {{National Board of Health and Welfare (Socialstyrelsen)}},
howpublished= {\url{https://socialstyrelsen.se/en/statistics-and-data/registers/national-patient-register}},
year = {2026},
note = {Accessed 2026-09}
}
§9.4 引用指南
使用 NPR 数据的研究请同时引用:① Socialstyrelsen 官方登记说明(数据来源);② Ludvigsson et al. 2011(住院部分方法学)或适用的病种验证文献;③ 你所在研究的伦理审批号。转载本页内容请引用本 Wiki 页面并注明访问日期。
§9.5 常见问题
Q1:NPR 数据可以下载吗?
不可以。无公开下载渠道,必须经伦理审批+官方申请获得定制提取(§6.2)。官方另提供免费的汇总统计,可用于预研。
Q2:可以用它做 AI 训练集吗?
可以,但有条件:在获批安全环境内、以去标识化提取为训练数据、按 §5.3 防泄漏、按 §6.9 先验证标签。模型输出不得用于个体级临床决策(rai:useCases)。
Q3:门诊数据从哪年开始可靠?
2001 年收录启动,初期主诊断缺失较多;质量此后大幅改善。严谨的门诊结局研究建议自 2001 年起算并做早期年份敏感性分析。
Q4:为什么 1997 年 Skåne 省数据特殊?
该省 1997 全年仍用 ICD-9,晚于其他省份切换 ICD-10-SE;处理逻辑见坑点 3。
Q5:数据会更新历史记录吗?
会。官方质检发现重大偏差会要求提供方重报,早期年份可能被回填修订(坑点 8),研究应锁定提取批次。
§10 AI 使用声明卡
§10.1 AI 模型列表
- 千方写作 Agent(大语言模型):负责本页面的资料检索、文本撰写、代码示例编写与结构组织。
§10.2 AI 参与范围
AI 参与了全文初稿撰写(含 frontmatter、章节正文、代码示例、表格整理与 JSON-LD 生成);全部硬事实均来自 §10.3 所列公开来源并由检索交叉核对;内容按编辑部审核清单经人工复核后发布。
具体分工边界:
| 工作项 | 执行方 | 说明 |
|---|---|---|
| 事实检索与交叉核对 | AI(检索)+ 人工(抽验) | 每条硬事实带来源链接;争议数字宁缺毋滥 |
| 初稿撰写与结构组织 | AI | 按千方宪法格式规范执行 |
| 代码示例编写 | AI | 参考实现性质,需在获批环境验证 |
| 医学术语与映射复核 | 人工(医学审核者) | §2 ICD-11/SNOMED 映射逐条复核 |
| 法规与访问流程核对 | 人工(编辑部) | 以官方页现行文本为准 |
| 最终发布决定 | 人工(编辑部) | 页面状态 published 前全量校验 |
§10.3 输入来源列表
- Ludvigsson JF, et al. External review and validation of the Swedish national inpatient register. BMC Public Health 2011;11:450. DOI 10.1186/1471-2458-11-450. https://injuryprevention.bmj.com/lookup/external-ref?access_num=10.1186/1471-2458-11-450&link_type=DOI
- 同上全文 PDF(Springer 镜像):https://rd.springer.com/content/pdf/10.1186%2F1471-2458-11-450.pdf
- Socialstyrelsen. National Patient Register(官方页). https://socialstyrelsen.se/en/statistics-and-data/registers/national-patient-register
- Socialstyrelsen. Statistical register’s production and quality — National Patient Register(PDF). https://www.socialstyrelsen.se/globalassets/sharepoint-dokument/dokument-webb/statistik/production-and-quality-of-the-patient-register.pdf
- Diagnostic accuracy in the Swedish national patient register: a review including diagnoses in the outpatient register. 2025. https://pmc.ncbi.nlm.nih.gov/articles/PMC12137447/
- Forss A, et al. Validating surgical procedure codes for IBD in the Swedish National Patient Register. BMC Med Inform Decis Mak 2019;19:217. DOI 10.1186/s12911-019-0948-z. https://doi.org/10.1186/S12911-019-0948-Z
- 同上全文 PDF(Columbia Academic Commons):https://academiccommons.columbia.edu/doi/10.7916/t3yd-0b69/download
- Cohort profile: DELIVER. Scand J Gastroenterol 2022. DOI 10.1080/00365521.2022.2051202. https://www.tandfonline.com/doi/10.1080/00365521.2022.2051202
- Schmidt M, et al. The Danish National Patient Registry. Clin Epidemiol 2015;7:449-490. DOI 10.2147/CLEP.S91125. https://pmc.ncbi.nlm.nih.gov/articles/PMC4655913
- Laugesen K, et al. Nordic Health Registry-Based Research. Clin Epidemiol 2022. https://www.dovepress.com/articles.php?article_id=67098
- BMJ Open 2018(多登记合并数据库与 PIN 匿名化流程实例,PMID 30287673). https://bmjopen.bmj.com/lookup/pmidlookup?view=long&pmid=30287673
- European Health Information Portal — Swedish National Patient Register. https://www-acc.healthinformationportal.eu/health-information-sources/swedish-national-patient-register
- European Health Information Portal — NPR 质量与访问细节(node/6203). https://www-acc.healthinformationportal.eu/node/6203
§10.4 人工校验表
| 内容模块 | 审核者 | 审核方式 | 审核状态 |
|---|---|---|---|
| §0 E-E-A-T 与免责声明 | 千方病案医学编辑部 | 逐句核对固定文本与利益冲突声明 | ✅ 已通过/已验证 |
| §1 概览与版本时间轴 | 千方病案医学编辑部 | 对照 Socialstyrelsen 官方页与 Ludvigsson 2011 核查年份 | ✅ 已通过/已验证 |
| §2 医学背景(ICD-11/SNOMED 映射) | 千方病案医学编辑部 | 术语映射人工复核 | ✅ 已通过/已验证 |
| §3 数据集规格 | 千方病案医学编辑部 | 对照官方生产与质量文档核查编码年表 | ✅ 已通过/已验证 |
| §4 数据结构与 DAIMS 字段字典 | 医疗 AI 数据工程师 | 对照交付规范与变量清单核对字段语义 | ✅ 已通过/已验证 |
| §5 划分与泄漏策略 | 医疗 AI 数据工程师 | 复核个体级划分与断点建议 | ✅ 已通过/已验证 |
| §6 AI 就绪指南与 8 坑点 | 医疗 AI 数据工程师 | 代码走查+坑点逐条溯源官方文档 | ✅ 已通过/已验证 |
| §7 质量评估与 DAIMS 24 项 | 医疗 AI 数据编辑部+编辑部 | 评分复核与验证矩阵溯源 | ✅ 已通过/已验证 |
| §8-§9 生态与引用 | 千方病案医学编辑部 | BibTeX 逐条核对 DOI | ✅ 已通过/已验证 |
| §10 声明卡与 JSON-LD | 千方病案医学编辑部 | 与 frontmatter 一致性核对 | ✅ 已通过/已验证 |
§10.5 AI 生成章节标注
全文初稿由 AI 生成,经 §10.4 所列人工校验流程复核;其中 §6.3/§6.4/§6.9 代码为 AI 编写的参考实现,需在获批数据环境内验证后再用于生产。
§10.6 最后人工审核日期
2026-09-05
页面状态:published(全部内容已完成审核并发布)
§C 结构化数据(JSON-LD)
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- cub-rea — 共享标签:电子健康记录 / 医疗登记 / 临床电子病历 / 流行病学 / 重症监护
- seer-nci — 共享标签:电子健康记录 / 公共卫生与流行病学 / 医疗登记 / 临床电子病历
- nwicu — 共享标签:电子健康记录 / 公共卫生与流行病学 / 临床电子病历 / 重症监护
- qresearch — 共享标签:电子健康记录 / 公共卫生与流行病学 / 临床电子病历 / 流行病学
- epic-cosmos — 共享标签:电子健康记录 / 公共卫生与流行病学 / 临床电子病历 / 流行病学
- isaric-ccp — 共享标签:电子健康记录 / 公共卫生与流行病学 / 医疗登记 / 临床电子病历
- anzics-apd — 共享标签:电子健康记录 / 医疗登记 / 临床电子病历 / 重症监护
- danish-npr — 共享标签:电子健康记录 / 医疗登记 / 流行病学
- mimic-br — 共享标签:电子健康记录 / 临床电子病历 / 重症监护
- n3c — 共享标签:电子健康记录 / 公共卫生与流行病学 / 临床电子病历 / 重症监护
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

