信息速览
子宫内膜异位症最广为人知的两个数字彼此矛盾:它影响全球约百分之十的育龄女性,却平均要等六点八年才被确诊。矛盾不在发病率,而在度量方式——这门病的表现因人而异到近乎"一人一病",而临床上度量它的工具是统一的周期性问卷。标准化问卷的成本很低,代价也很清楚:它只允许患者从研究者写好的清单里勾选,那些真正困扰某个人的症状,如果不在清单上,就永远不会被记录;而清单上某些问项对这个患者毫无意义,却要每个月重复打一次零分。等到复诊时,医生拿到的是一张"平均而言"的症状画像,画的是群体,不是躺在诊椅上的这一个人。
更难处理的是时间维度。疼痛、腹胀、疲劳、情绪塌陷在月经周期里不是常数,随月经周期相位起伏,突发疼痛可能在两天里叠加。一次门诊通常只能回溯最近几周,靠回忆重建的平均值既无法验证也校准不了。要有"个体级动态"的证据,就必须有人连续数百天、每天记录,且记录内容由患者自己定义。
EndoLIST 就是这份记录。以色列 KI 研究所联合 Maccabi 医疗服务集团与海法大学公共卫生学院,让 34 名已确诊的子宫内膜异位症患者用自己的症状集、自己的评分标度,在一个定制移动端应用里逐日打卡,随访跨度从一个月到十个月不等。官方把这些自定词条映射到 MedDRA 的五个术语层级,使个体化表达与标准化术语之间搭上了桥。它不是一个大队列,34 个人连一个像样的对照亚组都凑不出;它的价值在于把"逐日个体化追踪"这件昂贵的事真做了一遍。一屏速览见下表。
一屏速览
| 维度 | 内容 |
|---|---|
| 全名 | KI EndoLIST: Endometriosis Longitudinal Individualized Symptoms Tracking Dataset |
| 发布方 | PhysioNet;数据由以色列 KI 研究所、Maccabi 医疗服务集团南部区、海法大学公共卫生学院联合贡献 |
| 首次发布 | 2026 年 4 月 30 日,版本 1.0.0,无历史版本 |
| 最近改动 | 无修订;Release Notes 仅一条"初始发布" |
| 患者数 | 34 名以色列子宫内膜异位症患者 |
| 随访跨度 | 1–10 个月;官方 Study characteristics 表给出每人累计在研天数中位数 134 天 |
| 每人症状数 | 应用内自建症状中位 24.5 条(官方给出区间端点 19.25–36.5) |
| 单次月经周期数 | 中位 5 个周期(官方给出区间端点 3–7) |
| 标度方式 | 症状强度 0–10 或 0–4,由患者自选;一般身体与情绪状况 1–10 或 1–4 |
| 术语映射 | 症状映射到 MedDRA 的 LLT / PT / HLT / HLGT / SOC 五个层级 |
| 术语规模 | 构建的症状库覆盖 200 余种症状与状态,全部经 MedDRA 映射 |
| 嵌入程度 | 官方报告的参与率(至少半数症状有报告的天数占比)中位 95.27% |
| 文件格式 | CSV 表格 + 一段读取示范 R 脚本(gettingStarted.R) |
| 数据来源层次 | 患者自报的一手数据,非医院电子病历导出 |
| 许可 | PhysioNet Restricted Health Data License 1.5.0,须签署数据使用协议 |
| 典型用途 | 个体化症状动态建模、症状负担与共现的探索性分析、医患沟通工具原型、真实世界患者报告结局研究 |
§1 它要解决的具体麻烦
1.1 一个平均要等六点八年才确诊的病
官方页面背景部分引用文献给出的几个数字说明了这件事的规模:子宫内膜异位症影响全球约 6%–10% 的育龄女性,诊断延迟可达十二年,平均延迟 6.8 年。延迟被归因于三类原因——症状异质性强、医务人员认知不足、社会中普遍把痛经当成"正常现象"。这三条里只有第一条是数据问题:不同患者的症状组合可以完全不同,同一个患者的症状组合在不同周期也可以不同,于是"典型表现"这个概念在这门病上几乎不成立。
这直接导致两件事。第一,缺少可迁移的模式,医生没有一个像典型"心梗胸痛那样"的主诉模板可以套;第二,患者自述的症状常常"看起来不像病",因为它们分散在消化、泌尿、神经系统等多个器官系统里。官方背景段列举的常见症状包括盆腔痛、痛经、深部性交痛、下消化道症状、泌尿功能异常与疲劳——六类症状跨了至少四个科室。
1.2 标准化问卷的代价
通行的度量方式是周期性标准化问卷,比如各种版本的疼痛量表与生活质量问卷。它们的优点是跨人群可比:同一份问卷在十家医院、两千名患者上得分可以直接合并。为了实现这个可比性,问卷必须锁定问项与标度——这是它的设计目标,也是它的边界。
边界处的损失有三层。第一层是问项损失:问卷能问三十条就问不了四十条,那些"只属于极少数患者"的症状永远不会进问卷。第二层是标度损失:统一标度意味着每个人用同一把尺子,而有人天生用十级分辨疼痛,有人只愿意说"轻一点/重一点"。第三层是时间损失:周期性填写导致的时间分辨率通常是"上次至今的一个平均状态",而不是这一天的实际状态。
移动应用理论上能同时解决这三层,但市面上绝大多数痛经 tracking 类应用只提供基础记录,缺少个体化建模与完整采集能力。EndoLIST 的做法是把"个性化"当成设计前提而不是可选项:患者报关后先做两次一对一的访谈,在访谈中确定这个人真正要追的症状清单,然后给每条症状选择它自己的标度。
1.3 三条常见的错误期待
第一条,以为它是"临床诊断数据集"。它不是。全部记录来自患者的自我报告,官方明确列出入组标准如下:经以色列子宫内膜异位症基金会名录中认可的专科医生做出正式诊断、按以色列临床指南不强制要求手术确认;此外需满足未在使用激素治疗、月经每月规律、绝经前、距上次内膜异位手术至少三个月这四项。这是一份"诊断已在、追踪开始"的数据,不含影像、不含化验、不含手术所见,因此不能用于构建或验证诊断模型。
第二条,以为它有"统一的症状列"。恰恰相反,每个患者的列都不完全一样——这正是它存在的理由。按行做跨患者的横向合并会遇到大量的空值,且这些空值在语义上不是"今天没有这个症状",而是"这个人没选这个症状"。这二者在数据字典里被分开处理,但分析者若不去区分,就会把"没选"当成"没症状"。
第三条,以为它是"可以马上下载的资源"。它是受限访问资源,必须先在 PhysioNet 完成账户凭证审核并签署数据使用协议 1.5.0,且官方明确禁止任何再识别尝试。文件目录在未授权状态下返回 403。
1.4 它能给到的与给不到的
| 你的需求 | 它给的 | 够不够 |
|---|---|---|
| 个体内的症状随时间变化建模 | 逐日记录,官方报告中位在研天数 134 天 | 够,且这是它最核心的设计目标 |
| 症状与月经周期相位的关系 | 有是否行经与出血强度,官方给出周期间长度中位 28.5 天 | 够做相位对齐,前提是承认自报日期精度 |
| 症状共现与个人复杂度画像 | 每人自建症状清单,官方给出 LLT / PT / SOC 等层级的实体数 | 够做个体级网络探索,不够做人群级推断 |
| 症状术语的跨研究对齐 | 全部症状经 MedDRA 五级映射 | 够,这是它比多数自追踪数据强的地方 |
| 诊断或分期模型的训练 | 无影像、无化验、无手术分期 | 不够,完全不可行 |
| 治疗效果的对照评估 | 官方未给出干预分组、用药剂量与结局标签 | 不够,且入组已排除正在使用激素治疗者 |
| 人群层面的流行病学推断 | 34 人、单一国家、特定入组标准 | 不够,官方自己也提示样本量小、外推须谨慎 |
| 再识别或个人轨迏链接 | 官方明令禁止 | 不可做,违反数据使用协议 |
1.5 你的处境与它能帮到的事
| 你的处境 | 它能帮你什么 | 下一步该做什么 |
|---|---|---|
| 你在做慢病自追踪产品的算法,苦于没见过真正由患者自定义的症状清单 | 给出 34 份各不相同的症状清单与各自的标度选择 | 先读 Longitudinal_tracking_data_dictionary.csv 弄清列名怎么生成,再决定是以列为单位还是以 MedDRA 概念为单位建模型 |
| 你要把患者自述术语对齐到标准术语体系 | 已完成的五级 MedDRA 映射可直接复用 | 把 LLT 作为桥梁键,向上聚合到 PT 或 SOC 再跨患者比较 |
| 你在做症状负担或共现的探索性建模 | 逐日面板可直接构造成评分矩阵 | 注意同一硫患者的多个症状是强相关的,跨患者的意义独立性由 MedDRA 层级保证而不是行索引 |
| 你想验证"规范化 会让个体的真实负担被低估" | 官方同时提供原始自报值与标准映射结果 | 用 SOC 层级的实体数与原始症状数之差作为一个可解释的粗略指标 |
| 你在教妇科学的症状询问技巧 | 34 份真实症状清单本身就是教学素材 | 结合官方参与率(中位 95.27%)说明"可行的追踪负荷"是多少 |
| 你想做诊断延迟相关研究 | 提供的是确诊后的追踪,不是确诊过程 | 换资料源,本数据集不支撑这个角度 |
1.6 一句话判断
它不是"更大的队列",而是"更细的一条线":在一人一病的前提下,先把每天的个体化表达完整录下来,再回头用 MedDRA 把它翻译成标准语。任何期待从它里面得到人群结论的用法,都会在 34 这个数字上撞墙。
1.7 不适合谁:四条边界
不适合做诊断、分期或病因研究。 数据里没有影像、没有化验、没有手术记录;,入组依赖的是医生诊断而非强制的手术金标准。
不适合做药物或干预疗效评价。 入组标准已排除了正在接受激素治疗的人,且官方未给出干预分组、用药剂量与结局事件,研究所伴随的分析也不是疗效对照设计。
不适合做跨国家与跨族群的泛化验证。 34 名患者来自单一国家、单一医疗体系,招募路径还依赖一个国家级患者组织的专科医生名录——这是一个"能被组织触达、愿意连续数月打卡"的便利样本。
不适合当成缺失值填补方法的基准场。 官方把空白格统一定义为缺失值,但是"没选这个症状"与"选了但没填"在数据字典中的语义边界,需要读原始字典才能确认;直接套通用缺失填补会引入偏向"零负担"的假象。
§2 数据构成与规格
2.1 交付物一共六类
官方 Data Description 段落把交付内容列得很清楚,一共六类,全部是 CSV 表格加一段示范脚本,没有二进制、没有 WFDB 格式的信号、也没有图像。这个"轻"是它的第一特征:拿到访问权限之后,全部内容可以在几秒钟内读进内存。
| 交付物 | 文件名(官方写法) | 角色 | 是否每患者一份 |
|---|---|---|---|
| 入组信息 | Patient_onboarding_info.csv |
人口统计学与内膜异位相关背景 | 否,全队列一张表 |
| 入组字典 | Onboarding_codes_dictionary.csv |
解释入组表里每个编码字段的取值 | 否,配套字典 |
| 逐日追踪 | UserX.csv |
一名患者的逐日自报记录 | 是,每个患者一份 |
| 追踪字典 | Longitudinal_tracking_data_dictionary.csv |
解释纵向表每列的含义与标度 | 否,配套字典 |
| MedDRA 映射 | 症状到 MedDRA 实体的映射 | 把自述词条翻译成标准监管术语 | 否,全队列一份映射 |
| 示范脚本 | gettingStarted.R |
读取并解码入组表与逐日表的范例 | 否,一段 R 代码 |
值得注意的是,官方没有发布一张"全队列合并长表"。每位患者一张 UserX.csv,合并与对齐的工作留给了使用者——这不是疏漏,而是设计上的必然:各人的列不相同,任何强行合并都会引入语义损失,所以发布者选择保留原始形态。
2.2 入组表的字段形态
入组表是一次性采集的背景信息,官方只概括为"人口统计学与内膜异位相关背景信息",并配一张同名编码字典。这个"编了码"的处理本身就是一条重要信息:原始问卷里的多选题与自由文本被离散化成编码值,字典给出每个码对应的含义。
| 信息层 | 内容(官方概括) | 取值形态 | 使用注意 |
|---|---|---|---|
| 人口统计学 | 年龄、教育、生育情况等一般信息 | 编码值,靠字典解码 | 具体条数以字典为准 |
| 疾病背景 | 确诊经过、既往手术、病程相关信息 | 编码值 | 入组标准要求距上次手术至少三个月 |
| 月经与生育 | 规律化程度、生育史相关信息 | 编码值 | 入组标准要求每月规律月经且绝经前 |
| 治疗状态 | 是否使用激素治疗等相关信息 | 编码值 | 入组已排除正在使用者 |
| 逐日选择的症状清单 | 在访谈中确定的、该患者要追的症状 | 见逐日追踪表的列 | 逐人不同,这是核心差异源 |
字典的作用容易被低估。没有它,入组表只是一堆数字;有它,才能把"学历、既往手术、生育史"这类可能影响 reporting 行为的协变量拿来做分析。反过来说,若跳过字典直接把编码当等级变量放回模型,等于凭空假设这些类别之间存在顺序。
2.3 一天一行的纵向表
UserX.csv 是这个文件集的心脏。它的结构可以按列分成四组:日期列、症状列、状态列、行经与出血列。每行是一天,日期列标记这一天,其余列给出各症状当天的取值。
| 列组 | 具体列(官方描述) | 标度 | 语义说明 |
|---|---|---|---|
| 日期 | 追踪当天的日期 | 日历日期 | 纵向主键的一部分 |
| 自定义症状 | 该患者在访谈中选出的各条症状,每条一列 | 0–10 或 0–4,由患者自选 | 0 为无症状,上限为最高强度 |
| 一般身体状况 | 当日整体身体状况 | 1–10 或 1–4 | 官方明确 1 代表最差状态 |
| 一般情绪状况 | 当日整体情绪状况 | 1–10 或 1–4 | 同上,1 代表最差 |
| 是否行经 | 当日是否行经 | 1 是、0 否 | 二值标记 |
| 出血强度 | 当日出血强度 | 0–4 | 官方注明"大多数"患者有此列 |
| 用药 | 所记录的药物相关信息 | 随记录形式而定 | 官方在追踪描述中提及药物也在监控范围内 |
三个细节决定了后续分析的对错。第一,症状标度不是唯一的:每位患者可以为自己选择 0–10 或 0–4。这意味着不同患者的同一个数字含义不同,跨患者的纵向拼接必须先做标度归一,或者退回到"同一人内部的相对变化"。第二,“一般状况"类字段是 1 起而不是 0 起,并且 1 代表最差,与症状列的 0 代表无症状方向相反——把两种列混在一起做均值是一眼就能发现、却经常发生的错误。第三,出血强度列不是每人都有,官方的原话是"在大多数参与者中”,也就是说这一列的存在与否本身就是需要逐文件检查的信息。
读取与转表的标准写法:
library(readr)
library(dplyr)
library(tidyr)
#-- 入组信息与其编码字典
onb <- read_csv("Patient_onboarding_info.csv")
onbd <- read_csv("Onboarding_codes_dictionary.csv")
#-- 追踪数据字典:每一列的来源、取值与标度
ldict <- read_csv("Longitudinal_tracking_data_dictionary.csv")
#-- 逐患者读入并把宽表转长表,未填报的单元在转置后滤掉
files <- list.files(pattern = "^User.*\\.csv$")
long <- purrr::map_dfr(files, function(f) {
read_csv(f, col_types = cols(.default = col_double())) |>
mutate(user = tools::file_path_sans_ext(f)) |>
pivot_longer(c(-1, -user), names_to = "symptom", values_to = "score") |>
filter(!is.na(score))
})
#-- 再看一眼每位患者各追了多少天
long |> group_by(user) |> summarise(days = n_distinct(.data[[names(long)[1]]]))
import pandas as pd
#-- 入组表与字典
onb = pd.read_csv("Patient_onboarding_info.csv")
onbd = pd.read_csv("Onboarding_codes_dictionary.csv")
#-- 逐日宽表转长表:日期列留在索引侧,其余列压成症状-取值对
u1 = pd.read_csv("User1.csv")
date_col = u1.columns[0]
long = u1.melt(id_vars=[date_col], var_name="symptom", value_name="score")
reported = long.dropna(subset=["score"])
#-- 注意:跨患者拼接前要按各自选的标度归一化
print(onb.shape, u1.shape, reported.shape)
2.4 主键与跨表映射
三张数据表之间靠两层键连接。外层是患者:入组表里的一行对应 UserX.csv 里的一个文件,官方没有额外发布对照清单,文件名里的编号就是连接键。内层是症状:纵向表的列名经追踪字典解释语义,再经 MedDRA 映射落到标准术语节点。
| 层级 | 从 | 到 | 靠什么连接 | 可能失败的地方 |
|---|---|---|---|---|
| 患者层 | 入组表一行 | 一个 UserX.csv 文件 |
文件名中的患者编号 | 编号规则需以实际文件目录为准 |
| 编码层 | 入组表的编码值 | 可读含义 | Onboarding_codes_dictionary.csv |
编码可能对同一概念分多个字段 |
| 列层 | 纵向表的列名 | 症状含义与标度 | Longitudinal_tracking_data_dictionary.csv |
同名症状在不同患者文件里标度可能不同 |
| 术语层 | 症状 | MedDRA 实体 | 发布的 MedDRA 映射 | 部分通用状态类字段被官方排除在映射之外 |
最后一行有个容易踩的坑:官方在报告"被追踪症状"的数量时,用脚注明确把几类实体排除在外——一般情绪状况、一般身体状况、排卵试纸值、出血、药物以及健康感相关的实体都不计入"映射到 MedDRA 的症状"。所以官方给出的一个人中位 24.5 条症状,指的是医疗意义上的症状条目,而不是她在这个应用里每天要填的格子总数。两个数字都真实,但不相等。
2.5 MedDRA 的五个层级
MedDRA 是国际通行的监管医学术语词典,其结构不是扁平列表,而是一棵五层树。官方在方法部分写明,为便于标准化分析与跨研究比较,团队构建了一个覆盖 200 余种症状与状态的术语库,并把每一条都逐级映射到了这五个层级。
| 层级 | 英文全称 | 中文译名 | 在这一副作用地图上的位置 |
|---|---|---|---|
| LLT | Lowest Level Term | 最低层级术语 | 最贴近患者口语表达的入口,允许同义词与拼写变体 |
| PT | Preferred Term | 首选术语 | 真正的标准概念,跨研究比较应落在这里 |
| HLT | High-Level Term | 高位术语 | 把含义相近的 PT 归成一组 |
| HLGT | High-Level Group Term | 高位组术语 | 更粗的临床主题分组 |
| SOC | System Organ Class | 系统器官分类 | 最顶层,按器官系统划分 |
官方给出的每人在各层级上的实体数中位数分别是:LLT 28 条、PT 25.5 条、HLT 27.5 条、HLGT 19 条、SOC 10 条。这组数字值得细看:一个人平均的自选症状落在十个不同的器官系统里,这个功能临床上就有解释了——为什么这门病常常先看消化科或泌尿科而不是妇科。
层级选择决定了结论的松紧。用 SOC 聚合,34 个人的画像会变得整齐,代价是把"骨盆痛"与"腹胀"压成同一格里;用 PT 分析,跨患者的可比性最好,代价是每个人独特症状的表达数下降。合理做法通常是双轨:先用 SOC 做广度扫描,再用 LLT 回到个体看具体的描述语。
2.6 与同类资源的字段差异
| 字段/特征 | KI EndoLIST | GLENDA(同为子宫内膜异位症方向) | COPS(帕金森病逐日·逐时日记) | Flatten 新冠症状自报调查 |
|---|---|---|---|---|
| 数据形态 | 逐人 CSV 的每日自报面板 | 腹腔镜视频帧与病灶区域标注 | 腕表加速度计波形 + 症状日记 | 网页问卷自报记录 |
| 单位粒度 | 一人一天 | 一帧(可含 B 模式) | 一小时 | 一次提交 |
| 是否个体化 | 是,症状清单与标度逐人自定 | 否,标注标签体系统一 | 否,症状日记量表固定 | 否,问卷 schema 固定 |
| 是否有标准术语映射 | 有,MedDRA 五级 | 有,rASRM / Enzian 临床分型 | 无标准术语层 | 无标准术语层 |
| 队列规模 | 34 名患者 | 400 余台手术的语料池 | 帕金森病患者队列 | 大样本自报 |
| 数据出处 | 患者自报 | 手术视频人工标注 | 设备采集 + 自报 | 公众自愿提交 |
| 主要缺口 | 无躯体客观测量 | 无主观症状 | 随访时长有限 | 无纵向追踪 |
这张表要说明的只有一件事:在"个体化"这一列上,EndoLIST 是唯一的"是"。它不是四个里面规模最大的,也不是生理客观性最强的,它是唯一把"用什么词、用多细的尺"交给患者的那个。
§3 它是谁的数据
3.1 贡献者与机构
页面上署名的作者共九人,来自三个机构。这个机构组合本身解释了数据的形状:一个偏应用研发的民营研究所、一家全国性医保集团的地区分部、一所大学的公共卫生学院——做得出应用、找得到患者、也走得了伦理。
| 作者 | 所属机构(官方页面标注) | 可能承担的角色(按机构职能推断) |
|---|---|---|
| Tamar Zelovich | KI 研究所,Kfar Malal,以色列 | 主要联系人与研究主持 |
| Vered Klaitman | Maccabi 医疗服务集团南部区,以色列 | 患者招募与临床确认 |
| Shaked Feiglin | KI 研究所 | 数据整理与工程实现 |
| Alon Zelovich | KI 研究所 | 平台或方法支持 |
| Ronya Rubinstein | KI 研究所 | 研究执行 |
| Ronit Endevelt | 海法大学公共卫生学院 | 流行病学与公共卫生方法 |
| Pinchas Akiva | KI 研究所 | 技术与工程 |
| Maytal Bivas-Benita | KI 研究所 | 研究设计与执行 |
| Chen Yanover | KI 研究所 | 末位作者,通常主阵数据与方法 |
最后两列的"推断"二字要摊开说明:官方页面只给出作者名单与所属机构,没有逐人列出分工。上表第三列是循机构职能做出的判断,不能作为引用依据。
3.2 时间线
| 时间 | 事件 | 依据 |
|---|---|---|
| 伦理批准阶段 | 海法大学研究伦理委员会批准,批准号 367/23 | 官方 Methods 与 Ethics 段落 |
| 招募与入组阶段 | 经两次一对一访谈确认入组资格并确定症状清单 | 官方 Data collection 段落 |
| 追踪阶段 | 逐日记录,官方报告中位在研天数 134 天 | 官方 Study characteristics 表 |
| 2026 年 4 月 30 日 | 版本 1.0.0 发布,唯一的版本记录 | 官方 Versions 区域与 Release Notes |
| 至今 | 无修订版本 | Release Notes 仅一条"初始发布" |
官方没有给出招募起止的具体日期,也没有说明交 Hann 版本的时间窗口。这两处在附录 A 中标注为"未核验"。
3.3 采集场景:不是问卷,是一段关系
这段数据不是在问卷平台上自动攒出来的,它的采集过程带有人际成分。官方写明:为保证症状与标度定义被正确理解,研究团队提供了入组指导,并在追踪期间进行每月一次的回访核查。官方自己承认这种做法"可能影响了症状报告",但认为它是维持长期参与与数据连续所必需的。
这个承认很重要,因为它意味着数据里存在一个系统的、无法事后剥离的干预效应:每个月有人打电话来问,这件事本身就会改变下一个月的填报行为。想用这份数据做"自然状态下的自发报告行为"研究的人,必须先把这个结构性偏移摆出来。
除此之外,流程上还有三处会影响数据形态的安排:两次一对一访谈用于确定患者的个人症状清单;替每条症状选定自己要用的标度;应用内同时支持药品记录。这三个安排合起来,决定了这份数据在"结构多样性"上远超它在"样本量"上的表现。
3.4 来源层次
| 来源层次 | 是否本数据集所属 | 含义与后果 |
|---|---|---|
| 患者自报(一手) | 是 | 全部行数来自患者在应用中的主动填报,日期与强度都是自报 |
| 术语规范化(二手加工) | 是 | MedDRA 映射由研究团队完成,不是患者的原话 |
| 临床病历(客观记录) | 否 | 无电子病历、无化验、无影像、无手术记录 |
| 人口登记与外部验证 | 否 | 没有对照组、没有外部确认机制 |
自报性质的一手数据有个绕不开的性质:它的完整性取决于"患者今天有没有打开应用"这件事。官方给出的参与率定义相当严格——“至少半数症状有报告的天数占比”,这一口径下的中位数是 95.27%。换句话说,官方在这个严格定义下报出的数字已经很高;如果换成更宽松的口径(比如当天只要有一条填报就算),数字只会更高,但解释力会更弱。
§4 它最独特的东西
4.1 稀缺性:个体化不是装饰
自追踪数据并不稀缺,稀缺的是"每个患者的 schema 都不同"且仍然被映射到一个标准术语体系上。绝大多数已发布的自追踪数据集选择了固定问卷,因为固定问卷能直接合并,工程与分析都省事;也正因如此,"患者在自然状态下的个人化表达看上去是什么样"这个问题几乎没有被公开数据回答过。
EndoLIST 把这件事做完了:34 套各不相同的症状清单,各自配各自的标度,全部挂在 MedDRA 这棵树上。它证明了一件事——个体化表达与标准化术语不是二选一:可以先把个体的原话留住,再事后翻译。
4.2 差异化证据:一组能直接引用的规模数字
| 规模维度 | 官方给出的数字(中位,括号内为官方标注的区间端点) | 出处 |
|---|---|---|
| 应用内自建症状数 | 24.5(19.25–36.5) | Study characteristics 表 |
| 累计在研天数 | 134(93.5–218.75) | Study characteristics 表 |
| 追踪月经周期数 | 5(3–7) | Study characteristics 表 |
| 周期长度 | 28.5 天(26.98–31.1) | Study characteristics 表 |
| LLT 实体数 | 28(20.25–40.75) | Study characteristics 表 |
| PT 实体数 | 25.5(20–36.75) | Study characteristics 表 |
| HLT 实体数 | 27.5(21.25–38.75) | Study characteristics 表 |
| HLGT 实体数 | 19(16–25) | Study characteristics 表 |
| SOC 实体数 | 10(9–12) | Study characteristics 表 |
| 参与率(半数症状以上有报的天数占比) | 95.27%(76.81–97.41) | Study characteristics 表 |
这张表里的每一行都来自同一张官方表,脚注标注的为中位数与区间端点。把它们横向读过去,可以看到一幅"典型参与者"的画像:一个人追着二十多条属于自己的症状,跨了十个器官系统,连续记了五个周期、一百多天,绝大多数日子里把半数以上的症状填了。
4.3 一个患者的样子(按官方中位值描述)
为了避免把个体当成平均数,官方并没有给出逐患者的明细数字。因此这里只能用官方的中位数刻画"一份典型文件长什么样",而不是某一具体患者的真实记录。
| 元素 | 典型形态 | 说明 |
|---|---|---|
| 文件形态 | 一个 UserX.csv |
文件名内嵌患者编号 |
| 行数 | 中位约 134 行 | 一行一天,缺席日是否补行需以实际文件为准 |
| 症状列 | 中位约 24 列 | 另有一般状况、是否行经、出血强度等列 |
| 涉及的器官系统 | 中位 10 个 SOC | 一个人跨十个器官系统 |
| 标度 | 0–10 或 0–4 二选其一 | 逐人自定,跨人不可比 |
| 缺失 | 空白格 | 官方统一定义为缺失值 |
4.4 边界条件:官方自己圈定的三处
第一处是样本量。 官方在局限性里直说"参与者数量少,推广结论须谨慎"。同一段还指出团队介入(指导与月度回访)可能影响报告行为。
第二处是诊断确定性。 入组要求的是"经以色列子宫内膜异位症基金会名录中的专科医生"做出的正式诊断,且按以色列临床指南不强制手术确认。这不是缺陷,因为这正是临床实际;但它意味着"金标准"级别的确诊证据不在数据里。
第三处是再识别禁令。 官方声明已按 GDPR 与以色列隐私保护法完成匿名化,标识符已移除或做过泛化处理,并经风险评估认为再识别可能性可忽略;同时明确规定按 PhysioNet 受限健康数据许可,用户不得进行任何再识别尝试。这条不是建议,是协议条款。
4.5 脱落:七个人的去向也有结构
官方给出的未完成原因共三档,合计七人,占全队列的一部分比例。这组数字常被忽略,但它决定了"完整随访者"与"全体入组者"是两个不同的群体。
| 未完成原因 | 人数(占全队列,官方标注) |
|---|---|
| 怀孕 | 4(12%) |
| 个人原因(失业、离婚) | 2(6%) |
| 与战争相关的原因 | 1(3%) |
随访跨度为 1–10 个月的背后是一个很具体的现实:有七个人没能走完。脱落本身也带着这门病的印记——怀孕既是疾病的缓解信号也是随访的终点,战争与失业这类生活事件会直接中断一段追踪。这一条既是样本特征,也是“最终为什么只有三十四人”最诚实的答案。
此外还有一组与周期数相关的统计:不足 3 个周期者 6 人(18%),3 个及以上者 28 人(82%)。把它与上面的三档原因放在一起看,脱落并不是均匀分布在开始阶段,而是带着生活事件的时间戳。
§5 怎么拿到
5.1 目录结构
这一步必须先把话说在前头:本资源是受限访问资源,未签署协议时 https://physionet.org/files/ki-endolist/1.0.0/ 返回 403,文件清单无法匿名浏览。因此下面的目录结构是按官方 Data Description 段给出的文件名还原的,而不是按实际目录抓取的——这也是为什么本文在附录 B 里把进阶文件清单列为未核验内容。
| 路径(按官方命名还原) | 类型 | 说明 |
|---|---|---|
Patient_onboarding_info.csv |
CSV | 全队列入组信息,一行一名患者 |
Onboarding_codes_dictionary.csv |
CSV | 入组表编码字段的取值字典 |
UserX.csv |
CSV(逐患者) | X 为患者的编号,一行一天 |
Longitudinal_tracking_data_dictionary.csv |
CSV | 纵向表列名、含义与标度的字典 |
| MedDRA 映射文件 | CSV(文件名以实际目录为准) | 症状到 LLT/PT/HLT/HLGT/SOC 的映射 |
gettingStarted.R |
R 脚本 | 官方提供的读取与解码示范 |
把这份清单连起来看,会发现发布者把"字典"放在了与"数据表"同等的位置:两张表配两本字典。这在处理"逐人不同 schema"的数据时是必要的——没有字典,第二个人就无从知道第一人的那二十四列分别是什么。
5.2 访问门槛:两步,缺一不可
| 步骤 | 做什么 | 在哪做 | 说明 |
|---|---|---|---|
| 第一步 | 提交凭证申请(credentialing) | PhysioNet 账户设置 | 需实名并提供机构信息 |
| 第二步 | 签署《PhysioNet 受限健康数据使用协议 1.5.0》 | 项目页的申请入口 | 官方标明访问门槛由此两项组成 |
| 之后 | 下载文件 | 项目文件区或命令行 | 访问有效期与令牌绑定 |
许可是 PhysioNet Restricted Health Data License 1.5.0,比同平台常见的 ODC-BY 或 PhysioNet Credentialed Health Data License 更严,核心差别就在再识别禁令:官方在 Usage Notes 里写明,用户不得进行任何再识别尝试。二次发布、再分发、转交给未签署协议的同事,都不允许。
需要提醒的是"同事"这件事。受限数据协议约束的是签署者本人,不是机构。项目组内部把 CSV 拷贝共享是常见动作,但在协议口径下这是不被允许的;合规的做法是让每位要用数据的人各自完成凭证与签署。
5.3 批量下载
授权完成后,命令行方式最省事,用账户页生成的令牌代替密码:
#-- 1. 在 https://physionet.org/settings/ 生成令牌,写进 ~/.netrc
#-- machine physionet.org login <physionet用户名> password <令牌>
chmod 600 ~/.netrc
#-- 2. 递归取回 1.0.0 的全部文件(已授权状态下可用)
wget -r -N -c -np --user=<physionet用户名> --ask-password \
https://physionet.org/files/ki-endolist/1.0.0/
#-- 3. 未授权时会拿到 403,可用下面这行先确认当前状态
curl -s -o /dev/null -w "%{http_code}\n" https://physionet.org/files/ki-endolist/1.0.0/
若 --ask-password 在自动化环境里不好用,改用 --password=<令牌>,但注意令牌会出现在 shell 历史里;.netrc 方式更安全。
5.4 读取、解码与合并
官方给了 R 的示范脚本,说明发布者预期的下游环境就是 R / tidyverse 那套。下面这段把"读入—解码—合并—聚合到 SOC"的四步写全:
library(readr); library(dplyr); library(tidyr); library(stringr)
#-- 1) 入组信息与字典
onb <- read_csv("Patient_onboarding_info.csv")
onbd <- read_csv("Onboarding_codes_dictionary.csv")
ldict <- read_csv("Longitudinal_tracking_data_dictionary.csv")
meddra <- read_csv("meddra_mapping.csv") #-- 文件名以实际目录为准
#-- 2) 逐患者读入,保留该文件的编号作为用户键
files <- list.files(pattern = "^User.*\\.csv$")
panel <- purrr::map_dfr(files, function(f) {
d <- read_csv(f, show_col_types = FALSE)
mutate(d, user = str_extract(f, "\\d+"))
}, .id = NULL)
#-- 3) 宽转长:日期列 + 用户键保留,其余列为症状取值
date_col <- names(panel)[1]
long <- panel |>
pivot_longer(c(-all_of(date_col), -user), names_to = "symptom", values_to = "score") |>
filter(!is.na(score))
#-- 4) 搭上 MedDRA,先看每个人跨了几个器官系统
story <- long |>
left_join(meddra, by = c("symptom" = "tracked_symptom")) |>
filter(!is.na(SOC)) |>
group_by(user) |>
summarise(days = n_distinct(.data[[date_col]]), soc_n = n_distinct(SOC))
第 3 步里 filter(!is.na(score)) 这一行值得单独说一句。它把没填报的格子扔掉了,代价是"今天没填"与"今天这项无症状"被同等处理。在做一次性的静态描述时无所谓,在做"负担随时间变化"的分析时,这个滤法会把沉默的日子直接删掉,让序列看起来比实际连续。稳妥的做法是保留空行、另起一列标记是否填报,至少让后续的人能看到这个选择被做过。
5.5 MedDRA 映射怎么用
官方把每一条被追踪的症状逐级映射到了五个层级,这一步带来若干可直接复用的用法。
| 用法 | 做法 | 得到什么 |
|---|---|---|
| 跨患者的重名合并 | 以 PT 为聚合键 | 不同人的不同说法落到同一标准概念 |
| 器官系统的广度画像 | 以 SOC 为聚合键 | 一个人跨了多少系统,哪些系统里症状最少 |
| 中层主题分组 | 以 HLGT / HLT 为层 | 介于两者之间的临床主题粒度 |
| 术语追溯 | 以 LLT 为入口 | 保留患者原始口语表达与拼写变体 |
| 与其他数据集对接 | 以 PT 为公共键 | 与其他 MedDRA 编码的临床数据源合并 |
一个务实的提醒:MedDRA 术语本身受版权与许可证约束,通常要求使用者持有相应授权(例如通过订阅或特定身份获得使用权)。数据集把"映射到 MedDRA"作为事实发布,但完整术语树的再使用的边界并不在这个数据集的许可里,需要单独确认。
5.6 五个坑
坑一:把不同人的同一个数字当成同一个强度。 有人用 0–10,有人用 0–4。做跨患者的绝对值比较前必须先归一,或者只做个体内的相对变化。
坑二:把一般状况列与症状列同向处理。 一般身体与情绪状况是 1 表示最差,症状列是 0 表示无症状,方向相反,起点也不同。
坑三:把没选当成没症状。 每个人的列不同,缺列的语义是"未追踪",缺值的语义是"未填报",两者都不是"零分"。
坑四:以为官方报的症状数等于每天填的格子数。 官方在统计症状时排除了一般情绪状况、一般身体状况、排卵试纸值、出血、药物与健康感相关实体。
坑五:把 34 当样本量用。 三十四个人、五个月经周期、单一国家、选取口径还排除了正在接受激素治疗的人——它撑得起探索性分析与方法原型,撑不起人群推断。
§6 与站内同类资源的关系
6.1 关系图谱
| 站内数据集 | 与本词条的关系 | 分工 |
|---|---|---|
| GLENDA(rid 820) | 同为子宫内膜异位症方向 | 影像侧:腹腔镜视频中的病灶区域标注,看医生眼里的病 |
| Endometrial Immune Cell Atlas(rid 1223) | 同为子宫内膜相关的妇科样本 | 组织与单细胞层面的视角 |
| Endo-Aid(rid 1283) | 同为子宫内膜方向的深度学习资源 | 病理影像侧:活检全切片的检测任务 |
| COPS(rid 1119) | 同为自报症状日记 | 另一个慢病(帕金森病)的穿戴式设备与逐时日记组合 |
| Flatten 新冠症状自报调查(rid 1282) | 同为自报数据 | 短时限、大样本、网页问卷形态 |
| CADEC(rid 464) | 同为患者自报语料 | 文本侧:自报的药物不良事件标注语料 |
| ENCoDE 皮肤色调度量库(rid 1571) | 同为 PhysioNet 上的前瞻性受限 / 凭证化资源 | 另一个把主观属性量化的实例 |
| Add Health(rid 1354) | 同为长期纵向队列 | 社会行为调查侧的长期随访范式 |
6.2 检索路径
想找"自己关心的子宫内膜异位症数据"的人,在库内基本会走到一个分岔:一类是看得见的病灶,一类是患者说的症状。前者在 GLENDA 与 Endo-Aid 里,有明确的边界框与像素级口罩,能直接做检测与分割;后者只在这里有,且不以可见病灶定义疾病,而以"这一天我说有多疼"来定义。
| 检索意图 | 应该去哪 | 为什么 |
|---|---|---|
| 找能训练病灶检测模型的影像 | GLENDA、Endo-Aid | 有像素级或框级标注 |
| 找能支撑症状动态分析的自报面板 | 本数据集 | 库内唯一逐日、逐人自定义的症状队列 |
| 找子宫内膜的组织或单细胞证据 | Endometrial Immune Cell Atlas | 转录与免疫层面的疾病证据 |
| 找长时限的大样本随访范式 | Add Health | 队列规模与随访年限都远大于本条 |
| 找自报类语料做 NLP | CADEC、Flatten | 文本与问卷形态齐全 |
6.3 与 GLENDA 的分工判据
GLENDA 与这份数据是一枚硬币的两面,但面的朝向完全不同,两者之间的数字不可互换:GLENDA 的几百台手术语料池、五类病灶分型、mAP 低基线这类数字属于影像任务,与本数据集的三十四人、二十余条症状、五个 MedDRA 层级无关,任何一个做跨界类比的做法都会得出错误结论。
| 判据 | GLENDA | KI EndoLIST |
|---|---|---|
| 数据本体 | 妇科腹腔镜手术视频截取的帧与序列 | 移动端应用里的逐日自报表格 |
| 谁的视角 | 医生与标注者的视角(看见的东西) | 患者的视角(感受到的东西) |
| 标注方式 | 人工框选与多边形轮廓 | 患者自行填写,事后映射到标准术语 |
| 典型任务 | 检测、分割、病灶分类 | 时序建模、个体画像、术语对齐 |
| 标签一致性 | 体系统一,跨患者可比 | 逐人自定义,跨患者要靠 MedDRA 桥接 |
| 共同的边界 | 都不可用于人群流行病学推断 | 都不可用于人群流行病学推断 |
把它们配成一对使用时,最有意思的角度不是合并,而是对不齐:同一个人的影像分期很轻,症状负担却很重,这是子宫内膜异位症临床上最常被讲、却最难被量化的现象。要写这句话的证据,需要两个数据集之间的个体级连接,而这两份数据都没有提供可以相接的患者编号——这一点要先说清,不能默认存在。
§7 质量评估与局限性
7.0 前置校正:它的质量控制手段是"人在回路"
与生理信号库不同,本套数据没有可自动核对的 ground truth。它的质量控制发生在采集端:两次一对一访谈确保症状清单被正确理解,团队在入组时指导症状与标度的定义,之后每月一次回访核查。官方同时坦承这一做法可能影响了报告行为,但认为是维持参与度所必需的。
这个取舍的直接后果是:数据质量与数据污染来自同一个来源。月度回访既减少了"填错、漏填、标度用反"这类噪声,也增加了"被观察效应"这类系统偏移。任何使用这份数据做行为研究的人,都要把这一点写进方法部分。
7.1 五维评分
| 维度 | 评价 | 依据 |
|---|---|---|
| 数据独特性 | 高 | 库内唯一"逐人 schema"的妇科慢病自报队列,配五级 MedDRA 映射 |
| 文档完整性 | 高 | 两张表配两本字典,另给一段读取示范脚本 |
| 术语规范化 | 高 | 全部症状映射到 MedDRA 五个层级,另有 200 余条术语库 |
| 规模与统计效力 | 低 | 34 名患者、单一国家、严格入组标准 |
| 可复现性 | 中 | 受限获取使多数人无法自主复现,公开可核验的结构信息有限 |
7.2 两层结构:自报层与术语层
| 层 | 谁产生的 | 可信的部分 | 需要保留怀疑的部分 |
|---|---|---|---|
| 自报层 | 患者 | 个体内部的相对变化 | 绝对强度不可跨人比较,时间与强度均未经外部校准 |
| 术语层 | 研究团队 | 概念归属与层级位置 | 映射粒度可能归并掉患者自认为重要的细微差别 |
两层不一致的地方正是研究价值最高的地方:当两个患者的自述完全不同、却落到同一个 PT 上时,说明 MedDRA 收窄了表达;当同一条自述词落到两个不同 SOC 时,说明症状本身就是多系统的。这两类冲突在数据里应当被显式列出,而不是被聚合操作吃掉。
7.3 可枚举偏差
| 偏差来源 | 机制 | 后果 | 可减轻的程度 |
|---|---|---|---|
| 入组筛选偏差 | 要求未用激素治疗、月经规律、绝经前、术后三个月以上 | 排除了相当一部分真实患者,尤其是治疗中的重症群体 | 不可减轻,写进局限性 |
| 组织招募偏差 | 通过国家级患者组织的专科医生名录招募 | 入组者是"被组织触达且愿意长期打卡"的人 | 不可减轻,写进局限性 |
| 地缘与族群偏差 | 全部为以色列单一医疗体系下的患者 | 外推到别的医疗体系与人种前需谨慎 | 不可减轻 |
| 观察效应 | 入组指导与月度回访 | 报告行为比自然状态更规范、也可能更"配合" | 不可减轻 |
| 生存者效应 | 七人未完成随访 | 完整随访者与全体入组者是两个群体 | 可通过分组敏感性分析部分缓解 |
| 自选标度偏差 | 0–10 与 0–4 二选其一 | 同一语义下不同人的分辨率不同 | 可通过标度归一与个体内分析缓解 |
7.4 外部验证
官方把这份数据定位为一项已提交 / 在审研究(“Patient-Tailored Symptom Tracking in Endometriosis: A Framework to Explore Disease Variability and Burden”)的产物,并建议在以下几类研究中使用:子宫内膜异位症症状多样性与模式研究、症状负担与共现的探索性建模、促进医患沟通的创新方法开发、治疗决策与个体化照护策略研究。
需要强调的是:截至目前,这份数据的外部验证规模是零——它是 2026 年 4 月才发布的新资源,任何"这个方法在 EndoLIST 上通常表现如何"的说法都还没有积累。它没有走过"被反复引用后形成稳定用法"的阶段,也没有与任何挑战赛绑定。换个角度看这件事有好处:不存在"被某届竞赛定义过任务口径"的包袱,适合从头定义任务;也有代价:没有现成的基线分数可以对照。
7.5 它为何值得持续关注
三个理由。第一,它把"个体化"这个方向从口号变成了可引用的数据结构,后续要做同类研究的团队可以直接沿用这里的设计(两次访谈定症状、自选标度、术语后置映射)。第二,MedDRA 这个桥梁让它在"患者自述 → 标准术语"这一整条链上都有参考价值,即使不是为了子宫内膜异位症。第三,它诚实:官方主动列出了研究团队介入、样本量小、诊断不强制手术确认这三条局限,并把脱落原因也报了出来——这种透明度让它即使在小体量下仍然可引用。
§8 生态位与历史
8.1 沿革:自追踪从"记流水账"到"可被研究者引用"
过去十来年,移动端自追踪在慢病管理里从边缘变成了常态,但公开数据侧的进展一直落后。原因不复杂:应用厂商没有发布义务,研究者的数据往往绑在某个具体项目上,愿意整理发布的团队还要面对匿名化与再识别风险的审查。于是公开的自追踪数据集中在两类:一类是短暂规模招募的问卷调查(一次性、成本低),一类是穿戴式设备的客观信号(可自动化、不依赖患者打字)。
介于两者之间的那一格——患者的、长期的、逐日的、且内容是自定义的——长期是空的。官方在背景里点明了这个 gap:多数移动应用只提供基础症状追踪,缺少个性化接入与完整采集能力,这个缺陷既拖慢诊断也阻碍了对患者的优化处理,这一说法的出处是两篇年份较新的系统性综述,属于学科共识层面的证据,但它解释了为什么一份只有三十四人的数据值得单独发布。
8.2 与挑战赛的关系:没有关系
这一点需要明说,因为很多人默认 PhysioNet 上的新数据总会挂上某届竞赛。本资源与任何 PhysioNet / CinC 挑战赛都没有绑定关系,官方 Usage Notes 里列出的用途是研究方向而不是比赛任务:症状多样性与模式、症状负担与共现的探索性模型、促进医患沟通、辅助治疗决策与照护个性化。
| 有竞赛绑定的资源 | 无竞赛绑定的资源(本数据) |
|---|---|
| 任务口径被赛题定义过 | 任务口径由使用者自己定义 |
| 有公开排行榜与基线分 | 无基线分,第一篇复现由你自己写 |
| 通常有较大的训练规模 | 规模小,不适合排行榜式竞争 |
| 数据通常被裁条包装为片段 | 数据保持原始形态发布 |
对于早期资源来说,"没有竞赛"通常意味着冷启动更难;反过来,它也没有被某届赛题的伦理与任务口径锁死,适合从头设计一个真正贴合"个体级动态"的任务。
8.3 生态位:一张二维坐标里的位置
把妇痛领域的公开数据按两个维度排——客观性(横轴:客观测量到主观自报)与个体化(纵轴:固定问卷到逐人自定义)——EndoLIST 落在左上角的空位置。
| 位置 | 代表资源 | 特征 |
|---|---|---|
| 右上(客观 + 个体化) | 暂无 | 理论上存在于个体化的连续生理监测,公开数据极少 |
| 左上(主观 + 个体化) | 本数据 | 逐日自报,症状清单与标度逐人自定 |
| 右下(客观 + 固定) | GLENDA、Endo-Aid | 影像与病理,标签体系统一 |
| 左下(主观 + 固定) | Flatten 自报调查、各类固定量表 | 可比性强,表达空间小 |
它是这个象限里目前唯一的一份妇科公开数据。这既是优势也是提示:没有第二个同类资源可以做外部对照,任何在这份数据上得出的模式,都暂时无法"在第二个同类资源上重复验证"。
8.4 谁会用它
官方建议的四类用途对应四类人:做症状多样性与模式研究的妇科研究者、做负担与共现模型的机器学习研究者、做医患沟通工具的产品团队、做真实世界患者报告结局的证据工程师。第四类人要注意一件事——患者报告结局通常要求经过效度验证的量表(比如 EHP-30 一类的专用量表),而这份数据的量表是逐人自定的,不等价于任何已验证量表。用它做 RWE 时,要么明确说明它没有经过量表效度验证,要么只用它的"动态形态"而不是"绝对分值"。
§9 使用指引
9.1 三种角色的路径
| 角色 | 第一天 | 第一周 | 注意事项 |
|---|---|---|---|
| 症状动态建模者 | 读完官方 Data Description,按 §5.2 走完授权 | 用 §5.4 的脚本做宽转长,先在一人上画时序图 | 标度要先归一,禁止跨人比较绝对值 |
| 术语研究者 | 读 MedDRA 映射结构,看 LLT 到 SOC 的路径 | 把 PT 作为跨研究的公共键,与别的数据集对接 | MedDRA 自身的授权要单独确认 |
| 产品原型团队 | 用三十四份真实症状清单反推"典型 App 该有哪些字段" | 用参与率中位 95.27% 这个数量级做留存目标参照 | 记住这三十四人都被每月回访过,自然留存不会这么高 |
9.2 一条最短的可用流程
#-- 1) 确认当前是否已授权(403 表示尚未签署 DUA)
curl -s -o /dev/null -w "%{http_code}\n" \
https://physionet.org/files/ki-endolist/1.0.0/
#-- 2) 授权后递归取回全部文件
wget -r -N -c -np --user=<physionet用户名> --ask-password \
https://physionet.org/files/ki-endolist/1.0.0/
#-- 3) 看一眼规模:入组表行数应与患者数一致
wc -l Patient_onboarding_info.csv
ls User*.csv | wc -l
import pandas as pd
import glob
import re
#-- 逐个读入患者文件,转成一人一天一值的长表
frames = []
for path in sorted(glob.glob("User*.csv")):
df = pd.read_csv(path)
date_col = df.columns[0]
long = df.melt(id_vars=[date_col], var_name="item", value_name="score")
long["user"] = re.findall(r"\d+", path)[0]
frames.append(long)
panel = pd.concat(frames, ignore_index=True)
reported = panel.dropna(subset=["score"])
#-- 不要把不同患者的 score 直接放在一起比较:标度是每人自选的
print(reported.groupby("user")["item"].nunique().describe())
最后那行只是为了让使用者尽快看到"每个人追的项目数各不相同"这件事。它输出的每个人所占的行数会提醒你:这不是一张规整的宽表面板,而是一堆形态各异的积木。
9.3 引用方式
官方在页面给出了标准引用格式,建议照抄,不要自行翻译作者名:
| 引用对象 | 内容 |
|---|---|
| 数据集(带版本) | Zelovich, T., Klaitman, V., Feiglin, S., Zelovich, A., Rubinstein, R., Endevelt, R., Akiva, P., Bivas-Benita, M., & Yanover, C. (2026). KI EndoLIST: Endometriosis Longitudinal Individualized Symptoms Tracking Dataset (version 1.0.0). PhysioNet. https://doi.org/10.13026/k99q-fm63 |
| BibTeX | @article{PhysioNet-ki-endolist-1.0.0, ... doi = {10.13026/k99q-fm63}},完整内容点项目页 Cite 按钮复制 |
| 平台 | PhysioNet 平台综述(2026 年发表于 Nature Health),官方要求一并引用 |
| 版本与日期 | 注明 version 1.0.0、发布日期 2026 年 4 月 30 日 |
| 补充说明 | 建议同时说明:是否使用了 MedDRA 映射、采用哪个层级聚合、以及对未填报单元的处理方式 |
官方另有一个指向"最新版本"的 DOI(10.13026/84gy-nv92)。写论文时应优先用带版本号的那个,因为"最新版本"会随后续版本变化,别人按它去找时拿到的可能不是你用的那一份。
§10 AI 使用声明
| 项目 | 声明 |
|---|---|
| 文本生成 | 本文由 AI 辅助撰写,编辑把关结构与事实核验 |
| 数字来源 | 规模、结构、边界三类数字来自 PhysioNet 官方项目页(版本 1.0.0)与其 Study characteristics 表 |
| 文件核验 | 文件目录为受限访问,未授权状态下返回 403;文件名依据官方 Data Description 还原,未逐文件核对其存在与列宽 |
| 不一致说明 | 浏览卡片对随访跨度写为 1–10 个月,同一项目的 Study characteristics 表给出累计在研天数中位 134 天,两处口径不同,本文同时列出 |
| 论文信息 | 仅依据项目页所列参考文献(其中主稿件标注为在审),未读全文 |
| 未核验内容 | 各表的具体行数与列数、每位患者的实际随访起止区间、MedDRA 映射文件的确切文件名与列结构 |
| 图像 | 无配图;封面为生成式提示词,不含真实病历信息 |
| 免责 | 本文不构成临床建议;数据使用须签署 PhysioNet 受限健康数据使用协议并遵守再识别禁令 |
常见误读(避坑清单)
| 说法 | 实际 | 证据 |
|---|---|---|
| 「它有三十四位受试者的完整随访」 | 七人未完成随访:怀孕四人、个人原因两人、战争相关一人 | 官方 Study characteristics 表的未完成原因 |
| 「症状数统一口径是二十四个」 | 中位 24.5 条,且官方统计时排除了一般身体与情绪状况、排卵试纸、出血、药物等类 | 官方表与其脚注 |
| 「所有患者每天都在填」 | 官方参与率定义为"至少半数症状有报告的天数占比",中位 95.27% | 官方参与率定义脚注 |
| 「所有患者的标度都是 0–10」 | 0–10 与 0–4 两种,由患者自选 | 官方 Data collection 段落 |
| 「1 分代表症状很轻」 | 一般身体与情绪状况列里 1 代表最差,症状列里 0 代表无症状 | 官方 Data collection 段落对两类标度的说明 |
| 「可以直接下载」 | 受限访问,须先完成凭证化并签署数据使用协议 | 项目页 Access Policy 与文件区 403 |
| 「有影像可以对照病灶」 | 无任何影像、化验与手术记录,全部为患者自报 | 官方 Data Description 与入组标准 |
| 「诊断经过手术确认」 | 按以色列临床指南不强制手术确认 | 官方 Study population 段落 |
| 「症状数等于 MedDRA 实体数」 | 一人中位 24.5 条症状、28 条 LLT、10 个 SOC,各层数目不同 | 官方 Study characteristics 表 |
| 「症状取值可以跨患者的同一列直接比较」 | 每人列名各不相同,"缺席的列"表示未追踪而非无症状 | 官方对逐人 profile 的说明与字典设计 |
FAQ
Q1:随访到底是多久?一个月到十个月的说法和一百三十四天是不是矛盾?
不矛盾,是口径不同。浏览列表页对该项目的描述写的是"34 名患者在 1–10 个月的监测期内的每日症状";项目正文的 Study characteristics 表则给出"每人累计在研天数"的中位数 134 天(官方标出的区间端点为 93.5–218.75 天),以及"追踪周期数"中位 5 个(端点 3–7)。前者是范围描述,后者是关于中间位置的报告值。写论文时应引用后者并注明它是中位数。
Q2:为什么怀孕会被算作脱落?
官方把"怀孕"列为未完成原因之一,共四人,占全队列 12%。这不是差错:怀孕本身会终止症状追踪——妊娠期月经停止、激素状态剧变、且子宫内膜异位症症状在孕期常缓解,继续追踪出来的数据不再进入同一分析口径。报告中同时列出的是个人原因(失业、离婚)两人、与战争相关的一人。
Q3:能不能直接合并所有人的表来做深度学习?
可以合并,但要先把三件事摆平:标度(0–10 与 0–4 需归一)、语义(同一列名在不同人身上含义可能不同)、对齐(日期轴因人而异)。合并之后三十四个样本量对于"用数据换性能"的路线明显不足,更适合的做法是把每个人当作一条序列,做个体内建模或用 MedDRA 上的 PT 作为跨人共享的特征空间。
Q4:MedDRA 映射具体到哪一列?需要自己再去买术语表吗?
项目页写明发布物中包含"被追踪症状到 MedDRA 实体的映射",且方法部分说明映射从 LLT 一路走到 PT、HLT、HLGT、SOC 五个层级。至于 MedDRA 术语库本身的授权,那是与这份数据集分开的另一件事,通常需要单独的使用资格,建议在项目启动前确认。
Q5:能不能拿它做诊断模型?
不能。它的每一行都是确诊之后的症状自报,入组时就已经要求"经认可的专科医生做出正式诊断"。数据里没有对照组、没有疑似病例、没有影像与化验,任何"用症状预测是否患有子宫内膜异位症"的模型在这里都学不到东西,因为标签是常数。
Q6:它会更新吗?
截至本次核验(2026 年 10 月 28 日),KI EndoLIST 内膜异位症症状随访库在 PhysioNet 上只有一条版本记录:Versions 区只有 1.0.0,Release Notes 也只有"初始发布"一句,没有后续版本的承诺。判断一个资源会不会更新,最实际的信号是它是否挂在某项持续性研究上;这里对应的主稿件标注为在审状态,未来是否随稿件扩版,官方没有给出承诺。
Q7:未授权时能看多少内容?
项目页本身(摘要、背景、方法、数据描述、使用说明、伦理与参考文献)完全公开,可以据此完成方法设计与决策;文件区返回 403,拿不到任何 CSV。建议在申请访问之前先把文档读完,把要做的分析与要核的问题理清楚,避免签完协议才发现数据不满足需求。
Q8:它与 GLENDA 能不能拼起来做"影像—症状"关联研究?
愿望很好,但两份数据之间没有可相接的患者编号:GLENDA 的来源是手术视频语料池,KI EndoLIST 的来源是 APP 自报队列,人群、国家、时间都不重叠。任何"同一患者的病灶与症状对齐"的设计目前都无法实现,只能做人群层面的对照描述,而且要在论文里写清这是两个独立样本的对照而非配对。
Q9:数据能不能支持按月经周期相位的分析?
能,且这是它的设计用途之一。纵向表里有"是否行经"(1 是、0 否)与出血强度(0–4,多数患者有),官方还给出了周期长度的中位值 28.5 天。用行经标记切分周期、再把症状强度对齐到周期相位是可行的;需要注意的是周期长度因人而异,官方给出的区间端点已经有跨度,应按各自的实际标记切分而不是假设 28 天整。
Q10:它属于开放数据吗?能不能公开发布由其派生的数据?
不属于。许可为 PhysioNet 受限健康数据许可 1.5.0,要求签署数据使用协议,且明确禁止任何再识别尝试。派生数据、二次发布、转给未签署者都不在许可范围内。想在论文里附说明可以,想在论文仓库里放 CSV 不可以。
术语表
| 术语 | 解释 |
|---|---|
| 子宫内膜异位症 | 子宫内膜样组织生长在子宫腔以外的慢性妇科疾病 |
| 诊断延迟 | 从首次出现症状到正式确诊之间的时间,官方引用值为可达十二年、平均 6.8 年 |
| 患者报告结局 | Patient-Reported Outcome,由患者直接报告而非由临床测得的健康状态 |
| 个体化症状清单 | 每位参与者在访谈中自行确定的、要长期追踪的症状集合 |
| 强度标度 | 0–10 或 0–4 两档,由患者自选;0 为无症状,上限为最高强度 |
| 一般身体状况 | 当日整体身体的主观状态,1–10 或 1–4,1 代表最差 |
| 一般情绪状况 | 当日整体情绪的主观状态,同上标度,1 代表最差 |
| 行经标记 | 当日是否处于经期,1 是、0 否 |
| 出血强度 | 0–4 的主观分级,官方注明多数参与者有此列 |
| MedDRA | 监管活动医学词典,国际通行的医学术语标准 |
| LLT / PT | 最低层级术语 / 首选术语,前者贴近口语,后者为跨研究比较的概念单位 |
| HLT / HLGT | 高位术语 / 高位组术语,介于首选术语与器官系统之间的中层分组 |
| SOC | 系统器官分类,MedDRA 的最顶层,按器官系统划分 |
| 参与率 | 官方定义为"至少半数症状有报告的天数占比" |
| 脱落 / 未完成随访 | 未按计划走完追踪期的参与者,官方列出三档原因共七人 |
| GDPR | 欧盟通用数据保护条例,官方称已按其要求完成匿名化 |
| 再识别禁令 | 受限健康数据使用协议中禁止尝试识别受试者的条款 |
| 凭证化 | credentialing,PhysioNet 对申请者身份与研究背景的审核流程 |
| 数据使用协议 | Data Use Agreement,签署后方可取得受限数据的法律文件 |
| 逆向派生数据 | 由原始数据加工得到的数据集,在受限许可下不得再发布 |
附录 A:核心数字核对表
| 数字项 | 值 | 出处 |
|---|---|---|
| 患者数 | 34 名以色列患者 | 官方 Abstract |
| 版本 | 1.0.0,唯一版本 | 官方 Versions 区 |
| 发布日期 | 2026 年 4 月 30 日 | 官方 Versions 区 |
| 随访跨度 | 1–10 个月 | 官方浏览卡片对该项目的描述 |
| 累计在研天数 | 中位 134 天(官方给出端点 93.5–218.75) | 官方 Study characteristics 表 |
| 追踪周期数 | 中位 5 个(官方给出端点 3–7) | 官方 Study characteristics 表 |
| 周期长度 | 中位 28.5 天(端点 26.98–31.1) | 官方 Study characteristics 表 |
| 每人症状数 | 中位 24.5 条(端点 19.25–36.5) | 官方 Study characteristics 表 |
| LLT / PT / HLT / HLGT / SOC 实体数 | 28 / 25.5 / 27.5 / 19 / 10 | 官方 Study characteristics 表 |
| 参与率 | 中位 95.27%(端点 76.81–97.41) | 官方 Study characteristics 表 |
| 未完成随访 | 4 人怀孕、2 人个人原因、1 人战争相关 | 官方 Study characteristics 表 |
| 周期数不足三者 | 6 人(18%),三者及以上 28 人(82%) | 官方 Study characteristics 表 |
| 症状术语库规模 | 200 余种症状与状态 | 官方 Methods 的 Symptom classification 段 |
| 伦理批准号 | 海法大学研究伦理委员会 367/23 | 官方 Methods 与 Ethics 段 |
| 许可 | PhysioNet Restricted Health Data License 1.5.0 | 官方 Access 区 |
| 数据集 DOI | 10.13026/k99q-fm63 | 官方 Discovery 区 |
| 患病率与诊断延迟 | 育龄女性约 6%–10%,延迟可达十二年、平均 6.8 年 | 官方 Background 段所引文献 |
附录 B:数字的来源分层
第一层:官方项目页的正文与表格。 患者数、日期、许可、DOI、症状术语库规模、伦理批准号、以及 Study characteristics 表里的全部中位值与端点值。这些数字在本词条里凡是出现的地方都标了出处。
第二层:官方浏览卡片的项目描述。 "34 名患者在 1–10 个月的监测期内的每日症状"这一句来自 PhysioNet 资源列表页对该项目的一句话介绍,与正文表格的口径不同,本文在 §10、FAQ 第一问与常见误读中都做了并列说明。
第三层:按文件名还原的结构描述。 官方 Data Description 段给出了六类交付物及其文件名(含 UserX.csv 这种通配写法),但 MedDRA 映射文件的确切文件名未写明,本文在 §5.1 中对该行标注了"文件名以实际目录为准"。
第四层:未核验。 各表的具体行数、每位患者的实际列数与列序、MedDRA 映射文件的确切列名、以及逐日时间序列的具体形态。这些都需要取得访问权限后逐文件核对,超出了本文的核验范围。
附录 C:完整参考文献
| 编号 | 文献 | 链接 | 用途 |
|---|---|---|---|
| 1 | KI EndoLIST v1.0.0 官方项目页 | https://physionet.org/content/ki-endolist/1.0.0/ | 全部规模、结构、边界数字的第一来源 |
| 2 | 该项目的文件目录(受限) | https://physionet.org/files/ki-endolist/1.0.0/ | 文件清单核验(未授权,403) |
| 3 | PhysioNet 平台综述(2026,Nature Health) | https://doi.org/10.1038/s44360-026-00096-z | 托管模式与引用规范 |
| 4 | Horne AW, Missmer SA. Pathophysiology, diagnosis, and management of endometriosis. BMJ 2022 | https://doi.org/10.1136/bmj-2021-070750 | 患病率与延迟背景 |
| 5 | Zondervan KT, Becker CM, Missmer SA. Endometriosis. NEJM 2020 | https://doi.org/10.1056/NEJMra1810764 | 临床表现的多系统特征 |
| 6 | Edgley K, Horne AW, Saunders PTK, Tsanas A. 数字技术用于子宫内膜异位症症状追踪:已知、未知与前景. Cell Rep Med 2023 | https://doi.org/10.1016/j.xcrm.2023.101192 | 自追踪技术的缺口背景 |
| 7 | Zelovich T, et al. Patient-Tailored Symptom Tracking in Endometriosis(主稿件,在审) | 无在线链接 | 数据来源的研究背景 |
编号为 4 至 6 的三篇来自官方页面参考文献列表,本文按其公开标识符写出,未读全文;正式引用前请以原始文献为准。
附录 D:任务代码
任务一:把一个人的症状面板对齐到月经周期相位
import pandas as pd
#-- 读某位患者的逐日表
df = pd.read_csv("User1.csv")
date_col = df.columns[0]
df[date_col] = pd.to_datetime(df[date_col])
#-- 用是否行经标记切出周期起点:连续的行经期第一天算一个新周期
bleed = df["menstruating"] if "menstruating" in df.columns else df.filter(like="menstruat").iloc[:, 0]
df["cycle_start"] = (bleed == 1) & (bleed.shift(1).fillna(0) == 0)
df["cycle_id"] = df["cycle_start"].cumsum()
#-- 相位编号:每个周期内的第几天
df["cycle_day"] = df.groupby("cycle_id").cumcount() + 1
#-- 注意:行经列的列名以官方字典为准,此处仅为写法示意
print(df.groupby("cycle_day").size().head())
任务二:统计一个人跨了多少个器官系统
library(readr); library(dplyr)
#-- 映射文件的列名需按官方字典调整
meddra <- read_csv("meddra_mapping.csv")
u1 <- read_csv("User1.csv")
symptoms <- setdiff(names(u1), c(names(u1)[1],
"general_physical_condition",
"general_emotional_condition",
"menstruating", "bleeding"))
covered <- meddra |> filter(tracked_symptom %in% symptoms)
covered |> distinct(SOC) |> nrow() #-- 器官系统数
covered |> count(SOC, sort = TRUE) #-- 各系统内的词目分布(仅当前列的描述)
第二段代码最后一行输出的只是针对这一个人在这一列点名称下的形态描述。它的作用是提示"先看一个人的分布形态",不是给出人群结论——三十四个人之间这句话的差异比模型之间的差异更值得报告。
附录 E:如果只记五件事
| 序号 | 记住什么 | 为什么 |
|---|---|---|
| 1 | 34 人、逐日、随访中位 134 天 | 这三个数字定义了它的纵深与它的天花板 |
| 2 | 症状清单与标度逐人不同 | 一切跨患者的合并都必须先过这关 |
| 3 | 全部症状映射到 MedDRA 五个层级 | 它是个体表达与标准术语之间唯一的桥 |
| 4 | 受限访问,禁止再识别 | 拿到数据之前的门槛与拿到之后的红线 |
| 5 | 它是自报数据,不是诊疗记录 | 诊断、分期、疗效评价都不在这份数据的能力范围内 |
编辑说明
本文的核验时间为 2026 年 10 月 28 日,核对方式为直接访问 PhysioNet 官方项目页与其提供的引用格式。文件目录为受限访问,未授权状态下返回 403,因此未能逐文件核对各表的列结构与行数,§5.1 的目录按官方 Data Description 段落还原。关于随访跨度,浏览卡片写的是 1–10 个月,同一项目的 Study characteristics 表给出累计在研天数中位 134 天,两处口径不同,本文在 §10、常见误读与 FAQ 第一问中并列列出,未做换算。
未覆盖的内容包括:两张字典表的具体行数与字段条数、MedDRA 映射文件的确切列名、每位患者的实际就诊与随访日期区间、以及随时间而来的症状共现结构。这些都需要取得访问权限后逐文件核对,本文按要求只写规模、结构与边界三类数字,未下载数据、未自行生成任何统计数据。
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- glenda—共享标签:子宫内膜异位症 / 医学影像 / 目标检测
- endometrium-scrna-atlas—共享标签:子宫内膜 / 妇科 / 单细胞证据
- endo-aid—共享标签:子宫内膜 / 病理影像 / 检测任务
- cops—共享标签:症状日记 / 患者自报 / 纵向观测
- flatten-covid-survey—共享标签:症状自报 / 问卷采集
- cadec—共享标签:患者自报语料 / 标注文本
- encode-skin-color—共享标签:PhysioNet 平台 / 前瞻性采集
- addhealth—共享标签:长期纵向队列 / 随访设计
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

