FHIR开发新手调用fire.ly服务器报'timestamp'未知元素错误求助
解决FHIR客户端调用时的StructuralTypeException异常
问题核心
调用await fhirClient.GetAsync("Patient/f741e0731c6e429f9600e409a5993bb3/Appointment")时触发的StructuralTypeException,本质是客户端与服务器的FHIR版本不匹配。
Bundle.timestamp元素在FHIR 3.0.2(STU3)版本中不存在,但在R4及更高版本中被引入。而server.fire.ly默认提供R4版本服务,若你的本地客户端配置为STU3,解析服务器返回的含timestamp字段的Bundle时就会出现该错误。
解决方案
匹配FHIR版本配置
确保客户端版本与server.fire.ly的R4版本一致,同时启用版本校验提前规避不兼容问题:var fhirClient = new FhirClient("https://server.fire.ly", new FhirClientSettings { VerifyFhirVersion = true, // 强制校验客户端与服务器版本一致性 PreferredFormat = ResourceFormat.Json });修正API调用方式
FHIR标准中不存在Patient/{id}/Appointment的嵌套调用路径,正确获取患者关联预约的方式是使用搜索参数:var appointments = await fhirClient.SearchAsync<Appointment>(new SearchParams().Add("patient", "f741e0731c6e429f9600e409a5993bb3"));版本校验的作用
开启VerifyFhirVersion = true后,客户端会在请求前检查服务器FHIR版本,若不匹配会直接抛出版本不兼容异常,避免后续数据解析时出现结构错误。
内容的提问来源于stack exchange,提问作者Anil patil
相关产品推荐
相关产品推荐

