Java FHIR搜索中的类分组函数
我使用的是最新版本的HapiFHIR(服务器端和客户端),它应该符合HL7 FHIR 作为我正在进行的项目的一部分,我需要检索每个设备的最新观察结果。有SQL方面的经验,我自然希望使用诸如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
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调用批处理在批处理包中,如本例所示:。这将返回一个批处理响应包,其中包含每个搜索的条目李>
[a,b,c..]
返回每个设备的最新观察结果[最新观察到的a
,最新观察到的b
,最新观察到的c
..].@AlexandreCassagne你找到解决办法了吗?我也有类似的情况。我必须“只获取所有患者资源中最新发布的DiagnosticReport资源”