Ensemble not recognising the end of message

188 views
Skip to first unread message

sue

unread,
Nov 5, 2009, 4:30:33 AM11/5/09
to InterSystems: Ensemble in Healthcare
Hello,

We are sending an HL7 message to a remote site through our firewall
via a secure tunnel.

They receive the message and sent the HL7 ack back. The Business
operation does not recognise the end of the ack message, the event log
saya the following

ERROR <Ens>ErrTCPTerminatedReadTimeoutExpired: TCP Read timeout (30)
expired waiting for terminator SegTerminatorAscii=13, on |TCP|6661|
1732, data received =''

The system supplier say the format of the message back is the
following

<Hex 0b>
<MSH segment><Hex 0d>
<MSA segment><Hex 0d>
<Hex 1c>
<Hex 0d>

Does any one have any idea how we can fix this.

Thanks

Dale du Preez

unread,
Nov 5, 2009, 5:10:50 AM11/5/09
to ensemble-in...@googlegroups.com
Morning, Sue.

I would start by making sure that they you are actually receiving the
framing blocks as you would expect. Most often in cases where this kind
of error arises, either a character is not being sent, or an extra
character is being sent, which means the sending system is not sending
messages back using MLLP framing. In most cases, we can adjust on our
side to whatever they are (actually) sending back, but we'll need to get
a fairly low level trace of the TCP communication to allow for that sort
of investigation.

I think it may be worth engaging the WRC on this issue, but it should
make things move much faster if you can get a low level trace. If you
can use a trace utility like Wireshark (previously Ethereal), iptrace
(on AIX) or tcpdump (most Linux/Unix platforms) on your system to
monitor the message transfer, it should make identifying the underlying
problem much simpler.

I hope that helps,
Dale

eric

unread,
Nov 5, 2009, 9:36:30 AM11/5/09
to InterSystems: Ensemble in Healthcare
Hi, I have had this problem to read the ACK of TCP communication. The
target is a server with OS windows 2003.
To solve the problem i use Framing=Flexible as :

<Item Name="IMS.BOFileCORA" Category="IMS patient HL7"
ClassName="EnsLib.HL7.Operation.TCPOperation" PoolSize="1"
Enabled="true" Foreground="false" DisableErrorTraps="false"
InactivityTimeout="0" Comment="Envoi IMS HL7 TCP vers CORA"
LogTraceEvents="false" Schedule="">
<Setting Target="Host" Name="ReplyCodeActions"></Setting>
<Setting Target="Host" Name="NoFailWhileDisconnected">0</Setting>
<Setting Target="Host" Name="Separators"><![CDATA[|^~\&]]></
Setting>
<Setting Target="Host" Name="SearchTableClass"></Setting>
<Setting Target="Host" Name="DefCharEncoding">Latin1</Setting>
<Setting Target="Host" Name="AlertRetryGracePeriod">0</Setting>
<Setting Target="Host" Name="RetryInterval">5</Setting>
<Setting Target="Host" Name="FailureTimeout">-1</Setting>
<Setting Target="Host" Name="AlertOnError">0</Setting>
<Setting Target="Host" Name="ArchiveIO">0</Setting>
<Setting Target="Host" Name="Framing">Flexible</Setting>
<Setting Target="Adapter" Name="IPAddress">groove.fhsj.fr</
Setting>
<Setting Target="Adapter" Name="Port">15230</Setting>
<Setting Target="Adapter" Name="ResponseTimeout">10</Setting>
<Setting Target="Adapter" Name="StayConnected">18</Setting>
<Setting Target="Adapter" Name="ConnectTimeout">5</Setting>
<Setting Target="Adapter" Name="ReconnectRetry">5</Setting>
<Setting Target="Adapter" Name="GetReply">1</Setting>
<Setting Target="Adapter" Name="ReadTimeout">5</Setting>
<Setting Target="Adapter" Name="SSLConfig"></Setting>
</Item>

Regards,

Eric Sebelin
> > Thanks- Masquer le texte des messages précédents -
>
> - Afficher le texte des messages précédents -

