针对hapi服务器的Fhir客户端永远不会返回超过2000条记录

问题描述 投票:0回答:1

我正在将.NET Fhir客户端用于Smile(hapi)CDR Fhir服务器。我尝试使用下面的代码检索3235名患者,但准确得不到2000名。我尝试使用而不使用no-cache选项添加标题。我知道服务器上有更多记录,因为我发出了Patient/?_summary=count,该记录提供了我期望的记录总数(3235)。

我已禁用服务器缓存,刷新了索引,但始终获得2000条记录。我还尝试过使用Get()和Search()方法检索患者的不同方法,但是两种方法都得出相同的结果。任何人都可以建议另一种方法来获得正确数量的患者,或者暗示我可能在做错什么吗?

var patients = new List<Patient>();
var bundle = (Bundle)client.Get("Patient");
while (bundle != null)
{
    patients.AddRange(bundle.Entry.Select(e => e.Resource as Patient));
    bundle = client.Continue(bundle);
}

我尝试使用包括高速缓存控制标头的几种变体,但计数保持不变。

client.OnBeforeRequest += (object sender, BeforeRequestEventArgs e) =>
{
    e.RawRequest.Headers.Clear();
    e.RawRequest.Headers.Add("Accept", "application/fhir+json;fhirVersion=4.0");
    e.RawRequest.Headers.Add("Cache-Control", "no-cache");
};
hl7-fhir hapi-fhir
1个回答
0
投票

服务器有权强加将在单个调用中返回的数据上限,无论客户端请求多少记录。检索更多数据的唯一方法是使用FHIR规范中定义的“下一个”链接翻页。

© www.soinside.com 2019 - 2024. All rights reserved.