Java FHIR搜索中的类分组函数

Java FHIR搜索中的类分组函数,java,hapi,hl7-fhir,hapi-fhir,Java,Hapi,Hl7 Fhir,Hapi Fhir,我使用的是最新版本的HapiFHIR(服务器端和客户端),它应该符合HL7 FHIR 作为我正在进行的项目的一部分,我需要检索每个设备的最新观察结果。有SQL方面的经验,我自然希望使用诸如groupby之类的操作来实现这一点。但是,从阅读文档来看,似乎在HapiFHIR中没有这样的操作 我遗漏了什么吗?如果没有,为了检索每个设备的最新版本(即,按日期排序,限制1),什么是一个好的解决方法?由于您使用FHIR,它有一个很好的REST搜索API,因此不需要实现您自己的查询 {{baseurl}}/O

我使用的是最新版本的HapiFHIR(服务器端和客户端),它应该符合HL7 FHIR

作为我正在进行的项目的一部分,我需要检索每个设备的最新观察结果。有SQL方面的经验,我自然希望使用诸如
groupby
之类的操作来实现这一点。但是,从阅读文档来看,似乎在HapiFHIR中没有这样的操作


我遗漏了什么吗?如果没有,为了检索每个设备的最新版本(即,
按日期排序,限制1
),什么是一个好的解决方法?

由于您使用FHIR,它有一个很好的REST搜索API,因此不需要实现您自己的查询

{{baseurl}}/Observation?device:Device=123&_sort=-_lastUpdated&_count=1
获取ID为123的设备的最新观察结果

编辑:由于您也在使用HAPI客户端,您的查询代码如下所示:

Bundle results = myFhirCtx.newRestfulGenericClient("yourFHIRbaseURL")
        .search()
        .forResource(Observation.class)
        .where(Observation.DEVICE.hasId("123"))
        .sort().descending(Observation.DATE)
        .count(1)
        .returnBundle(Bundle.class)
        .execute();
上面的GET-from搜索设备的最新更新的观察结果,JAVA代码根据其日期获取最新的观察结果。我想你是说第二个

过时,因为这是对所有设备返回最新的n个观测值,而不是对每个设备返回n个观测值,对于多个设备:

如果要同时查询多个设备,可以通过查询X类型设备的观测值或制造商或型号设备的最新观测值来聚合查询,请参阅:

如果要查询一组已知设备ID的最新n个观测值,可以使用OR运算符,它只是一个冒号

{{baseurl}}/Observation?device:Device=123,345,678&_sort=-_lastUpdated&_count=n
在hapi客户端代码中:

    Bundle results = myFhirCtx.newRestfulGenericClient("ttt")
        .search()
        .forResource(Observation.class)
        .where(Observation.DEVICE.hasAnyOfIds(new ArrayList<String>(Arrays.asList("123", "345", "678" ))))
        .sort().descending(Observation.DATE)
        .count(n)
        .returnBundle(Bundle.class)
        .execute();
Bundle results=myfhirtx.newRestfulGenericClient(“ttt”)
.search()
.forResource(Observation.class)
.where(Observation.DEVICE.hasAnyOfIds(新的ArrayList(Arrays.asList)(“123”、“345”、“678”))
.sort().降序(观察日期)
.计数(n)
.returnBundle(Bundle.class)
.execute();
结论

如果要获得设备子集中每个设备的n个最新观测值,可以:

  • 多次使用此示例的第一个查询
  • 或者,如果您喜欢单个REST调用,您可以将这些GET调用批处理在批处理包中,如本例所示:。这将返回一个批处理响应包,其中包含每个搜索的条目
谢谢您的回答。然而,如果我的问题不清楚的话,我想说的是,我正在尝试(同时)获取每个设备的最新观察结果。e、 g.一次申请50台不同的设备。嗨,elnin,再次感谢您抽出时间。不幸的是,您上传的代码没有按照描述执行。它只返回一个观察结果,即所提供设备中最新的观察结果。这与我的用例不同–我希望在一个请求中获得一些函数,用于设备
[a,b,c..]
返回每个设备的最新观察结果[最新观察到的
a
,最新观察到的
b
,最新观察到的
c
..].@AlexandreCassagne你找到解决办法了吗?我也有类似的情况。我必须“只获取所有患者资源中最新发布的DiagnosticReport资源”