FHIR JSON для XML-декодирования в BizTalk
Я только начинаю с FHIR и с json, поэтому мой вопрос может быть задан не очень хорошо.
Я создал компонент конвейера BizTalk для преобразования FHIR-json в FHIR-xml с помощью этой библиотеки https://github.com/ewoutkramer/fhir-net-api, основываясь на примере, который я нашел здесь, http: // soapfault. ком / блог / 2016/08 / HL7-fhir-JSON-декодирования-в-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",
Вот пара ошибок, которые я получил,
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 для изучения изображений в отдельные сообщения fhir xml, которые затем будут отображаться в сообщениях ORU HL7.
Будем весьма благодарны за любую помощь по вышеуказанному вопросу или предложения по достижению моей конечной цели с помощью BizTalk.
1 ответ
Как правило, нет необходимости вызывать 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));