如何在HL7 FHIR的OperationOutcome中返回成功响应数据?
FHIR认证端点返回令牌的标准方案
首先纠正一个关键误解:OperationOutcome并非用于承载成功业务数据,它的设计定位是传递操作的错误、警告、提示类状态信息,成功场景下不应使用该资源来返回accessToken、refreshToken这类业务数据。
针对登录、注册等认证端点的令牌返回需求,推荐以下几种符合FHIR标准的实现方式:
方案一:自定义操作(Operation)+ Parameters资源返回
FHIR允许定义自定义操作来处理登录、注册这类业务逻辑,操作的成功响应可以用Parameters资源承载令牌数据,这是FHIR中传递自定义业务参数的标准方式。
示例响应结构:
{ "resourceType": "Parameters", "parameter": [ { "name": "accessToken", "valueString": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." }, { "name": "refreshToken", "valueString": "def50200abc123..." }, { "name": "expiresIn", "valueInteger": 3600 } ] }
方案二:扩展用户资源返回(关联用户信息时使用)
如果登录/注册成功后需要同时返回用户主体信息(如患者、从业者),可以通过自定义扩展给对应的FHIR资源(如Patient、Practitioner)添加令牌字段。
示例扩展后的患者资源:
{ "resourceType": "Patient", "id": "user-1001", "extension": [ { "url": "http://your-organization.com/fhir/StructureDefinition/access-token", "valueString": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." }, { "url": "http://your-organization.com/fhir/StructureDefinition/refresh-token", "valueString": "def50200abc123..." } ], "name": [{"family": "Zhang", "given": ["San"]}], // 其他用户属性... }
注意:自定义扩展的URL需使用你的组织官方域名,保证扩展的唯一性和可识别性。
方案三:OAuth2标准响应结合FHIR格式
FHIR原生兼容OAuth2认证体系,若你的认证流程遵循OAuth2规范,可直接返回符合OAuth2标准的响应;如果必须贴合FHIR资源格式,可将OAuth2响应包装进Parameters资源(同方案一),兼顾两种规范的要求。
内容的提问来源于stack exchange,提问作者Ahmed El-Tabarani
相关产品推荐
相关产品推荐

