Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 病人,生日。欧洲标准GB';部分格式无效,应使用ISO8601';_C#_Hl7_Hl7 Fhir - Fatal编程技术网

C# 病人,生日。欧洲标准GB';部分格式无效,应使用ISO8601';

C# 病人,生日。欧洲标准GB';部分格式无效,应使用ISO8601';,c#,hl7,hl7-fhir,C#,Hl7,Hl7 Fhir,FHIR服务器和FHIR客户端在EU环境中工作,语言环境为“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.birthDa

FHIR服务器和FHIR客户端在EU环境中工作,语言环境为“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”一切都正常。 我不能相信客户(大多数来自欧盟)会记得在发送到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
    });
这没用 我在谷歌上搜索过


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

yyy-mm-dd不是特定于国家/地区的格式。它是一种通用格式,无论语言环境如何,都必须使用。我不知道为什么
patientJson.BirthDate=“12-25-1970”
对你来说没有失败。这肯定是无效的。所有日期时间,无论是XML、JSON还是RDF,都必须遵循YYYY-MM-DD语法。

HL7格式可能是XML,并且必须满足模式要求。如果您使用的是字符串日期,则不能从US更改为GB。您必须满足架构要求。如果您的客户正在使用架构,则一切都应该正常。计算机之间的数据传输应始终采用标准ISO格式。服务器上不应出现问题。服务器将始终采用ISO格式。客户端应始终将类存储为DateTime对象,序列化方法应采用DateTime对象和序列化为ISO和反序列化方法应采用ISO并生成DateTime对象。您唯一的问题是在客户端,用户需要将字符串日期解析为DateTime对象。只有在用户将字符串解析为DateTime时才会发生错误。如果用户将PC设置为本地区域性,则不会出现任何问题,您是对的“1970-12-25”在真实代码中,我在创建帖子时犯了一个错误。
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");
            }