代码之家  ›  专栏  ›  技术社区  ›  Jeremy

使用FHIR-nuget包通过引用查找包中的资源

  •  0
  • Jeremy  · 技术社区  · 5 年前

    this

    如何解析捆绑包中的引用:

      • 如果引用的格式为[type]/[id],并且
        • 然后尝试在bundle中解析为restfulurl引用。
        • 如果无法解决,则引用在本规范中没有定义的含义
      • 否则,不可能有任何解决方法,并且引用在本规范中没有定义的含义
    • 其他的
      • 查找具有与引用中的URI匹配的fullUrl的条目

    如果没有URL,则可以通过扫描

    如果引用特定于版本(相对或绝对), 然后在匹配fullUrl之前从URL中删除该版本,然后 解析包含资源中引用的规则与 包含的资源。

    如果找到多个匹配项,则不明确哪个是正确的。 或其他应用程序可能会返回错误 认为合适。

    <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>
    

    是否提供了可以解析相关引用的功能?

    • 如何将相对的url转换成绝对的,就像规范中所说的那样?
    • 从EntryComponent的FullUrl中提取根的逻辑是什么?我怎么知道根是什么?
    • 我怎么知道引用是通过标识符的?它看起来就像一个相对的参照物。
    0 回复  |  直到 5 年前
        1
  •  1
  •   Mirjam Baltus    5 年前

    在.NETFHIR库中已经有了这样的功能,其形式是ResourceReference上的扩展方法。在你的例子中,这样的方法可能有效:

        ResourceReference r1 = ((Observation)b.Entry[0].Resource).Subject;
        var abs = r1.GetAbsoluteUriForReference(b.Entry[0].FullUrl);
    

    这将从源资源的subject字段获取(相对)引用,并使用源条目的fullUrl将其中的端点/根与相对引用相结合。

    ResourceIdentity ResourceIdentity unit tests 有很多例子。

    如果引用是按标识符的,则将填充ResourceReference的.identifier。或者,如果是条件引用,则会填充ResourceIdentity的.Query。

    推荐文章