You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hapi FHIR RestfulServer R4 Consent资源ID解析异常问题咨询

问题1根因与解决方案

你遇到的@ResourceParam注入的Consent实例ID为null是HAPI FHIR的默认行为:

  • FHIR规范约定,资源的ID默认由服务端在Create操作时分配,因此HAPI FHIR的RestfulServer默认会在解析Create请求的资源参数时,主动清空客户端上传的资源body中携带的ID字段,避免ID冲突。你手动解析原始请求JSON时没有框架的默认拦截逻辑,所以可以正常获取ID,这个现象和你定义的拦截器无关。

解决方案

如果你的业务场景确实需要允许客户端在Create请求时指定资源ID,只需在FHIRServlet的initialize方法中开启客户端指定ID的配置即可:

@Override
protected void initialize() throws ServletException {
    setFhirContext(Configuration.getInstance().getFhirContext());
    // 新增这一行,开启允许客户端分配ID的配置
    setAllowClientAssignedIds(true);
    registerInterceptor(new PreprocessedRequestInterceptor());
    setResourceProviders(List.of(new ConsentResourceProvider()));
}

如果业务场景不允许客户端指定ID,你可以在业务逻辑中生成服务端ID后主动调用theConsent.setId()方法赋值,后续就能正常获取ID。


问题2补充说明

你采用的getFhirContext().getParserOptions().setStripVersionsFromReferences(false)配置是官方推荐的解决方案,该配置会禁止框架自动移除资源引用中的/_history/xxx版本后缀,完全匹配你的需求。


内容的提问来源于stack exchange,提问作者ixM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 04:21:02