FHIR JSON to XML decoding in BizTalk

戏子无情 提交于 2019-12-13 17:51:32

问题


I am just starting out with FHIR and with json so my question may not be well asked.

I have built a BizTalk pipeline component to convert FHIR-json to FHIR-xml using this library, https://github.com/ewoutkramer/fhir-net-api , based on an example i found here, http://soapfault.com/blog/2016/08/hl7-fhir-json-decoding-in-biztalk/

Here is a code snippet from the pipeline component. It's almost identical to the example.

//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());

The pipeline component is able to decode any single json FHIR message that starts with { "resourceType": "ImagingStudy",

but I get a parsing error on the messages that start like this,

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

or

{
  "entry": [
    {
      "fullUrl":     "http://fhirtest.uhn.ca/baseDstu2/ImagingStudy/EXexample",
      "resource": {
        "resourceType": "ImagingStudy",

Here are a couple of the errors I have got,

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.

OR

Reason: At line 1, pos 1: Cannot determine type of resource to create from json input data: no member resourceType was found

For my solution the ultimate goal is to to be able parse bundles of FHIR image study messages into single fhir xml messages that will then be mapped to HL7 ORU messages.

Any help with the issue above or suggestions on how to achieve my end goal using BizTalk would be greatly appreciated.


回答1:


It's generally not necessary to call the ResourceReader directly, nevertheless I tried to reproduce your error like this:

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);

Both work fine, however. Maybe something goes wrong while reading the stream?

You could also try reading directly from the stream:

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


来源:https://stackoverflow.com/questions/42287503/fhir-json-to-xml-decoding-in-biztalk

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!