簡體   English   中英

在 XML 和 Json 之間轉換 fhir

[英]Convert fhir between XML and Json

有沒有辦法通過獨立於使用的 FHIR 版本的方式將 fhir 包從 json 轉換為 xml?

我認為 Firely 的 .net fhir api 可以做到,但 api 的任何給定版本似乎都特定於 FHIR 的某個版本。

問題是 FHIR Bundle(或任何資源)隱含地總是有一個版本。 理由是每個 FHIR 版本都有(或可以有)不同的基礎數據 model。 It is possible though, using the .NET FHIR API (specifically package https://www.nuget.org/packages/Hl7.Fhir.Serialization ) to do the conversion with minimal version differences. 以下代碼使用與版本無關的ISourceNode ( http://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()是危險的,因為忽略版本是。 不過,它在許多情況下都可以使用,如果它對您來說足夠好,那可能是通往 go 的方法。

更安全的解決方案是使用相同的代碼,但另外使用所謂的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 服務器中就是這樣做的。

FHIR java 驗證器可以為任何版本執行此操作。 這可能是合適的,具體取決於您需要使用它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM