患者匹配是实现医疗护理互通性的次要阻碍之一。不匹配的患者记录和无奈检索患者历史信息可能重大妨碍做出正确的临床决定,并导致漏诊或医治延误。另外,医疗护理提供者常常会花精力去解决患者反复数据的删除,尤其当他们的数据库中的患者记录数量急速减少时。电子衰弱记录 (EHR) 近年来大幅优化了患者的平安和护理协调,但精确的患者匹配对很多医疗护理组织来说依然是一项挑战。
反复的患者记录会因为各种起因产生,包含人为生成记录的插入、删除、替换,或转置谬误。尽管光学字符辨识 (OCR) 软件会将患者记录数字化,但也可能引入谬误。
咱们能够采纳多种记录匹配算法来解决此问题。它们包含:根本确定性法(如分组和比拟相干字段,包含 SSN、姓名或出生日期等)、语音编码零碎,以及更高级的应用机器学习 (ML) 的算法。
Amazon Lake Formation 是一项合乎 HIPAA 要求的服务,可帮忙您在若干简略的步骤内构建平安的数据湖。Lake Formation 还内置 FindMatches,这项 ML 转换性能让您能够在不同的数据集中匹配记录,并且辨认与移除反复的记录,但须要较少,甚至齐全不须要任何人为干涉。
本文将向您介绍如何应用 FindMatches ML 转换在综合生成的数据集里辨认匹配的患者记录。要应用 FindMatches,您无需编写代码或理解 ML 的运作形式。如果没有牢靠的惟一集体标识符,在数据中查找匹配将变得十分实用,即便其字段不齐全匹配。
患者数据集
因为其具备敏感性质,不同国家采纳各种法规对患者数据进行治理。此现状导致了用于训练匹配算法的患者数据通常较为不足,让模型的开发变得更加简单。绕开此类挑战的常见方法,即应用综合数据。本文将基于 Open Source Freely Extensible Biomedical Record Linkage Program (FEBRL) 生成患者数据。FEBRL 采纳隐马尔可夫模型 (HMM) 为患者记录匹配筹备姓名和地址数据。它还容许对导致反复的事实患者数据集进行模仿,这些反复数据可能有以下不匹配类型:
1. 空白字段。
2. 排版谬误,如拼写错误、字符转置或字段调换等。
3. 缩写两头名和记录残缺两头名。
4. 不同格局的邮寄地址。
5. 与 OCR 相干的谬误。
6. 语音谬误。
7. 无全局惟一患者或集体标识符。每一个医疗护理提供商都可能为雷同人员调配一个患者标识符,但它或者并非相似于 SSN 的集体标识符,因而,他们有数据集但没有键。
FEBRL 能够依据可配置的参数生成此类数据集,以扭转产生每种谬误的可能性,进而涵盖导致反复的各种情景。综合数据集的生成不在本文的探讨范畴之内;本文将提供一个预生成的数据集以供您摸索之用:
https://aws-bigdata-blog.s3.a…
简而言之,以下是用于运行 FindMatches 的综合数据集的生成步骤:
1. 下载并装置 FEBRL。
2. 批改参数以创立数据集,对您的预期进行模仿。如需更多信息,见 FEBRL 数据集生成阐明:
https://github.com/J535D165/F…
3. 清理数据集(此举将为每一条记录确认雷同的架构,并移除单引号和家庭角色)。
本文数据集应用的 Amazon 区域为美国东部(弗吉尼亚北部)。
FRBRL 患者数据结构
下表显示 FEBRL 患者数据的构造。此类数据蕴含 40000 条记录。
原始记录和重复记录会被分到一组。以特定的格局生成 patient_id
:
rec-<record number>-org/dup-<duplicate record number>
下表是您在致力应用 FindMatches ML 转换所要达成指标的预览。在对数据集进行匹配当前,生成的表将反映输出表的构造和数据,并增加 match_id
列。匹配的记录显示雷同的 match_id
值。误报和漏报仍然有可能产生,但转换的益处也不言而喻。
先决条件
本文的示例综合患者数据集采纳美国东部(弗吉尼亚北部)区域,因而本文提到的所有步骤都必须在雷同的 Amazon 区域(即 us-east-1)内执行;但如果数据在其余区域,您能够十分轻松地对步骤进行批改。
解决方案架构
下图显示了该解决方案的架构。
解决方案概览
在宏观层面上,匹配流程包含以下步骤:
1. 在 Amazon S3 存储桶上上传 csv 格局的原始患者数据集
2. 应用 Amazon Glue 爬网程序对上传的患者数据集进行爬网
3. 应用 Amazon Glue 数据目录将您的患者数据编入目录,并创立 FindMatches ML 转换。
4. 通过 ML 转换或以手动形式创立标签集,而后提供匹配和非匹配记录的标签示例,以便对 FindMatches 进行训练。上传您的标签,并预计预测的品质。按要求增加更多标签集并反复此步骤,以取得所需的查准率、准确率和召回率。
5. 创立并执行应用您的 FindMatches 转换的 Amazon Glue ETL 作业。
6. 在 Amazon S3 存储桶上存储 FindMatches 转换的后果
7. 创立 FindMatches ML 转换后果的 Amazon Glue 数据目录。
8. 应用 Amazon Athena 查看转换后果。
将您的数据编入目录,并创立 FindMatches ML 转换
FindMatches 在 Amazon Glue 数据目录内定义的表上运行。应用 Amazon Glue 爬网程序以发现患者数据并将其编入目录。您能够应用为本文生成的 FEBRL 患者数据:
https://aws-bigdata-blog.s3.a…
下方提供的 Cloudformation 堆栈会在 Amazon 区域- us-east-1
(美国东部(弗吉尼亚北部))内创立资源
要在 Amazon Glue 中创立目录和 FindMatches ML 转换,启动以下堆栈:
此堆栈会创立以下资源:
1. 存储 ML 转换后果的 Amazon S3 存储桶(可作为启动的一部分进行配置)。您能够在 Amazon CloudFormation 堆栈控制台的输入下方找到存储桶的名称。本文应用名称 S3BucketName
2. 容许 Amazon Glue 拜访其余服务(包含 S3)的 IAM 角色。
3.Amazon Glue 数据库(可作为启动的一部分进行配置)。
4.内含“公开原始综合患者数据集”的 Amazon Glue 表(可作为启动的一部分进行配置)。
5.Amaozn Glue ML 转换,源作为您的 Amazon Glue 表,准确率 设为 1,而 精度 设为 0.9。
如需更多信息,见应用 Amazon Lake Formation FindMatches 集成数据集并删除反复数据:
https://amazonaws-china.com/b…
ML 转换调优
误报匹配的平安危险(即让临床医生误以为对于患者的错误信息是精确的)可能比漏报匹配(即临床医生未能拜访对于患者的现有信息)的平安危险更大。(如需更多信息,见 NCBI 网站上的相干钻研。)因而,将 召回率 vs. 精度 滑块移向 精度 一边可进步置信度,以辨认记录是否属于雷同的患者,并在最大水平上升高误报匹配的平安危险。
更高的 准确率 设置有助于进步 召回率,但代价是须要更长的运行工夫(和老本)对更多记录进行必要的比拟。
要针对此特定数据集获取绝对更优的后果,启动堆栈已为您创立转换,召回率 vs. 精度 滑块设为 0.9 并偏差 精度 一边,低成本 vs. 准确率 滑块设为 准确率 。如有必要,您能够在稍后通过抉择转换并应用 调优 菜单调整此类值。
应用标签数据训练 FindMatches
在胜利启动堆栈当前,您能够通过提供采纳标签集的匹配与非匹配记录对转换进行训练。
创立标签集
您能够自行创立标签集,或容许 Amazon Glue 基于启发式算法生成标签集。
Amazon Glue 会从您的源数据提取记录,并倡议可能的匹配记录。生成的标签集文件蕴含大概 100 个供您操作的数据样本。
本文为您提供能够应用的由 Amazon Glue 生成的标签数据文件,其中的标签列已填充残缺的数据。您能够随时应用此文件。
若抉择应用本文中提供的预生成标签数据文件,请跳过下方的 标签文件生成 步骤
要创立训练集,执行以下步骤:
1. 在 Amazon Glue 控制台的 ETL、作业和 ML 转换 下方,您将能够看到由提供的堆栈为您创立的名为 cfn-findmatches-ml-transform-demo 的 ML 转换。
2. 抉择 ML 转换 cfn-findmatches-ml-transform-demo,而后单击操作并抉择 训练转换。
3. 对于 应用标签训练转换 ,抉择 我没有标签。
4. 抉择 生成标签文件。
5. 提供用于存储生成标签文件的 S3 门路。
6. 抉择 下一步。
下表显示了生成的标签数据文件,其中的 label 列为空。
您须要标记与雷同值实在匹配的记录,以便填充 label
列。每个标签集都应蕴含正负匹配示例。
本文为您提供能够应用的标签数据文件,其中的 label
列已填充残缺的数据。您能够随时应用此文件。
下表显示的表已残缺填充 label 列。
标签文件采纳与输出数据一样的架构,以及两个额定的列:labeling_set_id id 和 label
。
训练数据集可被分为多个标签集。每个标签集都显示 labeling_set_id
值。此标识办法简化了标签增加流程,让您能够专一于在雷同标签集内匹配记录关系,而不必对整个文件进行扫描。对于上述数据集,通过应用正则表达式移除前缀 -org
和 -dup
,从 patient_id
提取标签值。但总得来说,您要依据基于属性值应匹配的记录来调配此类标签。
如果为一个标签集内的两个或更多记录指定雷同的标签,则您在训练 FindMatches 转换将这些记录视作匹配。而在另一方面,当雷同标签集内的两个或更多记录有不同的标签时,FindMatches 会学习不要把这些记录当做匹配。转换在雷同标签集而不会跨不同标签集评估记录之间的记录关系。
您应该为数百条记录增加标签以实现适当的匹配品质,而数千条记录则能取得更高的匹配品质。
上传您的标签并查看匹配品质
在您创立标签数据集(需采纳 .csv 格局)当前,训练 FindMatches 在什么中央进行查找。请执行以下步骤:
1. 在 Amazon Glue 管制台上,抉择您在之前创立的转换。
2. 抉择 操作。
3. 抉择 训练转换。
4. 对于 上传标签 ,抉择 我有标签。
5. 抉择 从 S3 上传标签文件。
6. 抉择 下一步。
7. 如果您想要应用本博文中提供的标签集,在此处下载标签集:
https://aws-bigdata-blog.s3.a…
8. 在由上述已启动的 cloudformation 模板创立的雷同 S3 存储桶中,创立一个名为 训练集 的文件夹。
9. 在雷同的 S3 存储桶中,上传上述位于 训练集 的标签集。
10. 抉择笼罩我的现有标签。您只能应用一个标签集。若重复增加标签,抉择附加到我的现有标签选项。
11. 抉择 上传。在上传标签当前,您当初随时能够应用转换。尽管不是硬性要求,但您能够通过查看匹配和非匹配记录来确定转换匹配的品质。
12. 抉择 预计转换品质。转换品质预计将应用您的标签中的 70% 进行学习。在训练实现当前,品质预计将针对残余的 30% 测试转换学到的辨认匹配记录的能力。最初,转换会比拟由算法和您的理论标签预测的匹配和非匹配,以便生成质量指标。此过程可能长达数分钟。
您的后果应与以下截图中的状况相似。
将这些指标视作近似值,因为测试只会应用数据的一小部分子集预计匹配的品质。若您对指标感到称心,持续创立并运行记录匹配作业。或者,上传更多标签记录以进一步改善匹配品质。
创立并运行 Amazon Glue ETL 作业
在创立 FindMatches 转换并验证它已学会辨认您的数据中的匹配记录当前,您就能够在您的残缺数据集中辨认匹配。要创立并运行记录匹配作业,执行以下步骤:
1. 在 S3 存储桶内创立一个 transformresults
文件夹,该存储桶由 Amazon CloudFormation 模板在您启动堆栈时创立。此文件夹将存储您的 Amazon Glue 作业的 ML 转换的后果。
2. 在 Amazon Glue 控制台的 作业 下方,抉择 增加作业。
3. 在 配置作业属性 下方的 名称 中,输出作业的名称。
4. 对于 IAM 角色,在下拉菜单中抉择您的角色。抉择由 Amazon CloudFormation 堆栈创立的名为 AWSGlueServiceRoleMLTransform
的 IAM 角色。如需更多信息,见为 Amazon Glue 创立 IAM 角色:
https://docs.aws.amazon.com/g…
5. 抉择 Spark 作为类型,Glue 版本为 Spark 2.2,Python 2(Glue 版本 0.9)
6. 为作业运行抉择 Amazon Glue 生成的倡议脚本。
7. 在 抉择一个数据源 中,抉择转换数据源。本文应用数据源 cfn_table_patient
。
8. 在 抉择转换类型 下方,抉择 查找匹配记录。
9. 对于 工作线程类型,抉择 G.2X。
10. 对于 工作线程数量,输出 10
。您能够依据数据集的大小填写更大数字,以便增加更多工作线程。
11. 要查看被辨认为反复的记录,不要抉择 移除重复记录。
12. 抉择 下一步。
13. 抉择由您创立的转换。
14. 抉择 下一步。
15. 对于 抉择一个数据指标 ,抉择 在数据指标中创建表格。
16. 对于 数据存储,抉择 Amazon S3。
17. 对于 格局,抉择 CSV。
18. 对于 压缩类型 ,抉择 无。
19. 对于 指标门路,抉择作业输入的门路。指标门路是由 Amazon CloudFormation 创立的 S3 存储桶,以及您在之前创立的名为 transformresults 的文件夹。
20. 抉择 保留作业并编辑脚本。
现已为您的作业生成脚本,并随时可供使用。或者,您也能够进一步对脚本进行自定义,以满足您的具体 ETL 需要。
21. 要开始辨认此数据集中的匹配,抉择如 下方屏幕所示运行作业。临时保留作业参数的默认设置,并在启动作业后敞开此页面。以下截图显示的是由 Amazon Glue 应用 ML 转换而生成的倡议 Python Spark 脚本。
如果执行胜利,FindMatches 将显示运行状态为 Succeeded
。执行可能须要数分钟才会完结。
FindMatches 会将您的输入数据作为分段 .csv 文件保留于您在作业创立期间指定的指标门路。生成的 .csv 文件反映了输出表的构造和数据,而且内有 match_id
列。匹配的记录显示雷同的match_id
值。
创立您的转换后果的数据目录
要查看输入,您能够间接从 S3 存储桶下载分段 .csv 文件并在编辑器中查看,或者您也能够应用 Athena 对存储在 S3 上的数据运行相似 SQL 的查问。要通过 Athena 查看数据,您须要对文件夹以及由您创立的作为 FindMatches ETL 作业输入一部分的分段 .csv 文件进行爬网。
转至 Amazon Glue,应用现有数据库中的 Amazon 爬网程序为患者匹配创立一个新表格,此表中有来自您的 FindMatches ETL 作业输入的记录,并且以蕴含分段 .csv 文件的 S3 存储桶文件夹作为源数据。在本文中,源数据为由 Amazon CloudFormation 堆栈创立的存储桶中的文件夹 transformresults
。
要创立爬网程序,执行以下步骤:
1. 在 Amazon Glue 控制台的 数据目录 下方,抉择爬网程序。
2. 单击 增加爬网程序 以创立新的爬网程序,对转换后果进行爬网。
3. 提供爬网程序的名称,并单击 下一步。
4. 抉择数据存储作为爬网程序源类型,并单击下一步。
5. 在 增加数据存储 局部的抉择一个数据存储中,抉择 S3。
6. 对于 爬网数据地位 ,抉择 我的账户中的指定门路。
7. 在 蕴含门路 下方,输入您的门路的名称。它应该是之前由 cloudformation 创立的雷同 S3 存储桶,以及由您创立的名为 transformresults
的文件夹。验证文件夹中有已创立的分段 csv 文件。
8. 抉择 下一步。
9. 在抉择一个 IAM 角色局部,抉择 抉择 IAM 角色。
10. 对于 IAM 角色,输出爬网程序的名称。
11. 抉择 下一步。
12. 对于 频率 ,抉择 按需运行。
13. 配置爬网程序的输入,将 数据库 设为 cfn-database-patient。
14. 将增加到表格的前缀的值设为 table_results_。这样做将有助于辨认蕴含转换后果的表。
15. 单击 完结。
16. 抉择雷同的爬网程序,并单击 运行爬网程序。在胜利执行爬网程序当前,您应该看到已创立的,而且与您在爬网程序配置期间抉择的相应数据库中的爬网程序对应的新表格。
17. 在 Amazon Glue 控制台的 数据库 下方,抉择 表。
18. 抉择 操作。
19. 抉择 编辑表详细信息。
20. 在 Serde 序列化库 的下方输出:
org.apache.hadoop.hive.serde2.OpenCSVSerde
21. 在 Serde 参数下方,增加键 escapeChar,其值为 \。
22. 增加键 quoteChar,其值为 “(半角双引号)。
23. 设置键 field.delim,值为 ,
24. 增加键 separatorChar,值为,
您能够依据基于所领有数据集的类型的要求设置 Serde 参数。
25. 通过将所有列的数据类型设为 String,对表的架构进行编辑。要编辑表的架构,单击表格,而后单击 编辑架构 按钮。
您还能够依据您的要求,抉择按爬网程序保留推断数据类型。为了简略起见,本文将全副都设为 String
数据类型,但 match_id
列除外,它被设为 bigint
。
应用 Amazon Athena 查看输入
要应用 Amazon Athena 查看输入,执行以下步骤:
1. 在数据目录中,抉择 表。
2. 抉择由您的爬网程序为后果创立的表的名称。
3. 抉择 操作。
4. 抉择 查看数据。
Athena 控制台将会关上。如果首次运行 Amazon Athena,您可能必须单击 开始 。在首次运行查问前,您还将须要设置查问后果在 Amazon S3 中的地位。在 Amazon Athena 管制台上单击 设置查问后果在 Amazon S3 中的地位,而后设置查问后果的地位。您能够在之前由 cloudformation 创立的雷同 Amazon S3 存储桶中创立更多文件夹。请确保 S3 门路以 / 结尾。
5. 抉择适当的数据库。在本文中,抉择 cfn-database-patient
。如果未在下拉菜单中看到该数据库,您可能须要刷新数据源。
6. 抉择蕴含 FindMatches 输入的后果表,而且此表中有患者记录和 match_id
列。在此例中就是 table_results_transformresults。如果您为该后果表抉择了不同的名称,须要更改以下查问以反映正确的表名称。
7. 抉择运行查问,以运行以下查问。
SELECT * FROM "cfn-database-patient"."table_results_transformresults" order by match_id;
以下截图显示的是您的输入。
平安注意事项
Amazon Lake Formation 通过为您提供一个核心地位来帮忙爱护您的数据;无论应用哪项服务进行拜访,您都能够在此地位中配置精密数据拜访策略
要应用 Lake Formation 集中数据拜访策略管制,首先敞开对您在 S3 中存储桶进行间接拜访的权限,以便 Lake Formation 治理所有的数据拜访。通过 Lake Formation 配置数据保护和拜访策略,该 Lake Formation 会在对您的数据湖中的数据进行拜访的所有 Amazon 服务中执行此类策略。您能够配置用户和角色,并且定义这些角色能够拜访的数据,最低到表和列级别。
Amazon Lake Formation 提供基于简略授予 / 撤销机制的权限模型。Lake Formation 权限和 IAM 权限联合,对拜访存储于数据库的数据和形容该数据的元数据的权限进行管制。如需更多信息,见 Lake Formation 中的元数据和数据的平安及拜访权限管制:
https://docs.aws.amazon.com/l…
Lake Formation 目前反对 S3 上的服务器端加密(SSE-S3、AES-265)。Lake Formation 还反对您的 VPC 中的公有终端节点,并记录 Amazon CloudTrail 中的所有流动,为您提供网络隔离和可审计性。
Amazon Lake Formation 服务是一项合乎 HIPAA 要求的服务。
小结
本文演示了如何应用 Lake Formation FindMatches ML 转换在患者数据库中查找匹配的记录。它让您能够在两个数据集中的记录不采纳雷同的标识符或蕴含反复数据时找到匹配。若字段不齐全匹配,或属性缺失或损坏,此办法帮忙您在数据集行之间查找匹配。
您当初随时能够通过 Lake Formation 开始构建,并对您的数据尝试应用 FindMatches。
参考资料
Amazon Lake Formation:
https://amazonaws-china.com/l…
Open Source Freely Extensible Biomedical Record
Linkage Program (FEBRL):
https://github.com/J535D165/F…
Amazon Glue:
https://amazonaws-china.com/glue
Amazon Athena:
http://amazonaws-china.com/at…
Amazon S3:
http://amazonaws-china.com/s3
Amazon CloudFormation:
http://amazonaws-china.com/cl…
由 Amazon Glue 生成的标签数据文件:
https://aws-bigdata-blog.s3.a…
预生成标签数据文件:
https://aws-bigdata-blog.s3.a…
标签数据文件:
https://patient-matching-mltr…
Amazon CloudTrail:
http://amazonaws-china.com/cl…
合乎 HIPAA 要求:
https://amazonaws-china.com/c…
本篇作者
Dhawalkumar Patel
亚马逊云科技高级解决方案架构师
他始终就任于从大型企业到中型初创公司等组织,致力于解决与分布式计算和人工智能无关的问题。目前,他正专一于钻研机器学习和无服务器技术。
Ujjwal Ratan
亚马逊云科技寰球衰弱医疗与生命科学团队首席机器学习专家解决方案架构师
他的主攻方向是机器学习及深度学习利用,以解决各种事实中的行业问题,例如,医学成像、非结构化临床文本、基因组学、精准医学、临床试验和护理品质优化,等等。他擅长于扩大亚马逊云科技云上的机器学习 / 深度学习算法,以放慢训练和推导。在业余时间,他喜爱观赏(和弹奏)音乐,以及和家人来一场说走就走的公路旅行。