迭代分页的fhir响应

时间:2017-01-12 15:04:40

标签: dstu2-fhir hl7-fhir hapi-fhir

我在hapi fhir数据库上运行了一个查询,该数据库已将分页结果返回给我。我在java中使用hapi base来实际进行搜索,按照此处的文档:http://hapifhir.io/doc_rest_client.html

    Bundle bundle = client.search().forResource(Basic.class).returnBundle(ca.uhn.fhir.model.dstu2.resource.Bundle.class).execute();
    do {

        for (Entry entry: bundle.getEntry())
            System.out.println(entry.getFullUrl());

        if (bundle.getLink(Bundle.LINK_NEXT) != null)
            bundle = client.loadPage().next(bundle).execute();
        else
            bundle = null;
    }
    while (bundle != null);

代码运行到获取第一个包,并按预期打印出url,但是当它尝试执行下一个包时,我得到一个ConnectionException'连接被拒绝:连接'。

服务器似乎仍然响应,但我可以重新运行我的程序并返回完全相同的结果。

知道连接会被拒绝的原因吗?当我尝试从邮递员手动运行时,我遇到了类似的问题。

2 个答案:

答案 0 :(得分:2)

你所做的一切看起来是正确的。如果您手动执行搜索(例如,使用浏览器或邮递员或其他),下一个链接是什么样的?如果您也直接在浏览器中使用该链接,它是否有效?

例如,如果我在我的机器上本地运行CLI,并执行搜索,我会在响应中看到以下内容:

"link": [
   {
     "relation": "self",
     "url": "http://localhost:8080/baseDstu3/_history"
},
{
  "relation": "next",
  "url": "http://localhost:8080/baseDstu3?_getpages=d8454866-624d-4bb3-b7a0-0858e4870e7e&_getpagesoffset=10&_count=10&_pretty=true&_bundletype=history"
}
 ],

如果我将下一个链接(http://localhost:8080/baseDstu3?_getpages=d8454866-624d-4bb3-b7a0-0858e4870e7e&_getpagesoffset=10&_count=10&_pretty=true&_bundletype=history)插入浏览器,我会看到下一页。

你可以尝试一下,看看它是怎么回事?

答案 1 :(得分:0)

以防万一有人偶然发现这一点。我进行了某种重定向(由我团队的另一名成员设置)。基本上我的基本网址是localhost:8080,但是下一个地址是以localhost:1080的形式返回的(我不完全理解为什么)。

他更改了服务器中的配置,使其不重定向。