随着 IRIS 中向量数据类型和向量搜索功能的引入,应用程序的开发正在开启一个充满各种可能性的全新世界,其中一个应用程序示例是我最近在巴伦西亚卫生局的一次公开竞赛中看到的应用程序,他们要求提供一种工具,能够使用 AI 模型协助进行 ICD-10 编码。
我们如何实现与所要求的应用程序类似的应用程序? 我们来看看需要什么:
- ICD-10 代码列表,我们将使用它作为 RAG 应用程序的上下文,在纯文本中搜索诊断结果。
- 经过训练的模型,它会将文本向量化,我们将在其中查找 ICD-10 代码中的对应项。
- Python 库,用于对 ICD-10 代码和文本进行摄取和向量化。
- 一个支持文本的友好前端,我们会在其中查找可能的诊断结果。
- 从前端接收的请求的编排。
IRIS 为我们提供哪些功能来满足上述需求?
- CSV 导入,可以使用 RecordMapper 功能,也可以直接使用嵌入式 Python。
- 嵌入式 Python 使我们能够实现使用所选模型生成向量所需的 Python 代码。
- 发布将从前端应用程序调用的 REST API。
- 互操作性生产,以允许在 IRIS 中跟踪信息。
我们只需要看看开发的示例:
d[IA]gnosis
在本文中,您可以访问开发的应用程序,在后续文章中,我们将详细了解如何实现每个功能,包括模型的使用、向量的存储和向量搜索的使用。
我们来看看这个应用程序:
导入 ICD-10 代码
在配置屏幕中,我们知道了 CSV 文件必须使用的格式,以符合我们要导入的 ICD-10 代码。 加载和向量化过程会占用大量时间和资源,因此,为了防止所需空间超出分配的 RAM,在部署 Docker 容器时,不仅配置了 Docker 可用的 RAM 内存,还配置了磁盘存储器:
# iris
iris:
init: true
container_name: iris
build:
context: .
dockerfile: iris/Dockerfile
ports:
- 52774:52773
- 51774:1972
volumes:
- ./shared:/shared
environment:
- ISC_DATA_DIRECTORY=/shared/durable
command: --check-caps false --ISCAgent false
mem_limit: 30G
memswap_limit: 32G
YAMLYAML
包含 ICD-10 代码的文件位于项目路径 /shared/cie10/icd10.csv 中,达到 100% 后,即可使用该应用程序。
在我们的应用程序中,我们定义了两个不同的诊断结果编码功能,一个基于系统中接收到的 HL7 消息,另一个基于纯文本。
从 HL7 中捕获诊断结果
项目中包含一些准备进行测试的 HL7 消息,只需将 /shared/hl7/messagesa01_en.hl7 文件复制到 /shared/HL7In 文件夹,相关的生产就会负责从中提取诊断结果,并显示在 Web 应用程序中:
在诊断结果请求屏幕中,我们可以看到通过 HL7 消息收到的所有诊断结果。 要将它们编码为 ICD-10,我们只需点击放大镜以显示与收到的诊断结果最接近的 ICD-10 代码列表:
选择后,我们将在列表中看到诊断结果及其相关的 ICD-10 代码。 点击带有信封图标的按钮,将使用原始代码生成一条消息,并在诊断结果部分包含所选新代码:
MSH|^~\&|HIS|HULP|EMPI||||ADT^A08|592956|P|2.5.1
EVN|A01|
PID|||1556655212^^^SERMAS^SN~922210^^^HULP^PI||GARCÍA PÉREZ^JUAN^^^||20150403|M|||PASEO PEDRO ÁLVAREZ 195 1 CENTRO^^LEGANÉS^MADRID^28379^SPAIN||555283055^PRN^^JUAN.GARCIA@YAHOO.COM|||||||||||||||||N|
PV1||N
DG1|1||O10.91^Unspecified pre-existing hypertension complicating pregnancy^CIE10-ES|Gestational hypertension||A||
JSONJSON
可以在路径 /shared/HL7Out 中找到此消息
以纯文本形式显示的诊断结果的屏幕截图
在“文本分析器”选项中,用户可以包含纯文本,并对其进行分析。 该应用程序将按 3 个词形还原的词(去除冠词、代词和其他不太相关的词)构成的元组进行搜索。 分析后,系统将向我们显示相关的带下划线的文本和找到的可能的诊断结果:
执行分析后,可以随时从分析历史记录中进行查询。
分析历史记录
执行的所有分析都会记录下来,可以随时查询,并且能够查看所有可用的 ICD-10 代码:
在下一篇文章中…
我们将看到,如何借助嵌入式 Python,使用特定的 LLM 模型对 ICD-10 代码进行向量化,从而将其用作上下文和自由文本。
如果您有任何疑问或建议,请随时对本文发表评论。