2

mirth を使用して HL7 メッセージを送信 (作成) する際に問題が発生しています。

SQLSERVER 2008 の患者テーブルからデータを読み取り、そのデータを使用して、宛先コネクタであるファイル ライターにメッセージを送信したいと考えています。メッセージをファイル ライターの出力ディレクトリに保存したい。

これまでのところ、メッセージを生成することはできますが、チャネルのポーリング時間が進むにつれて、宛先ディレクトリ内の出力ファイルのサイズが増加しています。

トランスフォーマーのマッピングで何か間違ったことをしましたか?

アップデート:

宛先ディレクトリの出力ファイルのサイズが増加しています。(私の .txt ファイルは 1 kb から始まり、900kb まで続きます)。これは、同じデータが何度も何度も生成されているために発生しています。たとえば。生成されたメッセージには、データベース内の 1 行のデータに対して 1 つ (MSH、PID、PV1、ORM) があります。同じ MSH、PID、PV1、および ORM が複数回生成されています。

4

4 に答える 4

4

出力ディレクトリで同じデータが複数回生成されている場合、最も可能性の高い原因は、特定のレコードが処理されたことをデータベースに示すために何もしていないことです。

たとえば、データベースに1つのレコードがある場合["John", "Smith", "12134" ...]、最初のポーリングで1つのメッセージが生成されます。2番目のポーリングで2番目のレコードもある場合は、2["Fred", "Jones", "98371" ...]つのメッセージを生成します。1つはJohn Smith用、もう1つはFredJones用です。等々。

重要なのは、データベースリーダー(ソース)コネクタの「RunOn-Update Statement」を使用して、特定のレコードが処理されたことを示すようにポーリングしているデータベーステーブルを更新することです。これにより、同じレコードが複数回処理されないことが保証されます。

これには、レコードが処理されたことを示すために、ソーステーブルに何らかの列が必要です。Mirthはこれを追跡しません-手動で行う必要があります。

于 2012-03-29T20:21:32.170 に答える
0

ある種のステータスフラグまたはタイムスタンプでフィルタリングすることにより、データベースから取得するレコードを区別する方法が必要です。次に、何らかの On-Update ステートメントを使用して、これらの同じレコードを処理済みとしてマークする必要があります。

すなわち

status_flag='N' の結果から ID、患者、結果を選択

または、status_flag = 'N' および created_date >= '9/25/2012' の結果から * を選択します

次に、Transformer ステップまたはソースの On-Update セクションで、次のようにします。

更新結果セット status_flag = 'Y' where id=$(id)

このようなことをせず、一定の間隔で Mirth をポーリングすると、同じレコードが何度もプルされ続けます。

于 2012-09-26T18:23:22.363 に答える
0

reader宛先としてファイルを指定することはできないため、 fileを意味していると思いますwriter。「転送先のファイルのサイズが大きくなっている」とあなたは言います。それはタイプミスですか?増えないということですか?

増加している場合は、メッセージが生成されており、それらを表示して次のトラブルシューティングを開始できます...

そうでない場合は、ダッシュボードのメッセージ ログを調べて、メッセージごとに何が起こっているかを確認する必要があります。これは、次にトラブルシューティングを行う場所です。

于 2012-03-26T20:15:33.753 に答える