文 / Google Brain 团队软件工程师 Patrik Sundberg 和产品经理 Eyal Oren
在过去 10 年间,医疗数据已经从以纸质文件为主几乎完全数字化为电子健康记录。但是,理解这些数据涉及一些关键挑战。
供应商之间没有共同的数据表示形式;每个供应商都使用不同的方式来构建他们的数据。
即使使用相同供应商的网站也可能存在很大不同,例如,他们通常为同一种药物使用不同的代码。
数据可能分布在多个表格中,一些表格包含患者就医记录,一些包含实验室结果,其他的则包含生命体征数据。
快速医疗互操作性资源 (FHIR) 标准解决了其中的大多数挑战:它具有一个坚实并且可扩展的数据模型并基于成熟的网络标准构建,正在快速成为个体记录和批量数据访问的事实标准。但是,为了实现大规模机器学习,我们需要一些补充:各种编程语言的实现,将大量数据序列化到磁盘的有效方法,以及允许分析大型数据集的表示形式。
今天,我们高兴地开源 FHIR 标准的一种协议缓冲区实现,它可以解决这些问题。当前版本支持 Java,并且将很快支持 C++、Go 和 Python。对配置文件的支持也即将发布,还会推出一些工具,帮助用户将旧数据转换成 FHIR。
将 FHIR 用作核心数据模型
过去几年,我们一直与众多学术医疗中心合作,将机器学习应用于匿名病历,我们需要正面解决医疗数据的复杂性,这一点已经变得非常明显。确实,要让机器学习有效用于医疗数据,我们需要从整体上了解每名患者随着时间推移的情况。作为奖励,我们想要一种可以直接用于临床环境的数据表示形式。
尽管 FHIR 标准可以解决我们的大多数需求,但是为了使医疗数据比“旧”数据结构更加易于管理和确保大规模机器学习不依赖于供应商,我们认为引入协议缓冲区可以帮助应用开发者和(机器学习)研究人员使用 FHIR。
当前版本的协议缓冲区
为了让我们的协议缓冲区表示适合编程访问和数据库查询,我们做了大量工作。提供的一个示例显示了如何将 FHIR 数据上传到 Google Cloud BigQuery 中并让它可以用于查询,我们将添加直接从批量数据导出上传的其他示例。我们的协议缓冲区符合 FHIR 标准(这些缓冲区实际上是从此标准自动生成的),但可以实现更高级的查询。
当前版本还不可以用于训练 TensorFlow 模型,不过,敬请关注未来更新。我们打算开源尽可能多的近期工作,以便提升我们的研究在现实世界情景中的重现性和适用性。此外,我们还在与 Google Cloud 团队的同事紧密合作,推出更多用于管理大规模医疗数据的工具。