2

我有一个问题是使用 mirth 发送(创建)一条 HL7 消息。

我想从 SQLSERVER 2008 中的患者表中读取数据,并使用该数据向我的目标连接器(文件写入器)发送一条消息。我希望我的消息保存在文件编写器的输出目录中。

到目前为止,我能够生成消息,但是随着通道轮询时间的延长,我的目标目录中的输出文件的大小正在增加。

我在变压器映射中做错了吗?

更新:

我的目标目录中输出文件的大小正在增加。(我的 .txt 文件从 1 kb 开始到 900kb 等等)。发生这种情况是因为同样的数据会一次又一次地生成并且多次生成。例如。我生成的消息有一个(MSH,PID,PV1,ORM)用于我的数据库中的一行数据。多次生成相同的 MSH、PID、PV1 和 ORM。

4

4 回答 4

4

如果您多次看到在输出目录中生成相同的数据,最可能的原因是您没有向数据库表明已处理给定记录的任何操作。

例如,如果您的数据库中有 1 条记录:["John", "Smith", "12134" ...]在第一次投票时,您将生成 1 条消息。如果在第二次投票中您还有第二条记录["Fred", "Jones", "98371" ...],您将生成两条消息 - 一条给 John Smith,一条给 Fred Jones。等等。

关键是使用数据库读取器(源)连接器的“运行更新语句”来更新您正在轮询的数据库表,并指示已处理给定记录。这可确保不会多次处理同一记录。

这要求您的源表有某种列来指示记录已被处理。Mirth 不会为您记录这一点——您必须手动进行。

于 2012-03-29T20:21:32.170 回答
0

您不能将文件reader作为目标,因此我假设您的意思是 file writer。您说“我的目的地文件的大小正在增加”。那是错字吗?你的意思是不增加?

如果它在增加,那么您的消息正在生成,您可以查看它们以开始下一轮故障排除......

如果没有,您应该查看仪表板中的消息日志,以逐条查看正在发生的情况——这将是下一个进行故障排除的地方。

于 2012-03-26T20:15:33.753 回答
0

您必须通过过滤某种状态标志或可能的时间戳来区分从数据库中提取哪些记录。然后,您必须使用某种 On-Update 语句将这些相同的记录标记为已处理。

IE

从 status_flag='N' 的结果中选择 id、患者、结果

或从 status_flag = 'N' and created_date >= '9/25/2012' 的结果中选择 *

然后,在转换步骤或 Source 的 On-Update 部分中,您将执行以下操作:

更新结果集 status_flag = 'Y' 其中 id=$(id)

如果你不做这样的事情并且你让 Mirth 以一定的间隔轮询,它只会一遍又一遍地拉取相同的记录。

于 2012-09-26T18:23:22.363 回答
-1

您必须在源代码中将连接器类型更改为数据库阅读器。

您必须将连接器类型更改为目标中的文件编写器。

并且您可以将数据写入文件中,您可以对其进行写入。

在创建 HL7 模板时,您必须在出站消息模板中使用以下代码

MSH|^~\&|||

谢谢克里希纳

于 2015-03-17T14:39:44.020 回答