我遇到问题是使用欢乐发送(创建)HL7消息。
我想在SQLSERVER 2008中从患者表中读取数据,并使用该数据, 我想将消息发送到我的目标连接器,文件编写器。我希望我的消息保存在文件编写器的输出目录中。
到目前为止,我能够生成消息,但目标目录中输出文件的大小随着频道的轮询时间的推移而增加。
我在变压器映射中做错了吗?
更新:
目标目录中输出文件的大小正在增加。 (我的.txt文件从1 kb开始,到900kb,依此类推)。这种情况正在发生,因为相同的数据也会一次又一次地生成。例如。我生成的消息在我的数据库中有一行数据(MSH,PID,PV1,ORM)。多次生成相同的MSH,PID,PV1和ORM。
答案 0 :(得分:3)
如果您多次看到输出目录中生成的相同数据,最可能的原因是您没有做任何事情来向您的数据库指示已经处理了给定记录。
例如,如果数据库中有1条记录:第一次轮询时为["John", "Smith", "12134" ...]
,则会生成1条消息。如果在第二轮投票中您还有第二条记录["Fred", "Jones", "98371" ...]
,您将生成两条消息 - 一条用于John Smith,另一条用于Fred Jones。等等。
关键是使用数据库读取器(源)连接器的“运行时更新语句”来更新正在轮询的数据库表,并指示已处理给定记录。这可确保不会多次处理相同的记录。
这要求您的源表具有某种列以指示记录已被处理。欢乐不会为你追踪这个 - 你必须手动完成。
答案 1 :(得分:0)
您不能将文件reader
作为目的地,因此我假设您指的是文件writer
。你说“我目的地文件的大小正在增加。”那是一个错字吗?你的意思是不增加?
如果它正在增加,那么您的消息就会生成,您可以查看它们以开始下一轮故障排除......
如果没有,您应该查看仪表板中的消息日志,以查看逐个消息发生的情况 - 这将是下一个进行故障排除的地方。
答案 2 :(得分:0)
您必须通过过滤某种状态标志或可能的时间戳来区分要从数据库中提取的记录。然后,您必须使用某种On-Update语句将这些相同的记录标记为已处理。
即
从status_flag ='N'
的结果中选择id,患者和结果或 从结果中选择* status_flag ='N'和created_date> ='9/25/2012'
然后,在Source的变换器步骤或On-Update部分,您可以执行以下操作:
更新结果 set status_flag ='Y',其中id = $(id)
如果你不做这样的事情并且你在某个时间间隔进行了Mirth轮询,那么它将一遍又一遍地拉动相同的记录。
答案 3 :(得分:-1)
您必须在源代码中将连接器类型更改为数据库阅读器。
您必须将连接器类型更改为目标中的文件编写器。
您可以将文件写入文件中,您有权阅读。
在创建HL7模板时,您必须在出站消息模板中使用以下代码
<强> MSH | ^〜\&安培; ||| 强>
由于 克里希纳