bhtalk 파이프 라인 구성 요소의 Restful 웹 서비스에서 XML로 들어오는 FHIR JSON을 구문 분석 한 다음이를 라이브러리로 전달합니다. BizTalk에서 debatching을위한 XML 디스어셈블러. 대부분의 메시지는 문제없이 진행되지만 가끔 메시지에 다음 오류가 표시됩니다.FHIR JSON과 fhir-net-api stu2의 XML 구문 분석 문제
"지정된 인코딩의 문자가 잘못되었습니다 (줄 1, 위치 12700)."
메시지를 검사했는데이 오류의 원인이되는 수신 JSON의 차이를 확인할 수 없습니다. 오류 메시지에 표시된 문자 위치를 보면 fhir-net-api의 XML 출력에 다음과 같은 문제가 표시됩니다. 어떤 이유로 라이브러리는 위치를 짧게 잘라서 번들 태그에 넣습니다. <Bundle xmlns="http://hl7.org/fhir"><total value="9" />
여기에서 무슨 일이 벌어지고 있는지 또는 문제 해결 방법을 생각해보십시오.
전체 메시지를 게시 할 수는 없지만 여기에는 문제 영역의 조각이 있습니다.
입력 JSON은
"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 조각을
<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 메시지는 다음과 같습니다. XML 메모장 ++ 플러그인에 FHIR JSON을 시도하고 올바르게 메시지를 직렬화합니다.
다음은 파이프 라인 구성 요소의 코드입니다. 여기
Hl7.Fhir.Serialization.ResourceReader resourceReader = new Hl7.Fhir.Serialization.ResourceReader(FhirJsonParser.CreateFhirReader(json), ParserSettings.Default);
string resourceXmlString = Hl7.Fhir.Serialization.FhirSerializer.SerializeResourceToXml(resourceReader.Deserialize());
는 그러나에 표면 않습니다는 FHIR .NET API의 소스 코드에 표시되지 않는 문제를
{
"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"의 아포스트로피가 예상되는 16 진수 17 아포스트로피 대신 16 진수 E28099, 오른쪽 작은 따옴표 일 수 있습니다. – David
이것은 두 번째 질문으로 이어집니다. FHIR JSON 메시지에서 16 진수 값 E28099가 허용됩니다. 이 문제를 서비스 제공 업체에 보내거나 불량 데이터를 직접 처리해야합니까? – David