【问题标题】:How to implement Search operation for an Observation Resource Provider for Hapi Fhir server?如何为 Hapi Fhir 服务器的观察资源提供者实现搜索操作?
【发布时间】:2016-03-08 16:51:29
【问题描述】:

我正在尝试了解 Hapi Fhir 中的 RESTful 服务器是如何工作的,并且我想为观察资源实现一些 @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 操作[Observation],带参数[[subject]]

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

public Observation searchObservationById(@IdParam IdDt theId)     

我一直在查看示例以试图弄清楚这一点,但我不太明白这个参数中的语法是什么意思:

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

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

谢谢

【问题讨论】:

    标签: java hl7-fhir hapi


    【解决方案1】:

    要实现一个搜索方法,你需要在方法上使用@Search而不是@Read。然后,您可以使用带有 @OptionalParam@RequiredParam 注释的零个或多个参数。

    要使您的特定示例正常工作,您需要一个实现 _id 搜索参数的搜索方法,例如

    @Search public List<Patient> getPatient(@RequiredParam(name = Patient.SP_RES_ID) StringParam theId) { }

    【讨论】:

    • 我已经能够通过查看您的 github 文档来搜索患者,但我在为 Observations 执行相同操作时遇到了麻烦,因为我不知道在 . where(...) 在我查询时获取捆绑包,但我不知道在 @Search 函数的标题中放入什么(例如,查询具有给定患者 ID 的所有观察结果)。是否有任何类型的文档可以用来查找相关信息?
    • 要搜索资源“A”的实例,您需要在其中查找对资源“B”的引用的匹配项(例如,查找具有给定主题的所有观察),您需要使用 ReferenceParam。例如。 @OptionalParam(name="subject" ) ReferenceParam theSubject
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    相关资源
    最近更新 更多