根据规范here,如果您创建资源,服务器应返回创建的201以及Location头,其中包含已创建资源的新Logical Id和Version Id。
我正在将患者资源上传到http://fhir.healthintersections.com.au/open/Patient并使用Chrome调试工具我可以看到返回包含逻辑ID的'Content-Location'响应标头,但我无法使用jqXHR.getResponseHeader访问此标题( 'Content-Location')或jqXHR.getAllResponseHeaders()。
经过多次搜索,问题似乎是除非Access-Control-Expose-Headers 标头被添加到服务器,我无法查看我的应用程序中的标头,因为它是一个跨源请求。
是否存在解决此问题的另一种方法,以便在创建资源后找到逻辑ID?
答案 0 :(得分:2)
FHIR仅在标题中公开其元数据(id,版本特定ID,最后更新),因此您确实需要到达该Location标头以获取新创建的资源ID。可能有一种解决方法,即使用"搜索"仅使用此新创建的资源检索Feed的操作(假设它具有识别业务键,如患者ID)。资源的原子条目将包含id。
那就是说,这真的是一个黑客。但这不是与FHIR相关的问题(例如参见How to get responseheader location by jquery)。
要解决此问题,我将更新我的FHIR服务器(在spark.furore.com/fhir)以包含这些Access-Control-Expose标头。它应该在接下来的几个小时内更新,因此您可以尝试这是否适合您。