如何为Hapi Fhir服务器的观察资源提供程序实现搜索操作?

时间:2016-03-08 16:51:30

标签: java hl7-fhir hapi

我试图理解Hapi Fhir中RESTful Server的工作方式,我想为Observation资源实现一些@Search方法。

目前,我有这个@Read操作,当尝试从浏览器访问资源(例如:http://localhost:8080/NewFHIRServer/fhir)时,该操作成功运行:

@Read()
public Observation readObservationById(@IdParam IdDt theId) {
    for (Entry<Long, Deque<Observation>> entry : myPatientIdToObservations.entrySet())
    {
        for (Observation obs : entry.getValue()) {
            if (obs.getId().equals(theId)) {
                return obs;
            }
        }
    }

    throw new ResourceNotFoundException(theId);
}    

然而,当我尝试为@Search操作做类似的事情时,我收到错误。我希望能够通过像这样(或类似)运行搜索来获得响应:

Bundle response = client
        .search()
        .forResource(Observation.class)
        .where(Observation.SUBJECT.hasId("Patient/1"))
        .execute();   

为了实现这一目标,我需要在@Read方法中使用哪些参数?我现在得到的错误如下:

  

此服务器上的FHIR端点不知道如何处理GET   操作[观察]参数[[subject]]

很明显为什么它不起作用,因为我的标题看起来像这样:

public Observation searchObservationById(@IdParam IdDt theId)     

我一直在查看示例,试图解决这个问题,我不太明白这个参数的语法是什么意思:

public List<Patient> getPatient(@RequiredParam(name = Patient.SP_FAMILY) StringParam theFamilyName)...

为了使用最后一个示例,您将如何进行查询?

谢谢

0 个答案:

没有答案