【发布时间】:2018-03-31 18:08:40
【问题描述】:
我正在使用库 fhir-net-api dstu2 将来自 Restful Web 服务的传入 FHIR JSON 解析为 biztalk 管道组件中的 XML,然后将其传递给 XML 反汇编程序以在 BizTalk 中进行分批。大多数消息都没有问题,但我在偶尔的消息中收到以下错误。
“给定编码中的无效字符。第 1 行,位置 12700。”。
我检查了这些消息,在传入的 JSON 中看不到任何会导致此错误的差异。
查看错误消息中给出的字符位置,fhir-net-api 的 XML 输出显示以下问题。由于某种原因,图书馆缩短了位置并放入了捆绑标签。 <Bundle xmlns="http://hl7.org/fhir"><total value="9" />
对这里发生的事情或如何进行故障排除有任何想法吗?
我无法发布完整的消息,但这里是问题区域的 sn-p。
输入 JSON sn-p
"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 sn-p
<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>
编辑 - 我隔离了问题资源并取消了对消息的识别。这是导致上述错误的完整 JSON 消息。我尝试了 FHIR JSON to XML notepad++ 插件,它正确地序列化了消息。
这是管道组件的代码。
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
{
"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"}
}}
]
}
【问题讨论】:
-
我认为问题可能在于“Dr's”中的撇号是十六进制 E28099,右单引号,而不是预期的十六进制 27 撇号。
-
这引出了第二个问题,即 FHIR JSON 消息中允许的十六进制值 E28099。我应该将此问题发送回服务提供商还是自己处理不良数据?
标签: hl7-fhir