
在数字健康时代,患者的故事越来越多地以电子健康记录(EHRs)这种庞大而复杂的语言书写。然而,将这些杂乱的数据转化为清晰、可靠的临床洞见,构成了一项重大挑战。我们如何才能在不同的数据集中为研究、公共卫生或临床护理等目的,持续一致地识别出患有特定疾病(如2型糖尿病或心力衰竭)的患者?本文通过引入可计算表型的概念来填补这一空白——它是一种明确、可执行的算法,旨在作为一种精确的工具,用于识别数据中的临床特征。在接下来的章节中,我们将首先探讨这些算法的基本“原理与机制”,深入研究它们如何被定义、构建和严格验证。随后,“应用与跨学科联系”一章将展示它们的变革性影响,从加速基因组学发现、指导临床决策,到塑造监管政策,甚至帮助我们理清医学中复杂的因果关系网。
我们如何知道某个东西是什么?这听起来像是一个哲学研讨会的问题,但当我们试图教会计算机理解人类健康时,它却成了我们面临的最实际、最深刻的挑战之一。想一想你将如何定义一把“椅子”。你可能会说它是一个有四条腿、一个座位和一个靠背的物体。但三条腿的凳子呢?或者豆袋椅?又或是从天花板上垂下的未来主义吊舱?你很快会意识到,你的定义并非绝对真理的陈述,而是一个操作性构念——一套为特定目的设计的规则。如果你是一个古董商、一个家具搬运工,或一个牙牙学语的幼儿,你对“椅子”的定义会各不相同。
我们在医学中也面临同样的问题,但风险要高得多。“2型糖尿病”是什么?是医生在电脑中输入的特定诊断代码吗?是高于某个阈值的血糖水平吗?是二甲双胍的处方吗?答案,与椅子的问题非常相似,是“取决于你的目的”。诊断病人的医生、研究人群的流行病学家和测试新药的制药公司,可能都会使用不同但都有效的定义。
这就引出了可计算表型这个优美而强大的概念。简而言之,可计算表型是一个明确、可执行的算法——一个精确的“食谱”——它筛选患者电子健康记录(EHR)中庞大而杂乱的数据,以确定该患者是否具有特定的临床状况或特征。它正式承认,我们的定义是我们构建的工具,而不是柏拉图式理想的完美反映。
为了真正理解这一点,我们必须清晰地区分几个相关概念,这项任务迫使我们像物理学家一样思考测量的本质。
可计算表型本质上是一个观察性构念。它是一种基于我们可以测量的事物——实验室值、诊断代码、用药记录——的分类。一个好表型的重要特征是,其结论不应是我们使用的特定量表的产物。发烧的诊断不应取决于温度计读数是摄氏度还是华氏度。其逻辑必须对我们测量量表的“容许变换”保持不变。
另一方面,疾病最好被视为一个因果性、机制性构念。它是引起我们观察到的体征和症状的潜在病理生理过程。用因果推断的语言来说,疾病是现实图谱中的一个节点,有箭头指向 EHR 中的测量值。
综合征是一组可靠地同时出现的体征和症状,但我们不一定知道其单一、统一的病因。它是观察数据中可识别的模式,是数据中的一个聚类,但没有得到证实的因果故事。
内表型则更深一层。它是由一种独特的生物学机制定义的疾病亚型。两个人可能有“相同”的哮喘表型(喘息、气短),但其中一个可能是由嗜酸性粒细胞炎症驱动的内表型,而另一个则是由不同通路驱动。这是精准医学的基础。
最后,生物标志物是单个、可测量的指标,用作生物状态的代理,例如用高血糖水平代表糖尿病。
理解这些区别能让人豁然开朗。它告诉我们,可计算表型不是“真相”,而是一个为观察部分现实而精心设计的工具。其有效性并非来自完美地反映潜在疾病,而是来自作为一个可靠且有用的工具,能胜任特定任务,无论是为临床试验寻找患者,还是监测公共卫生。
那么,我们如何编写可计算表型的“食谱”呢?想象我们身处厨房,但我们的食材不是面粉和鸡蛋,而是患者在医疗保健系统中留下的数字足迹。这个过程通常涉及两种主要方法。
第一种是基于规则的表型,它就像由专家厨师——临床医生或流行病学家——编写的详细化学实验步骤。让我们尝试为2型糖尿病(T2DM)勾画一个“食谱”。
首先,我们收集食材。我们有诊断(使用 ICD-10-CM 或 SNOMED CT 等系统编码)、实验室结果(如糖化血红蛋白 HbA1c 或血糖水平,使用 LOINC 编码)和药物(使用 RxNorm 编码)。我们的第一个问题是,这些食材来自使用不同标签的不同供应商。一个诊断可能使用旧的 ICD-9 系统,或者一个地方医院的代码。所以,我们的第一步是数据标准化:我们使用标准化的映射表或“转换表”,将所有内容翻译成一种通用语言。这就像在开始前将所有测量值转换为公制单位。
接下来,我们编写逻辑指令。在这里,我们使用布尔逻辑(AND、OR、NOT)和时间约束来组合我们的标准化食材。一个稳健的 T2DM “食谱”不会依赖单一线索。它可能看起来像这样:
如果患者满足纳入标准且不满足排除标准,则被认为患有 T2DM。
纳入标准:(以下至少一条必须为真)
排除标准:
这种多管齐下的方法,结合不同类型的证据,创造出一个比依赖任何单一数据点更可靠、更特异的表型。
编写这些“食谱”时,一个关键的微妙之处在于理解我们代码系统的结构。像 SNOMED CT 这样的术语集是分层的,就像生物的分类体系:动物 -> 哺乳动物 -> 狗 -> 贵宾犬。治疗患有特定并发症的病人的医生可能会使用最具体的代码,例如“2型糖尿病伴糖尿病肾病”(一个“贵宾犬”级别的代码)。如果我们的表型“食谱”只搜索通用的“2型糖尿病”代码(“狗”级别的代码),它将完全漏掉这位患者。这是一个假阴性,它损害了我们表型的敏感性——即其找到所有真实病例的能力。因此,为表型构建良好代码集的一个基本步骤是层级扩展:我们从父概念开始,通过编程方式包含其所有的子代、孙代等等。我们必须确保在搜索“狗”时,也能找到所有的“贵宾犬”、“比格犬”和“拉布拉多犬”。
第二种方法是基于模型的表型。我们不让专家编写规则,而是使用机器学习。我们向计算机提供一个大型数据集,其中包含已被标记为病例或非病例的患者(通常通过费力的手动病历审查完成)。然后,算法会“学习”能够最好地预测标签的特征的复杂模式——成千上万的代码、实验室值,甚至临床记录中的词语。其结果不是一组简单的 IF-THEN 规则,而是一个复杂的统计函数,它输出一个给定患者患有该疾病的概率。
我们已经写好了“食谱”——无论是手动编写还是通过机器学习。我们怎么知道它好不好呢?我们必须测试它。这就是验证的科学。第一步是建立一个参考标准(有时称为“金标准”),这是我们能得到的最好的真实性来源。通常,这需要专家临床医生仔细审查患者病历样本,以确定谁真正患有该疾病。
一边是我们表型的分类结果,另一边是参考标准,我们可以构建经典的 表,这是诊断学的基础。让我们用一个旨在将苹果分为“好”和“坏”两堆的机器来类比。
| 参考标准:真·好 | 参考标准:真·坏 | |
|---|---|---|
| 机器:判定为“好” | 真阳性 (TP) | 假阳性 (FP) |
| 机器:判定为“坏” | 假阴性 (FN) | 真阴性 (TN) |
从这四个数字中,我们可以计算出关键的性能指标:
敏感性:在所有真正的好苹果中,机器正确识别了多少比例?即 。当你绝对不能错过一个病例时,例如在筛查危险但可治疗的疾病时,高敏感性至关重要。
特异性:在所有真正的坏苹果中,机器正确识别了多少比例?即 。
阳性预测值 (PPV):如果机器把一个苹果放进“好”苹果堆里,它实际上是好的概率有多大?即 。当假警报的后果很严重时,例如在开始一项有风险或昂贵的治疗之前,高 PPV 至关重要。
阴性预测值 (NPV):如果机器说一个苹果是“坏”的,它实际上是坏的概率有多大?即 。
现在,这里有一个非常反直觉但极其重要的教训。想象一下,我们的苹果分拣机具有固定的敏感性和特异性——其内部机制是恒定的。假设我们首先在一个高质量的果园里使用它,那里50%的苹果是好的。机器工作得很好。现在,我们把完全相同的机器搬到一个受灾的果园,那里只有1%的苹果是好的。它的性能会发生什么变化?它的 PPV 将会骤降。为什么?机器在处理大量坏苹果时存在的微小、恒定的错误率,将产生堆积如山的假阳性,这些假阳性将完全淹没少数的真阳性。
这是一个数学上的必然性,也是可计算表型可移植性面临的最大挑战。一个在专科医院诊所(那里的疾病患病率高)表现出色的表型,在应用于普通人群(患病率低)时,其 PPV 可能会非常低。这并非表型“坏了”,而是概率法则在发挥作用。这就是为什么你不能盲目相信在一个环境中开发的表型,并将其应用于另一个环境。在新的目标人群中进行外部验证不是可有可无的,而是一项科学上的必需。
表型不是刻在石头上的丰碑;它是在一个不断变化的世界中运作的动态工具。去年还完美无缺的“食谱”今天可能悄无声息地失效。这就是模型漂移的问题,它主要有两种形式。
第一种是表型漂移。这是现实世界的变化。疾病本身可能会演变,或者引入了新的标准治疗方法,从而从根本上改变了患者的实验室值和结局。在我们的概率框架中,这对应于疾病真实患病率 的变化,或疾病在数据中表现方式 的变化。
第二种是概念漂移。这是测量系统的变化。一家医院可能从 ICD-9 编码系统切换到 ICD-10。一个实验室可能会重新校准其关键生物标志物的检测方法。生成数据的计算机系统可能会更新。我们表型的规则 是固定的,但输入数据 的含义却在其底层发生了变化。我们的“食谱”没变,但我们的食材变了。
为了长期信任一个表型,我们必须成为警惕的守望者。我们需要实施统计过程控制。这涉及持续监控我们系统的关键属性。我们使用统计检验来跟踪输入特征的分布 ,看它们是否随时间推移而变化。我们还跟踪表型的输出——总体分配率 。如果我们观察到这些指标出现持续、意外的变化,那就是一个危险信号。这表明我们的工具可能不再与现实校准,是时候进行重新评估和可能的再训练了。
这就把我们带到了最后一点。可计算表型不仅仅是一个技术产物;它是一种科学工具。当它被用来生成影响监管决策、公共政策或医疗实践的证据时,它必须遵守最高的科学标准。我们如何确保这些复杂的算法是值得信赖的?
答案在于可复现性和透明性。
透明性意味着整个“食谱”——逻辑、代码集、参数——都公开以供审查。其他人必须能够确切地看到你如何定义你的队列,这样他们才能理解、批判和在你的工作基础上继续发展。
可复现性意味着另一位科学家,在拥有你的数据和你的“食谱”的情况下,可以运行分析并得到完全相同的结果。这是科学方法的计算基石。
这些原则不仅仅是理想;它们通过一套强大的工具付诸实践。预分析计划是在分析运行前对研究“食谱”的公开承诺,防止研究人员为了得到期望的结果而更改方法。公开发布可执行代码是可复现性的最终保证。而可计算表型注册库,如表型知识库(Phenotype KnowledgeBase, PheKB),则充当这些算法“食谱”的公共图书馆。它们标准化了表型的定义和记录方式,使其能够在整个科学界共享、比较和重用。
归根结底,可计算表型不仅仅是代码。它是一份正式、可共享、可检验的科学知识。它将临床判断中杂乱、隐性的艺术转化为一门明确、工程化的科学,创造出能让我们以日益增长的清晰度和精确度观察人类健康图景的工具。
在理解了如何用数据的语言来定义疾病的原理之后,我们现在踏上一段旅程,去看看这些“可计算表型”的实际应用。一个科学概念的真正魅力不在于其抽象的优雅,而在于它解决实际问题和在看似不相关的探究领域之间建立联系的力量。可计算表型不仅仅是一种巧妙的信息学技巧;它们是一种新型的科学仪器,一个数字镜头,让我们能以惊人的清晰度在浩瀚而汹涌的人类健康数据海洋中感知模式。从医生办公室到遗传学实验室,从塑造监管政策到探究因果关系的根本逻辑,这些算法正在改变我们理解和抗击疾病的方式。
从本质上讲,可计算表型是一种识别工具——一本数字侦探手册,用于寻找患有特定疾病的患者。但这绝非易事。真实世界的临床数据杂乱、不完整,而且其设计初衷并非为了研究。创建一个可靠的表型,需要如同临床诊断本身一样的细致关怀和严谨推理。
想象一下识别新患2型糖尿病患者的挑战()。仅仅找到一个诊断代码是不够的,因为它可能是错误录入或为了“排除”该疾病而输入的。一个稳健的表型就像一个谨慎的调查员,要求多条、汇聚的证据线。例如,它可能要求在不同日期有至少两个门诊诊断代码,或者一个高风险的住院诊断。为了增加可信度,它会寻找在临床上合理的时间范围内的佐证——比如一张新的二甲双胍处方,或者显示糖化血红蛋白(HbA1c )升高的实验室结果。
此外,一个好的侦探知道什么不该找。为了找到新发(incident)病例,算法必须强制执行一个“清洗期”,即在患者病史中必须有一段回顾性窗口,其中没有任何该疾病的证据。这确保我们不仅仅是重复发现现患(prevalent)病例。它还必须应用严格的排除标准,以过滤掉临床上的模仿者。对于糖尿病,这意味着排除那些有1型糖尿病、妊娠后即缓解的妊娠期糖尿病,或由类固醇等药物引起的血糖过高的代码的患者。每一条规则、每一个时间限制、每一个排除条件,都是朝着从EHR数据的零散像素中创造出疾病高保真画像的审慎一步。
但我们如何知道我们的数字侦探是否称职呢?表型是关于数据模式的假设,和任何科学假设一样,它必须被检验。我们通过对照一个“金标准”来验证它,这个标准通常是由临床专家对患者病历进行的人工审查。通过将算法的分类与专家的判断进行比较,我们可以量化其性能()。我们问两个基本问题:在所有真正患有该疾病的患者中,我们的算法找到了多少比例?这是它的敏感性(或召回率)。而在我们算法标记的所有患者中,有多少比例确实患有该疾病?这是它的阳性预测值(PPV)(或精确率)。平衡这些指标——在最小化假警报的同时捕获最多的病例——是表型开发和验证的核心艺术。例如,对于心力衰竭的表型,我们可以结合来自诊断代码(I50.*)、关键药物(如袢利尿剂和β-受体阻滞剂)以及超声心动图的客观测量(如左心室射血分数(LVEF))的证据来构建并严格测试我们的定义()。
这些由人类专家精心制作的“基于规则的”表型是透明且可解释的。但还有另一种方式。我们可以使用机器学习来创建表型()。我们不是给计算机一套明确的规则,而是给它成千上万个经过病历审查的“病例”和“对照组”的例子,让它学习区分它们的复杂模式。这种方法通常可以达到更高的敏感性,但可能像一个“黑箱”一样运作,使得理解它为何做出特定决定变得更加困难。一个特别激动人心的前沿是使用自然语言处理(NLP)来阅读医生记录中丰富的、非结构化的叙述性文本()。这使得算法能够捕捉到结构化数据可能遗漏的临床细微差别,通常会产生一个概率分数——例如,“患有未控制糖尿病的概率为0.85”——这个分数随后可以用来触发警报或识别患者,尽管需要理解其内在的不确定性。
一旦得到验证,可计算表型就成为强大的发现引擎,在临床医学和其他科学领域(尤其是基因组学)之间架起一座至关重要的桥梁。
它们最深远的影响或许是在对抗罕见病的斗争中。一个遭受神秘症状困扰的儿童可能会经历长达数年的“诊断历程”。打破这一循环的关键是深度表型分析——超越简单的疾病标签,对患者的每一个特征进行全面和标准化的描述()。使用像人类表型本体(HPO)这样的受控词汇,临床医生可以把患者的特征——如步态共济失调、癫痫发作和感音神经性听力障碍——编码为精确、可计算的术语。
奇迹就发生在这里。计算机随后可以将这个丰富、结构化的HPO档案与包含数千种已知遗传病的数据库进行比较,每种遗传病都有自己的HPO注释()。这种匹配不仅仅是计算共享特征的数量。复杂的算法会根据每个匹配项的信息量——即特征的罕见程度——来加权。匹配一个非常罕见和特定的症状,如共济失调(),远比匹配一个常见的症状,如全面发育迟缓()更具信息价值。通过汇总所有共享的患者-基因特征的信息量,这些工具可以对候选基因进行排序,并为临床医生指出最可能的潜在遗传原因,从而极大地缩短诊断历程。
我们也可以反过来问这个问题。与其问“什么基因导致了这个表型?”,我们可以问,“这个基因导致了哪些表型?”这就是全表型组关联研究(PheWAS)背后的原理()。PheWAS选取一个特定的遗传变异,并扫描其与一个由成百上千个可计算表型组成的“表型组”的关联,每个表型代表一种不同的疾病或性状。为了大规模地实现这一点,像PheCodes这样的术语集被开发出来,将相关的诊断代码分组为有意义的研究类别。这种方法揭示了新的基因-疾病关系,并表明单个基因可以影响多种令人惊讶的不同性状。
可计算表型的影响力超越了研究实验室,直接延伸到临床和监管机构的殿堂。
一个表型可以部署在EHR中,作为一个实时的哨兵,不断扫描患者数据以发现新出现的模式。这是许多临床决策支持(CDS)系统的基础()。当算法检测到患者符合某种疾病的标准时——例如,基于高实验室值的未控制糖尿病的基于规则的触发器,或基于近期临床记录的概率性NLP触发器——它可以自动向医生发出警报,建议更换药物或进行后续检查。这将表型从一个描述性工具转变为一个改善患者护理的主动工具。
在更大范围内,可计算表型对于生成真实世界证据(RWE)——即通过分析常规临床数据得出的关于药物安全性和有效性的证据——至关重要()。像美国食品药品监督管理局这样的监管机构越来越多地使用RWE来监测上市后安全性,甚至批准现有药物的新用途。表型提供了在来自不同卫生系统的大规模数据集中识别患者队列和临床结局所需的稳健、可复现和可扩展的方法。
然而,这引出了一个关键问题:可移植性。在一个医院开发和验证的表型在另一家医院的表现可能不尽相同,特别是如果疾病的患病率不同。像敏感性和特异性这样的指标是算法的内在属性,但PPV和NPV则严重依赖于疾病的患病率()。想象一下在一个袋子里寻找一颗稀有的蓝色弹珠。如果患病率很低(蓝色弹珠很少),即使一个好的“蓝色弹珠检测器”也偶尔会把紫色弹珠误认为蓝色。因为非蓝色弹珠的数量非常多,这些少数的错误可能会占到你“阳性”发现的很大一部分。你对于检测器标记的任何一颗弹珠确实是蓝色的信心(即PPV)就会下降。在利用表型做出监管决策时,这一微妙的统计特性至关重要,要求在不同人群中进行严格的外部验证和对结果的谨慎解释。
最后,我们来到了最深层的联系:可计算表型与形式因果逻辑之间的联系。在科学中,我们通常不满足于仅仅观察关联;我们想知道某个暴露是否导致了某个结局。这要求我们提出反事实问题:如果患者没有被暴露(与事实相反),他们会发生什么?
潜在结果框架为此类问题提供了严谨的语言()。它迫使我们清晰地陈述我们的假设:我们已经测量了暴露和结局的所有共同原因(可交换性),每个人都有被暴露的机会(正值性),以及处理是明确定义的且不会外溢影响他人(稳定单位处理值假设,SUTVA)。
但存在一个问题:我们的可计算表型 是对真实、未观察到的疾病状态 的不完美测量。这种测量误差是否会阻止我们做出因果声明?值得注意的是,答案是否定的。如果我们已经验证了我们的表型,并知道其敏感性()和特异性(),我们就可以在数学上对错误分类进行校正。在标准的因果假设下,我们可以首先估计观察到的表型的风险 ,然后使用一个简单的代数公式来恢复真实表型的风险 :
这个优美的结果表明,即使透过不完美测量工具的迷雾,我们也能看到真实的因果世界,只要我们精确地描述了我们工具的特性()。它证明了将严谨的表型分析与形式因果推断逻辑相结合的力量。
从寻找患者的实际任务到探求因果理解的深刻追求,可计算表型如同一条统一的线索。它们是一种语言,让临床医生、遗传学家、数据科学家和流行病学家能够通过数据的媒介相互对话。它们不仅仅是算法;它们是一种新的观察方式,一个强大的镜头,正在让我们对广阔、复杂而又美丽的人类健康图景的看法变得更加清晰。