【问题标题】:HAPI FHIR @Create Operation not returning MethodOutcome ResponseHAPI FHIR @Create 操作未返回 MethodOutcome 响应
【发布时间】:2020-10-08 16:33:31
【问题描述】:

我的程序基于hapishir's website 上的示例,并且该操作的工作原理是我收到 JSON 正文并更新数据库。我遇到的问题是没有返回响应。我构建了 MethodOutcome 对象,并“返回”它,但邮递员中什么也没有出现。我还编写了 @read 和 @Search 操作,它们都在 Postmat 的响应中返回资源,但是这个 @Create 不返回任何响应。

ObservationResourceProvider.java

public class ObservationResourceProvider implements IResourceProvider {

public ObservationResourceProvider() {    }

@Override
public Class<? extends IBaseResource> getResourceType() {
    return Observation.class;
}

@Create()
public MethodOutcome createObservation(@ResourceParam Observation observation){
    
    OpenERMDatabase db = new OpenERMDatabase();
    String newObservationId = db.addNewObservation(observation);

    //return the new Id if success else return an error message
    MethodOutcome retVal = new MethodOutcome();
    if (newObservationId != null) {
        retVal.setId(new IdType("Observation", newObservationId, "1.0"));
        retVal.setCreated(true);
    }else {
        OperationOutcome outcome = new OperationOutcome();
        outcome.addIssue().setDiagnostics("An Error Occurred");
        retVal.setOperationOutcome(outcome);
        retVal.setCreated(false);
    }

    
    return retVal;
}

}

SimpleRestfulServer.java

@WebServlet("/*")
public class SimpleRestfulServer extends RestfulServer{

//Initialize
@Override
protected void initialize()throws ServletException{
    //create a context for the appropriate version
    setFhirContext(FhirContext.forDstu3());

    //Register Resource Providers
    registerProvider(new PatientResourceProvider());
    registerProvider(new ObservationResourceProvider());

}
}

【问题讨论】:

  • 明智的做法是详细说明您在邮递员中看到的内容。你看不到“什么都没有”。您会看到响应标头、响应状态等。唯一真正看不到任何内容的情况是请求无法完整执行,通常是因为您的 URL 错误。
  • 这是一个很好的观点。正文中没有任何内容,但有标头数据,其中包含一个“位置”字段,其中包含“localhost:15437/Observation/<ID>/_history/1.0”,可用于获取新创建的 ID 值,但从来没有任何诊断信息正文或标题中的失败场景。我在哪里可以找到那个?
  • 这对我来说听起来像是预期的行为。 FHIR 基于纯 REST 实现,纯 REST 实现规定在响应中您可以确定创建实体的位置。您显然在响应标头中有该信息。它是否记录在您应该获得 JSON 响应正文的某个地方?
  • 我真的不在乎它是在标题中还是在正文中,但我仍然没有看到任何有关诊断的信息。如果它没有在正文中返回,并且在我运行的失败测试中我没有在标题中看到任何内容,那么我如何找到这些信息?
  • ...通过请求您获得的位置 URL?

标签: java spring-boot hapi hapi-fhir


【解决方案1】:

我已经建立了一个环境并调试了服务器端代码。 我相信你会从this 那里得到一些提示。 PreferReturnEnum中定义了三种模式,当你在HEADERS中指定一个额外的header,key为“Prefer”,value为“return=OperationOutcome”时,操作Outcome中定义的值将被返回。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-29
    • 2020-03-02
    • 2020-08-20
    • 2020-12-07
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    相关资源
    最近更新 更多