【发布时间】:2021-02-11 13:12:14
【问题描述】:
我是 FHIR 开发的新手,正在尝试通过示例学习(例如来自 Gino Cannessa 的 YouTube 频道)。 在尝试从 http://hapi.fhir.org/baseR4/ 服务器获取名称包含“测试”(或任何内容)的患者时,我收到以下错误消息:
Literal '2020-12-01T23:00:00.000Z' cannot be parsed as a date. (at Bundle.entry[0].resource[0].birthDate[0])
如果我尝试对其他公共测试服务器 (http://vonk.fire.ly) 做同样的事情,一切都会完美运行。显然我忘记了请求中的一些参数/约束。 这是我的代码:
using Hl7.Fhir.Model;
using Hl7.Fhir.Rest;
// ...
List<Patient> patients = new List<Patient>();
Bundle patientBundle = null;
List<string> criteria = new List<string>();
criteria.Add($"name={patientName}");
patientBundle = fhirClient.Search<Patient>(criteria.ToArray());
while (patientBundle != null)
{
foreach (Bundle.EntryComponent entry in patientBundle.Entry)
{
if (entry.Resource != null)
{
Patient patient = (Patient)entry.Resource;
patients.Add(patient);
}
}
patientBundle = fhirClient.Continue(patientBundle);
}
【问题讨论】:
-
您使用的患者姓名是什么?这肯定是服务器上的一个错误,你做错任何事都不会发生这种情况
-
格雷厄姆,非常感谢!是的,病人的名字是“测试”。我也认为这不是由于我的代码,而是由于 SDK 的解析器,正如 Ewout 似乎也提到的那样。我是 FHIR 事务的绝对新手,但也是一个 .Net 程序员,所以我天真地想知道为什么解析器无法处理这个看似非常类似于 DateTime 的文字。在我的客户端,我自然可以简单地捕获这个异常。 (当然,您无法保护自己免受公共测试服务器上各种不良数据的侵害)。