借用 EPIC 官方的一张图来说明下 EPIC 和 IRIS 的关系。
在上图的 M 语言部分,我们看到有 IRIS 和 GT.M,可能你对这 2 个定义不太了解。
IRIS 是一个 K-V 数据库,主要深耕在医疗系统领域。
GT.M 和 IRIS 基本上相同,也是一个 K-V 数据库。GT.M 和 IRIS 中的不少类库是可以通用的。
但,随着美国 VA 医院不再使用 GT.M 数据库了,所以 YottaDB 数据库就从 GT.M 中 Fork 了一个版本来继续提供服务。
简单理解
EPIC 多面向是各种类型的医院,美国 VA 医院本身有一套自己的 EHR 系统,这套系统是基于 GT.M 数据库引擎的。
EPIC 最开始也使用相同的 GT.M 数据库引擎,但在 2020 年以后,EPIC 开始使用 IRIS 数据库引擎了。
其中主要原因我猜测就是 GT.M 被美国 VA 医院弃用了,虽然 VA 医院的 EHR 更新也不太顺利,但弃用这个事实存在的。
请参考文章:VISTA隐退,美国医疗信息化一个时代的谢幕 和 美国退伍军人事务部新版电子病历系统投资巨大却进展不顺
EPIC,为了保持继续使用基于 M 语言的数据库引擎,在当前市场上 IRIS 是一个选择。
如果 EPIC 继续选择使用 GT.M 的话,那么他们只能 YottaDB 数据库引擎了。
所以,从 2020 年以后,可以看成 EPIC 只支持 IRIS 数据库引擎。
Chronicles 是什么
基于 IRIS 数据库引擎,EPIC 使用 M 语言另外构建了一套框架和数据库访问组件。
这个就是 Chronicles。
Chronicles Data Globals 可以认为是 Chronicles 和 M 语言全局变量中的一个映射。
根据我们对 Chronicles 数据库的了解,Chronicles 将会把数据映射到 M 语言的全局变量中,然后提供语言级别的调用,这个和我们常用的关系数据库不一样,因为我们不可能把数据库中的内容全部映射到一个程序语言的全局变量中,这会导致溢出的。
但 Chronicles 这个数据就是这样操作的。
如果你的医院部署了 EPIC 系统,程序员需要直接访问数据库引擎,并且写存储过程的话,那么需要在 Chronicles 层进行操作。