HAPI FHIR @Create操作未返回MethodOutcome响应

问题描述

我将程序从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());

}
}

解决方法

我已经建立了一个环境并调试了服务器端代码。 我相信您会从this得到一些提示。 PreferReturnEnum中定义了三种模式,当您在HEADERS中指定一个额外的头,其键为“ Prefer”且值为“ return = OperationOutcome”时,在operationOutcome中定义的值将被撤消。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...