【发布时间】:2022-05-20 21:37:25
【问题描述】:
FHIR 文档的规范似乎要求文档资源中的所有捆绑条目都是以组合条目为根的参考图的一部分。也就是说,它们应该是一直追溯到根条目的引用关系的源或目标。
不幸的是,我无法找到 FHIR 规范中的所有相关段落;在3.3.1 Document Content 中有一个拼写的地方,但目前还不清楚这是否属于全部“文档”类型的包(即,即使是那些恰好是类型代码为“文档”的包,但只是机器可处理数据的集合,没有任何表示 FHIRy 文档的愿望)。
引用要求的问题在于 HAPI 验证器使用线性搜索来检查引用。因此,如果我们必须将 N 个充满数据的捆绑条目发送给付款人,我们必须包含一个包含 N 个引用的列表(每个包含数据的捆绑条目一个)。这导致在验证期间需要花费 O(N) 的努力进行 N 次参考搜索,这使得参考检查的复杂性有效地与条目数量成二次方。
这很容易让最强大的计算机也瘫痪。当前的大小约束有效地将每个文件的条目数限制在大约 25000,并且 HAPI 验证器需要几个小时即使在目前可用的最强大的 CPU 上,也要仔细研究它。如果没有引用,则同一文件的验证将花费不到一分钟的时间。
在我们的用例中,承载数据的条目在包含的捆绑文件之外没有身份。实际上,它们既不需要entry.fullUrl 也不需要entry.resource.id,因为它们的业务标识符包含在包含的base64 blob 中。但是,这些标识符的存在与否对验证所需的时间没有实际影响(即使对于 1 GB 文件也只有几分之一秒),所以谁在乎呢。杀死 HAPI 验证器的是引用列表。
也许可以通过使所有条目都包含对作品的引用来满足引用要求的字母。 HAPI 验证器不关心任何一种方式,所以我不知道这是否有效。但即使它是 FHIRly 有效的,它也将是一个非常愚蠢的解决方法。
有没有办法放弃引用要求?也许通过将捆绑类型更改为“集合”之类的东西,或者使用contained 资源?
P.S.:目前我们正在使用一种解决方法,将验证时间从几小时缩短到不到一分钟,但这是一种 hack,我们目前没有资源来修复 HAPI 验证器。我最关心的是如何更改规范(配置文件)以避免我描述的问题的问题。
【问题讨论】: