首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >fhir-net-api stu2的FHIR JSON to XML解析问题

fhir-net-api stu2的FHIR JSON to XML解析问题
EN

Stack Overflow用户
提问于 2017-10-20 00:11:48
回答 1查看 853关注 0票数 0

我正在使用库fhir-net-api dstu2将传入的FHIR JSON从Restful web service解析为BizTalk管道组件中的XML,然后将其传递给XML反汇编程序,以便在biztalk中进行辩论。大多数消息都没有问题,但我在偶尔出现的消息中得到了以下错误。

“给定编码中的无效字符。行% 1,位置12700。”

我已经检查了消息,在传入的JSON中看不到会导致此错误的任何差异。查看错误消息中给定的字符位置,fhir-net-api的XML输出显示以下问题。出于某种原因,库缩短了位置,并放入了一个捆绑标记。<Bundle xmlns="http://hl7.org/fhir"><total value="9" />

对于这里发生的事情或者如何进行故障排除,您有什么想法吗?

我不能发布完整的消息,但这里是问题区域的片段。

输入JSON代码段

代码语言:javascript
复制
"hospitalization": {"dischargeDiagnosis": [         {
        "reference": "#Reason",
        "display": "DWA-Discharged with Approval"
     }]},
     "location": [{"location": {"display": "SPH 4th Bunny Dr’s Clinic"}}],
     "serviceProvider": {"display": "FOO"}
  }},
  {"resource":       {
     "resourceType": "Encounter",
     "id": "FOO0009-394a-4c51",
     "extension":          [

输出XML代码段

代码语言:javascript
复制
<hospitalization>
    <dischargeDiagnosis>
        <reference value="#Reason" />
        <display value="DWA-Discharged with Approval" />
    </dischargeDiagnosis>
</hospitalization>
<location>
    <location>
        <display value="SPH 4<Bundle xmlns="http://hl7.org/fhir">
                        <total value="9" />
<entry>
    <resource>
        <Encounter>

EDIT -I隔离了问题资源并取消了消息的识别。下面是导致上述错误的完整JSON消息。我尝试了FHIR JSON to XML notepad++插件,它正确地序列化了消息。

以下是管道组件的代码。

代码语言:javascript
复制
     Hl7.Fhir.Serialization.ResourceReader resourceReader = new Hl7.Fhir.Serialization.ResourceReader(FhirJsonParser.CreateFhirReader(json), ParserSettings.Default);


  string resourceXmlString = Hl7.Fhir.Serialization.FhirSerializer.SerializeResourceToXml(resourceReader.Deserialize());

以下是导致该问题的JSON

代码语言:javascript
复制
{
   "resourceType": "Bundle",
   "total": 1,
   "entry":    [
     {"resource":       {
         "resourceType": "Encounter",
         "id": "10000000-0000-0000-000-200000000",
         "extension":          [
                        {
               "url": "https://foo.org/documents/fhir/extensions/encounter-facility",
               "valueString": "St. Foo Hospital"
            },
                        {
               "url": "https://foo.org/documents/fhir/extensions/encounter-service",
               "valueString": "Foo PROGRAM/Foo ECHOCARDIOLOGY"
            },
                        {
               "url": "https://foo.org/documents/fhir/extensions/encounter-patienttype",
               "valueString": "Diagnostic - Outpatient"
            },
                        {
               "url": "https://foo.org/documents/fhir/extensions/encounter-documentcount",
               "valueInteger": 0
            },
                        {
               "url": "https://foo.org/documents/fhir/extensions/encounter-entitysourcesystem",
               "valueString": "CDR"
            },
                        {
               "url": "https://foo.org/documents/fhir/extensions/encounter-mrnid",
               "valueString": "10000000"
            }
         ],
         "identifier":          [
                        {
               "use": "official",
               "value": "1000000-5420-0000-0000-00000"
            },
                        {
               "use": "secondary",
               "value": "100000000000"
            }
         ],
         "patient": {"reference": "Patient/000000000"},
         "participant":          [
                        {
               "type": [               {
                  "coding": [                  {
                     "system": "http://hl7.org/fhir/v3/ParticipationType",
                     "code": "PRCP"
                  }],
                  "text": "Primary Care Physician"
               }],
               "individual": {"display": "Foo, Guy"}
            },
                        {
               "type": [               {
                  "coding": [                  {
                     "system": "http://hl7.org/fhir/v3/ParticipationType",
                     "code": "ATND"
                  }],
                  "text": "Attending Physician"
               }],
               "individual": {"display": "RFoo, JFoo L"}
            }
         ],
         "period":          {
            "start": "2015-10-27T13:59:00+00:00",
            "end": "2017-02-17T09:39:07+00:00"
         },
         "reason": [         {
            "coding": [            {
               "system": "http://www.ihtsdo.org/snomed-ct",
               "code": "33962009"
            }],
            "text": "ECHOCARDIOGRAM"
         }],
         "hospitalization": {"dischargeDiagnosis": [         {
            "reference": "#Reason",
            "display": "DWA-Discharged with Approval"
         }]},
         "location": [{"location": {"display": "SPH 4th Foo Dr’s Clinic"}}],
         "serviceProvider": {"display": "Foo_foo"}
      }}

   ]
}
EN

回答 1

Stack Overflow用户

发布于 2017-10-23 18:08:34

错误消息“无效字符在给定的编码中”没有出现在FHIR .NET应用程序接口的源代码中,但是它在.NET XmlReader的上下文中出现在google上。因此,我的第一个猜测是,json可以正确解析(任何Unicode字符都可以包含在json字符串中),然后转换为XML,其中的字符不会被转义。然后,当BizTalk处理XML时,它就会遇到麻烦。

这很有趣,因为我只使用XMLXML库来序列化成.NET,所以它不应该生成非法的XML.也许-and这是在XML端--有没有一个设置来指示BizTalk中的BizTalk管道中使用的编码?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46834375

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档