【问题标题】:HL7.FHIR.R4 (C#): Literal '2020-12-01T23:00:00.000Z' cannot be parsed as a date. (at Bundle.entry[0].resource[0].birthDate[0])HL7.FHIR.R4 (C#):无法将文字“2020-12-01T23:00:00.000Z”解析为日期。 (在 Bundle.entry[0].resource[0].birthDate[0])
【发布时间】: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 的文字。在我的客户端,我自然可以简单地捕获这个异常。 (当然,您无法保护自己免受公共测试服务器上各种不良数据的侵害)。

标签: c# hl7-fhir


【解决方案1】:

服务器正在为患者提供不正确的日期,因为它有一个时间组件。所以 .NET 库是正确的,我想抱怨它。

【讨论】:

  • 感谢 Ewout!请参阅我对 Grahame 上述评论的评论。我正处于陡峭学习曲线的开始阶段。
  • 顺便说一句,Hl7.FHIR 库(CHM 或 HTML 或其他任何内容)是否有任何 API 文档?我还没有找到任何东西。 TIA!
  • 我自己在 GitHub 上找到了它:github.com/FirelyTeam/firely-net-sdk/tree/develop-stu3/src/…(用于模型模块)。然而,并不是那么容易找到。
猜你喜欢
  • 2021-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-19
  • 1970-01-01
  • 2020-10-21
  • 2021-01-15
  • 2021-03-30
相关资源
最近更新 更多