XML を入力メッセージとして HL7 メッセージを生成する必要があります。私はここでいくつかの異なるシナリオに直面しています。
問題: 入力 XML メッセージの一部のフィールドで「Enter」(\r\n) 文字を受け取った場合。最終的な HL7 ファイルは、そのフィールドが HL7 メッセージで使用されるポイントで中断されます。これにより HL7 メッセージが無効になり、このため宛先システムはそのメッセージを拒否します。
私は次のアプローチを試しました:
1. マップ • orch で受信した XML メッセージは、同じスキーマを使用して別の XML メッセージに変換されます。マップでさまざまな方法をたどってみました。o スクリプト Functoid は、入力フィールドが \r\n 値で構成されている場合に空の値を割り当てるために使用されます。または o XSLT を使用して、入力フィールドの値をチェックすることにより、入力 XML メッセージを出力に変換します。または o 単純な 1 対 1 マッピングを使用して、入力 XML メッセージを出力 XML メッセージに変換します。
出力 • 上記の 3 つのアプローチでは、出力 XML メッセージは NULL のみです。
2. クラス ライブラリ • orch で受信した XML メッセージは、C# 関数への入力として渡されます。• 次のコードを見つけてください。
出力 o その関数からの出力 XML には、改行がありません (\r\n)。しかし、最終的な HL7 メッセージはそのフィールドでのみ中断されます。
public static XmlDocument RemoveNewLineCharacters(XLANGMessage msg) { XmlDocument xmlDoc =(XmlDocument)msg[0].RetrieveAs(typeof(XmlDocument));
XmlDocument XmlIndentedMessage = new XmlDocument();
string IndentedMessage = string.Empty;
StringBuilder StrBldr = new StringBuilder();
XmlWriterSettings settings = new XmlWriterSettings();
settings.Encoding = Encoding.UTF8;
settings.Indent = true;
xmlDoc.PreserveWhitespace = false;
XmlWriter writer;
writer = XmlWriter.Create(StrBldr, settings);
xmlDoc.Save(writer);
IndentedMessage = StrBldr.ToString();
XmlIndentedMessage.LoadXml(IndentedMessage);
writer.Close();
return XmlIndentedMessage;
}
この問題を解決するための助けは本当に感謝しています。
ありがとう