患者.出生日期。 en-GB '部分格式无效,应使用 ISO8601'

问题描述 投票:0回答:1

FHIR 服务器和 FHIR 客户端在区域设置为“en-GB”的欧盟环境中工作。 两者都使用 Firely 团队的 Hl7-R4 .NET 版本。

如果我设置患者的出生日期类似

patientJson.BirthDate = "25-12-1970"
,然后将请求发送到 FHIR 服务器,我会得到一个异常:

"'Partial is in an invalid format, should use ISO8601 YYYY-MM-DDThh:mm:ss+TZ notation'. (at Patient.birthDate[0])".

但是如果我设置了

patientJson.BirthDate = "1970-12-25"
一切就OK了。 我不能指望客户(大多数来自欧盟)会记得在发送到 fhir 服务器之前转换为美国格式的日期。 如何为 HL7 序列化程序设置正确的格式(例如“en-GB”)?

尝试将其添加到 Startup.cs

public virtual void Configure(IApplicationBuilder app)
{
    var supportedCultures = new[]
    {
        new CultureInfo("en-US"),
        new CultureInfo("en-GB"), 

       };

    app.UseRequestLocalization(new RequestLocalizationOptions
    {
        DefaultRequestCulture = new RequestCulture("en-GB"),
        // Formatting numbers, dates, etc.
        SupportedCultures = supportedCultures,
        // UI strings that we have localized.
        SupportedUICultures = supportedCultures
    });

没有帮助 我用谷歌搜索了这个代码

public static PartialDateTime Parse(string value)
        {
            try
            {
                var dummy = XmlConvert.ToDateTimeOffset(value);
            }
            catch
            {
                throw new FormatException("Partial is in an invalid format, should use ISO8601 YYYY-MM-DDThh:mm:ss+TZ notation");
            }

但此代码并不意味着它不能设置为使用类似“dd-mm-yyyy”的内容进行序列化/反序列化。

c# datetime datetime-format hl7-fhir culture
1个回答
1
投票

YYYY-MM-DD 不是特定于国家/地区的格式。它旨在成为通用格式,并且无论区域设置如何都必须使用。我不知道为什么

patientJson.BirthDate = "12-25-1970"
没有让你失败。这当然是无效的。所有日期时间,无论 XML、JSON 或 RDF 都必须遵守 YYYY-MM-DD 语法。

© www.soinside.com 2019 - 2024. All rights reserved.