如何启用Asymmetrik FHIR服务器根URL以处理Bundle事务请求?
解决步骤
1. 启用服务器Transaction支持
Asymmetrik FHIR Server默认关闭Bundle事务处理能力,你需要在服务启动配置中显式开启:
找到你初始化FHIR服务的配置代码,添加transaction配置项:
const fhirServerConfig = { // 原有其他配置:版本、数据库、资源配置等 transaction: { enabled: true, // 可选配置:如需支持batch类型的Bundle可开启该参数 batch: true } }
配置修改后重启服务生效。
2. 修正请求参数
- 请求地址:确保你的FHIR服务基础路径配置和请求的
http://localhost:3000/4_0_0/完全匹配,部分部署场景下需要去掉末尾的斜杠,改为http://localhost:3000/4_0_0测试 - 请求头设置:必须添加
Content-Type: application/fhir+json,普通application/json会被服务器拒绝识别为FHIR资源请求
3. 校验Bundle格式合法性
你当前的Bundle存在一处不符合FHIR规范的问题:Condition资源的code.coding是数组类型,你写成了对象,且编码值不能为空,修正后如下:
{ "resourceType": "Bundle", "id": "f001", "type": "transaction", "entry": [ { "resource": { "resourceType": "Observation", "status": "registered" }, "request": { "method": "POST", "url": "Observation" } }, { "resource": { "resourceType": "Condition", "code": { "coding": [ { "system": "http://hl7.org/fhir/ValueSet/condition-code", "code": "你的业务编码", "display": "编码对应的展示名称" } ] } }, "request": { "method": "POST", "url": "Condition" } } ] }
补充:请确认你服务配置的
profiles数组中已经注册了Observation、Condition、Procedure三类资源的处理逻辑,否则对应资源的写入操作会失败。
做完以上三步后重新发起请求即可正常处理事务型Bundle,自动将多个资源写入对应数据库表。
内容的提问来源于stack exchange,提问作者DevAlmostDone
相关产品推荐
相关产品推荐

