0

我正在针对 Smile (hapi) CDR Fhir 服务器使用 .NET 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");
};
4

1 回答 1

0

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

于 2019-10-09T23:58:58.513 回答