2017-02-17 12 views
1

Я только начинаю с FHIR и с json, поэтому мой вопрос может быть не совсем спрошен.FHIR JSON to XML-декодирование в BizTalk

Я построил компонент BizTalk трубопровода для преобразования FHIR-JSON в FHIR-XML с помощью этой библиотеки, https://github.com/ewoutkramer/fhir-net-api, основанный на примере я нашел здесь, http://soapfault.com/blog/2016/08/hl7-fhir-json-decoding-in-biztalk/

Вот фрагмент кода из компонента трубопровода. Это почти идентично примеру.

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

компонент трубопровода способен декодировать любой одиночный JSon FHIR сообщение, которое начинается с { "resourceType": "ImagingStudy",

, но я получаю ошибку синтаксического анализа на сообщения, которые начинаются, как это,

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

или

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

Адрес: uple ошибок я получил,

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. 

ИЛИ

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

Для моего решения конечной целью является, чтобы иметь возможность разбора пучки FHIR сообщений изучения изображения в одиночных сообщений XML fhir, которые затем будут сопоставлены с сообщениями ORL HL7.

Любая помощь по вышеуказанному вопросу или предложения о том, как достичь моей конечной цели с использованием BizTalk, будут очень признательны.

ответ

0

Это вообще не нужно называть 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 b = new FhirJsonParser().Parse<Bundle>(new 
        Newtonsoft.Json.JsonTextReader(stream)); 
+0

Благодаря Ewout, я был в состоянии изменить некоторые из моего образца «Связка» сообщения и получить трубопровод, чтобы декодировать их в XML. Я все еще не уверен, что не так с другими, но теперь у меня есть рабочий пример для ссылки. – David