【发布时间】:2020-02-08 10:03:41
【问题描述】:
我正在使用 FHIR 包,并尝试使用 .net FHIR R4 nuget 包解析对包中资源的引用。我使用this 信息作为参考。
如何解析 Bundle 中的引用:
- 如果引用不是绝对引用,则将其转换为绝对 URL:
- 如果引用的格式为 [type]/[id],并且
- 如果包含资源的包条目的 fullUrl 是 RESTful 的(请参阅 RESTful URL 正则表达式)
- 从 fullUrl 中提取 [root],并将引用(类型/id)附加到它
- 然后尝试在捆绑包中解析为 RESTful URL 引用。
- 如果无法解决,则参考在本规范中没有定义的含义
- 否则无法解决,并且参考在本规范中没有定义的含义
- 其他
- 查找具有与引用中的 URI 匹配的 fullUrl 的条目
- 如果没有找到匹配项,并且 URI 是可以解析的 URL(例如,如果是 http: URL),请尝试直接访问)
另外请注意,引用可以是标识符,如果它 是,并且没有url,可以通过扫描里面的id来解决 捆。另请注意,事务可能包含条件引用 在处理匹配之前必须由服务器解决。
如果引用是特定于版本的(相对的或绝对的), 然后在匹配 fullUrl 之前从 URL 中删除版本,然后 根据 Resource.meta.versionId 匹配版本。请注意, 解析包含资源中的引用的规则与 那些用于解析包含 包含资源。
如果找到多个匹配项,则不明确哪个是正确的。 应用程序可能会返回错误或采取其他措施,因为它们 认为合适。
Bundle.FindEntry 扩展方法似乎只适用于绝对引用,例如 this...
<entry>
<fullUrl value="http://example.org/fhir/Observation/124"/>
<resource>
<Observation>
<id value="124"/>
<subject>
<!-- this is reference to the first patient above -->
<reference value="http://example.org/fhir/Patient/23"/>
</subject>
</Observation>
</resource>
</entry>
...但是如果引用不是绝对的,则会引发异常,例如:
<entry>
<fullUrl value="http://example.org/fhir/Observation/123"/>
<resource>
<Observation>
<id value="123"/>
<subject>
<!-- this is reference to the first patient above -->
<reference value="Patient/23"/>
</subject>
</Observation>
</resource>
</entry>
是否提供了可以解析相对引用的任何功能? 失败的东西已经提供,我将如何编写自己的?
- 如何按照规范中的说明将相对网址转换为绝对网址?
- 从 EntryComponent 的 FullUrl 中提取根来解析的逻辑是什么?我怎么知道根是什么?
- 我如何知道引用是通过标识符?它看起来就像一个相对参考。
【问题讨论】:
标签: c# .net hl7-fhir fhir-net-api