2017-02-17 11 views
1

저는 FHIR과 json으로 시작 했으므로 제 질문에 대해서는 잘 대답하지 못할 수도 있습니다. 내가 여기 예에 따라이 라이브러리 https://github.com/ewoutkramer/fhir-net-api를 사용하여 FHIR-XML로 FHIR-JSON 변환하는 BizTalk 파이프 라인 구성 요소를 구축FHIR JSON과 BizTalk의 XML 디코딩

, 여기 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()); 

파이프 라인 구성 요소는 { "resourceType": "ImagingStudy",

로 시작하는 하나의 JSON FHIR 메시지를 디코딩 할 수 있지만이 같은 시작 메시지를 구문 분석 오류,

{ 
    "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 이미지 연구 메시지의 수 구문 분석 번들이 될 수 있습니다 HL7 ORU 메시지에 매핑됩니다.

위의 문제에 대한 도움이나 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