Ich benutze die Bibliothek fhir-net-api dstu2, eingehende FHIR JSON von einem Restful Web-Service zu XML in einer Biztalk-Pipeline-Komponente zu analysieren und dann an die übergeben XML-Disassembler zum Debuggen in BizTalk. Die meisten Nachrichten durchlaufen kein Problem, aber ich bekomme den folgenden Fehler in der gelegentlichen Nachricht.FHIR JSON zu XML Parsing Problem mit fhir-net-api stu2
"Ungültiges Zeichen in der angegebenen Codierung. Zeile 1, Position 12700.".
Ich habe die Nachrichten überprüft und kann keinen Unterschied im eingehenden JSON feststellen, der diesen Fehler verursachen würde. Mit Blick auf die in der Fehlermeldung angegebene Zeichenposition zeigt die XML-Ausgabe von der fhir-net-api das Problem unten an. Aus irgendeinem Grund schneidet die Bibliothek den Standort kurz ab und fügt ein Bündel-Tag ein. <Bundle xmlns="http://hl7.org/fhir"><total value="9" />
Haben Sie sich Gedanken darüber gemacht, was hier vor sich geht oder wie Sie vorgehen müssen?
Ich kann nicht die vollständigen Nachrichten posten, aber hier sind Schnipsel des Problembereichs.
Eingang JSON Snippet
"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-Output-Schnipsel
<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 - ich isoliert das Problem Ressource und die Nachricht deidentifiziert. Hier ist die vollständige JSON-Nachricht, die den obigen Fehler verursacht. Ich versuchte das FHIR JSON zu XML Notepad ++ Plugin und es serialisiert die Nachricht korrekt.
Hier ist der Code aus der Pipeline-Komponente.
Hl7.Fhir.Serialization.ResourceReader resourceReader = new Hl7.Fhir.Serialization.ResourceReader(FhirJsonParser.CreateFhirReader(json), ParserSettings.Default);
string resourceXmlString = Hl7.Fhir.Serialization.FhirSerializer.SerializeResourceToXml(resourceReader.Deserialize());
Hier ist die JSON, dass das Problem
{
"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"}
}}
]
}
Ich denke, das Problem könnte sein, dass der Apostroph in "Drs" ist Hex E28099, Recht Anführungszeichen, anstelle der erwarteten hex 27 Apostroph. – David
Dies führt zu einer zweiten Frage von, ist der Hex-Wert E28099 erlaubt in der FHIR-JSON-Nachricht. Soll ich dieses Problem an den Dienstanbieter zurücksenden oder die fehlerhaften Daten selbst behandeln? – David