Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.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
BizTalk中FHIR JSON到XML的解码_Biztalk_Hl7 Fhir_Dstu2 Fhir_Biztalk Pipelines - Fatal编程技术网

BizTalk中FHIR JSON到XML的解码

BizTalk中FHIR JSON到XML的解码,biztalk,hl7-fhir,dstu2-fhir,biztalk-pipelines,Biztalk,Hl7 Fhir,Dstu2 Fhir,Biztalk Pipelines,我只是从FHIR和json开始,所以我的问题可能不会被很好地问到 我构建了一个BizTalk管道组件,用于使用此库将FHIR json转换为FHIR xml,基于我在此处找到的一个示例 下面是来自管道组件的代码片段。这与示例几乎相同 //Read the json message using (TextReader tr = new StreamReader(originalDataStream))

我只是从FHIR和json开始,所以我的问题可能不会被很好地问到

我构建了一个BizTalk管道组件,用于使用此库将FHIR json转换为FHIR xml,基于我在此处找到的一个示例

下面是来自管道组件的代码片段。这与示例几乎相同

//Read the json message
                        using (TextReader tr = new StreamReader(originalDataStream))
                        {
                            json = tr.ReadToEnd();
                        }

                        //Use FHIR-NET-API to create a FHIR resource from the json
                        Hl7.Fhir.Serialization.ResourceReader resourceReader = new Hl7.Fhir.Serialization.ResourceReader(FhirJsonParser.CreateFhirReader(json), ParserSettings.Default);

                        //Use FHIR-NET-API to serialize the resource to XML
                        byte[] resourceXmlBytes = Hl7.Fhir.Serialization.FhirSerializer.SerializeToXmlBytes(resourceReader.Deserialize());
管道组件能够解码以
{
“资源类型”:“想象研究”,

但是我在这样开始的消息上发现了一个解析错误

{
  "resourceType" : "Bundle",
  "entry" : [{
      "resource" : {
        "resourceType" : "ImagingStudy",

以下是我犯的几个错误

There was a failure executing the receive pipeline: "LALALA.Imaging.Pipelines.FHIRJasonDecoderRP, LALALA.Imaging.Pipelines, Version=1.0.0.0, Culture=neutral, PublicKeyToken=19bb8b5ea64396aa" Source: "FHIRJsonDecoder" Receive Port: "RP_LA_Test_FILE" URI: "D:\Projects\LALALA.Imaging\In\*.json" Reason: Data at the root level is invalid. Line 1, position 1.

对于我的解决方案,最终目标是能够将FHIR图像研究消息束解析为单个FHIR xml消息,然后映射到HL7 ORU消息


如果您能就上述问题提供任何帮助,或就如何使用BizTalk实现我的最终目标提出建议,我们将不胜感激。

通常不必直接致电ResourceReader,但我尝试如下重现您的错误:

var json = @"{
            ""resourceType"" : ""Bundle"",
            ""entry"" : [{
                  ""resource"" : {
                       ""resourceType"" : ""ImagingStudy""
                                       }}]}";

// SHORT VERSION: var b = new FhirJsonParser().Parse<Bundle>(json);
var b = new     
             Hl7.Fhir.Serialization.ResourceReader(
               FhirJsonParser.CreateFhirReader(json),  
                          ParserSettings.Default).Deserialize();

Assert.IsNotNull(b);
var json=@”{
“资源类型”:“捆绑包”,
“条目”:[{
“资源”:{
“资源类型”:“图像研究”
}}]}";
//短版本:var b=newfhirjsonparser().Parse(json);
var b=新的
Hl7.Fhir.Serialization.ResourceReader(
CreateFhirReader(json),
ParserSettings.Default)。反序列化();
Assert.IsNotNull(b);
不过,这两种方法都很好。也许在阅读流时出了问题

您也可以尝试直接从流中读取:

var b = new FhirJsonParser().Parse<Bundle>(new 
                     Newtonsoft.Json.JsonTextReader(stream));
var b=new FhirJsonParser().Parse(新
Json.JsonTextReader(stream));

通常不需要直接调用ResourceReader,不过我尝试如下重现您的错误:

var json = @"{
            ""resourceType"" : ""Bundle"",
            ""entry"" : [{
                  ""resource"" : {
                       ""resourceType"" : ""ImagingStudy""
                                       }}]}";

// SHORT VERSION: var b = new FhirJsonParser().Parse<Bundle>(json);
var b = new     
             Hl7.Fhir.Serialization.ResourceReader(
               FhirJsonParser.CreateFhirReader(json),  
                          ParserSettings.Default).Deserialize();

Assert.IsNotNull(b);
var json=@”{
“资源类型”:“捆绑包”,
“条目”:[{
“资源”:{
“资源类型”:“图像研究”
}}]}";
//短版本:var b=newfhirjsonparser().Parse(json);
var b=新的
Hl7.Fhir.Serialization.ResourceReader(
CreateFhirReader(json),
ParserSettings.Default)。反序列化();
Assert.IsNotNull(b);
不过,这两种方法都很好。也许在阅读流时出了问题

您也可以尝试直接从流中读取:

var b = new FhirJsonParser().Parse<Bundle>(new 
                     Newtonsoft.Json.JsonTextReader(stream));
var b=new FhirJsonParser().Parse(新
Json.JsonTextReader(stream));

谢谢Ewout,我能够编辑一些示例“bundle”消息,并通过管道将它们解码为XML。我仍然不确定其他消息有什么问题,但现在我有一个工作示例可供参考。谢谢Ewout,我能够编辑一些示例“bundle”我仍然不确定其他消息有什么问题,但现在我有一个工作示例可供参考。