Nano Hash - криптовалюты, майнинг, программирование

Декодирование FHIR JSON в XML в BizTalk

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

Я создал компонент конвейера 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",

or

{
  "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.

OR

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));
17.02.2017
  • Благодаря Ewout я смог отредактировать некоторые из моих примеров сообщений пакета и получить конвейер для их декодирования в XML. Я все еще не уверен, что не так с другими, но теперь у меня есть рабочий пример, на который можно сослаться. 17.02.2017
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..