微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在XML和Json之间转换fhir

如何解决在XML和Json之间转换fhir

有没有办法通过独立于所使用的FHIR版本的方式将fhir包从json转换为xml?

我认为firenet的.net fhir api可以做到,但是任何给定版本的api似乎都是特定于FHIR发行版的。

解决方法

问题是FHIR捆绑包(或任何资源)隐式始终具有版本。理由是每个FHIR版本都具有(或可以具有)不同的基础数据模型。 但是,可以使用.NET FHIR API(特别是软件包https://www.nuget.org/packages/Hl7.Fhir.Serialization)进行转换,并且版本差异最小。 以下代码使用与版本无关的ISourceNodehttp://docs.simplifier.net/fhirnetapi/parsing/isourcenode.html

进行转换
using Hl7.Fhir.ElementModel;
using Hl7.Fhir.Serialization;    

var xml = "<Patient xmlns=\"http://hl7.org/fhir\"><identifier><use value=\"official\" /></identifier></Patient>";
var patientNode = FhirXmlNode.Parse(xml);
var typedElement = patientNode.ToTypedElement();
var json = typedElement.ToJson();

不过,上面的代码有一个问题,因为VS会告诉您。使用不带参数的ToTypedElement()是危险的,因为忽略版本是危险的。不过,它在很多情况下都可以使用,如果对您来说足够好,那可能就是要走的路。

一个更安全的解决方案是使用相同的代码,但另外使用所谓的IStructureDefinitionSummaryProvider(为歉意表示歉意)为API提供特定的版本信息。可以在特定于版本的API库中找到此接口的实现,例如https://www.nuget.org/packages/Hl7.Fhir.R4

using Hl7.Fhir.ElementModel;
using Hl7.Fhir.Serialization;
using Hl7.Fhir.Specification;

var xml = "<Patient xmlns=\"http://hl7.org/fhir\"><identifier><use value=\"official\" /></identifier></Patient>";
var patientNode = FhirXmlNode.Parse(xml);
var summaryProvider = new PocoStructureDefinitionSummaryProvider();
var typedElement = patientNode.ToTypedElement(summaryProvider);
var json = typedElement.ToJson();

您可能可以根据要读取的输入的某些属性来注入这些PocoStructureDefinitionSummaryProviders。例如,这就是我们在Vonk FHIR server中所做的事情。

,

FHIR Java验证程序可以对任何版本执行此操作。根据您需要使用它的情况可能合适

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。