sue

unread,
Nov 6, 2009, 5:40:32 AM11/6/09
to InterSystems: Ensemble in Healthcare
We are still not having much luck with this.

The problem seems to be that HL7 ACK is not being recognised by the
Business Operation.

The log entries we get are as follows:

ERROR <Ens>ErrTCPTerminatedReadTimeoutExpired: TCP Read timeout (30)
expired waiting for terminator SegTerminatorAscii=13, on |TCP|6661|
496, data received =''

followed by

TCP Read timeout (30) expired waiting for terminator
SegTerminatorAscii=13, on |TCP|6661|496, data received ='' (alert
request ID=1)

The trace on our network shows we receive:

0b 4d 53 48 7c 5e 7e 5c 26 7c 43 65 6c 6c 6d 61 .MSH|^~\ &|Cellma

7c 43 65 6c 6c 6d 61 7c 43 61 4d 49 53 7c 49 50 |Cellma| CaMIS|IP

53 7c 32 30 30 39 31 31 30 35 31 35 35 38 33 36 S|200911 05155836

7c 7c 41 43 4b 7c 32 30 30 39 31 31 30 35 31 35 ||ACK|20 09110515

35 38 33 36 7c 44 7c 32 2e 34 0d 4d 53 41 7c 41 5836|D|2 .4.MSA|A

41 7c 34 30 34 34 33 39 0d 1c 0d A|404439 ...

So it looks to us that the message is okay. Our configuration for the
Busines Operation is as follows:

<Item Name="CaMISToCellmaTest" Category=""
ClassName="EnsLib.HL7.Operation.TCPOperation" PoolSize="1"
Enabled="true" Foreground="false" InactivityTimeout="0" Comment=""
LogTraceEvents="false" Schedule="">
<Setting Target="Host" Name="ReplyCodeActions"></Setting>
<Setting Target="Host" Name="NoFailWhileDisconnected">0</Setting>
<Setting Target="Host" Name="Separators"><![CDATA[|^~\&]]></
Setting>
<Setting Target="Host" Name="SearchTableClass"></Setting>
<Setting Target="Host" Name="DefCharEncoding">Latin1</Setting>
<Setting Target="Host" Name="RetryInterval">5</Setting>
<Setting Target="Host" Name="AlertRetryGracePeriod">0</Setting>
<Setting Target="Host" Name="FailureTimeout">-1</Setting>
<Setting Target="Host" Name="AlertOnError">1</Setting>
<Setting Target="Host" Name="ArchiveIO">0</Setting>
<Setting Target="Host" Name="Framing">MLLP</Setting>
<Setting Target="Adapter" Name="IPAddress">10.190.230.2</Setting>
<Setting Target="Adapter" Name="Port">6661</Setting>
<Setting Target="Adapter" Name="ResponseTimeout">60</Setting>
<Setting Target="Adapter" Name="StayConnected">-1</Setting>
<Setting Target="Adapter" Name="ConnectTimeout">30</Setting>
<Setting Target="Adapter" Name="ReconnectRetry">5</Setting>
<Setting Target="Adapter" Name="GetReply">1</Setting>
<Setting Target="Adapter" Name="ReadTimeout">5</Setting>
<Setting Target="Adapter" Name="SSLConfig"></Setting>
</Item>

We have connected to an application internally to our Trust
successfully, this one is slightly different in that in connects to an
external client via a secure tunnel.
> > - Afficher le texte des messages précédents -- Hide quoted text -
>
> - Show quoted text -

sue

unread,
Nov 6, 2009, 11:59:17 AM11/6/09
to InterSystems: Ensemble in Healthcare
We are still having problems with this.

We swapped the external system ip for our old integration engine and
the ack is accepted by the ensemble bo - there appears to be no
difference between the two acks so the problem seems to be when the
message is passed from the tunnel to ensemble.Wireshark running on the
ensemble server shows the ack being received at the communication
level.

Does anyone have any idea why ensemble things there is no ack.

Thanks
Reply all
Reply to author
Forward
0 new messages