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”的内容进行序列化/反序列化。
YYYY-MM-DD 不是特定于国家/地区的格式。它旨在成为通用格式,并且无论区域设置如何都必须使用。我不知道为什么
patientJson.BirthDate = "12-25-1970"
没有让你失败。这当然是无效的。所有日期时间,无论 XML、JSON 或 RDF 都必须遵守 YYYY-MM-DD 语法。