FHIR over HIE 存储库

FHIR over HIE repository

我需要在我们的临床存储库上实施 FHIR API。由于我们的数据是从多个来源存储的,每个临床 data/act 都用一个系统+ID 对表示,其中系统通常用 OID 表示。例如患者标识符将为 {1.4.7.9.9, MRN123}
问题是如何从客户的角度处理这些资源。

我的选择是:
1. h_t_t_p://BaseUrl/1.4.7.9.9/Patient/MRN123/... - 其中 h_t_t_p://BaseUrl/1.4.7.9.9 将设置为基地址和路径,所有资源都将以此为基础进行评估。
2. h_t_t_p://BaseUrl/Patient/1.4.7.9.9+MRN123/... - 系统和 ID 的串联。这种方法是最不受欢迎的,因为消费者通常不知道 systemId(在选项 1 中 - 我们将向他提供要使用的 baseUrl)。
3. "Standard" URL schema h_t_t_p://BaseUrl/Patient/MRN123/... with the System as custom 属性 in the header HTTP 请求。

感谢您解决该问题的想法和其他选择(如果有)
谢谢

选项 3 不符合要求,因为它会导致键冲突 - URL 本身在服务器中必须是唯一的。

选项 1 本质上需要一个不同的 FHIR 端点(具有自己的一致性声明和处理查询的能力等)。这似乎对您和其他实施者来说都是痛苦的(所有实施者都在谈论你需要知道所有的基地 URL 才能联系到你,他们必须搜索所有的端点才能找到所有的病人,等等)

这样就剩下选项 2。我不明白为什么不希望这样。作为一般规则,资源 ID 就像数据库主键。在搜索您的系统之前,外部系统都不知道它们是什么。 FHIR 系统的客户端不能依赖任何特定的资源 id 方案——在许多服务器上,它们是随机的 guid。因此,搜索是针对业务标识符执行的 - 在您的情况下,我希望有一个 "identifier" 元素也包含患者标识符 - 即使它也以损坏的形式表示为 "id" .然后您可以在 [base]/Patient?identifier=MRN123 上搜索,尽管有可能返回多个匹配项。

旁注:您不能在标识符中使用“+”——所以我建议使用 1.4.7.9.9:MRN123。