› Clovertech Forums › Read Only Archives › Cloverleaf › Cloverleaf › Unsupported Transaction IDs
Steve
01/16/2008 08:28:56
[xlt :rout:ERR /0:CareManager_xlate] No routes defined for TrxId ‘ADT_A34’
Engine idle — 01/16/2008 08:29:07
ADT_A(01|02|03|04|05|06|07|08|11|13|17|35|36)
Not sure how it would interpret the comma?
I’m not sure what you’re problem may be. I’ve used wildcard routing in a similar fashion without any issues.
Sorry I couldn’t help.
Steve
i might be mixing up terminologies, but i got the “xlt :rout:ERR /0:CareManager_xlate] No routes defined for TrxId ‘ADT_A34’ ” from “Log file for process CareManager”. is that what you are referring to as the process log?
If some messages are going, some are not, then I might look more closely at the translations? What are you doing in the xlates? I see the 17s and 34s are raw… is there a TCL proc there?
Can you show us the metadata for one of these messages in the error database?
Are these going to a real destination or are they routed back into the engine?
You state a regexp like:
ADT_A(01|02|03|04|05|06|07|08|11|13|17|35|36)
which I would code like:
ADT_(A((0[1-9])|(1[137])|(3[56])))
In tcl or hcitcl I would then do something like:
set regexp {ADT_(A((0[1-9])|(1[137])|(3[56])))}
for {set i 1} {$i < 40} {incr i} { set ADT ADT_A[format %02d $i] if {![regexp — $regexp $ADT]} {echo $ADT FAILED} } All of the ones I want should pass and all of the others should fail
Pull your transaction out into a tcl prompt and test them.
I think the results you get will surprise you a lot.
I’m pretty sure those are not the results you were expecting.
But even at that I’m not sure why the ADT_A34 would have failed one of the above expersions should have covered it.
So first get them tested and working as desired the come back to the Invalid transaction.
also note, i have other threads that have long routes like this, and so far, have had no problems with them.
hcitcl>set regexp {ADT_A[10,12]}
ADT_A[10,12]
hcitcl>for {set i 1} {$i < 40} {incr i} {
set ADT ADT_A[format %02d $i]
if {![regexp -- $regexp $ADT]} {echo $ADT FAILED}
}
ADT_A30 FAILED
ADT_A31 FAILED
ADT_A32 FAILED
ADT_A33 FAILED
ADT_A34 FAILED
ADT_A35 FAILED
ADT_A36 FAILED
ADT_A37 FAILED
ADT_A38 FAILED
ADT_A39 FAILED
hcitcl>
It may not be the only problem, but it’s definitely a problem.
why do you assume that the software reads the expression the exact same way as tcl?
why does tcl only fail on 30-39?
also note, i am somewhat new to cloverleaf, so i realize that i have alot to learn. we are also running v5.3 on AIX5.2
this is making my brain hurt.
on the upside, we might get the record for thread lenght in this forum…
Curious to see if the message is data or ack message.
hcidbdump -e -m
To get the message ID you can list what is in the error database by typing hcidbdump -e
This output will give us more info to go on..
I do not believe you were taught to configure a Wildcard route as you ststed above, at least not at a Quovadx class. Perhaps you mis-remembered what was taught?
We *ALWAYS* teach that Wildacrd uses the smae regular expression engine as Tcl. What you have defined is not a valid regular expression
Get Brent’s latest Tcl book and read the chapter on regular expressions.
tcl>set regexp {ADT_A(10|12)}
tcl>for {set i 1} {$i < 40} {incr i} {
[code]
tcl>set regexp {ADT_A(10|12)}
tcl>for {set i 1} {$i < 40} {incr i} {
$ hcidbdump -e -m 0.0.2444961 -L -c
msg: 0x3000003c
msgType : DATA
msgClass : ENGINE
msgState : Unsupported Trxid (101)
msgPriority : 5120
msgRecoveryDbState: 3
msgFlags : 0x8002
msgMid : [0.0.2444961]
msgSrcMid : midNULL
msgSrcMidGroup : midNULL
msgOrigSrcThread : Ser_ndADT_Rcv3
msgOrigDestThread :
msgSrcThread : Ser_ndADT_Rcv3
msgDestThread :
msgXlateThread :
msgSkipXlate : 0
msgSepChars :
msgNumRetries : 0
msgGroupId : 0
msgDriverControl :
msgRecordFormat :
msgRoutes :
msgUserData :
msgStaticIsDirty : 0
msgVariableIsDirty: 0
msgTimeStartIb : 1200505170.918
msgTimeStartOb : 1200505145.686
msgTimeCurQueStart: 0.000
msgTimeTotalQue : 0.001
msgTimeRecovery : 1200505170.925
msgEoConfig : 0x0
msgData (BO) : 0x30000120
message : ‘MSH|***i’ took out the patient data on purpose***x0d’
xlate error
…so does that mean there is a problem with the translation then, not the trx_id? if so, how do i figure it out from here?
My Level 1 training was through McKesson, not Quovadx. Actually, i am coming to texas next week for Level 2 from Quovadx.
Further note, i now have a few messages from a different process that are in State 101 where the route is set up as static…further making it seem to be a translation issue.
i think i am more lost now than before.
Is this the actual data in the message(‘MSH|***i’ took out the patient data on purpose***x0d’), because this would bomb for an invalid TRXID, as there isn’t an event type (i.e. ADT^A01, etc) in MSH:9. If this is not the actual data message( assuming you had edited it for posting), then the ‘xlate error’ message would indicate that there is something happening in the Xlate. I would dump the message to a file, and run it through the testing tool using the appropriate Xlate; you should see the error occur in the tester.
Jim Cobane
Henry Ford Health
1) if i save the messages from the error database and run that file through the testing tool, they do not fail.
2) if i resend an errored message from our HIS system, it has gone through on a second try.
3) the one errored message was from a thread that was being sent raw with no xlate, so i dont think it is an issue with an xlate
i changed over my routes to a style like ADT_A(01|02). we shall see if any more error out…
http://www.night-ray.com/regex.pdfhttp://www.night-ray.com/regex.pdf
You need to post only the MSH segment which does not have any patient identifiable data in it. Specifically, what is in MSH-9 on the inbound message? You should see something like |ADT^A08|.
Nobody has asked, but what do you have set up for “Trx id determination Format” on the Inbound tab of your inbound thread? It is the value that is returned from here that the regular expression in the Route Detail must match. When it doesn’t match any of the routes, you get “Unsupported Trxid”. This is also where the ADT^AXX gets converted to ADT_AXX. Whether you have an xlate really has nothing to do with it.
ADT_A[10,12] will match ADT_A1 ADT_A0 ADT_A, ADT_A1 (again) or ADT_A2. It does’t matter what comes after these (so all the ADT_A10 – A19 and A20 – A29 work).
If you just want ADT_A10 or ADT_A12, try something like ADT_A1[02]
- Mark Thompson
HealthPartners
Note that so far, after switching the routes to ADT_A(01|02) style, nothing has errored out as of yet…
Open the Xlate and go to file -> reconfigure and see if the format you picked for inbound or outbout is ok.
I know it sounds simple but sometimes that might work. Good Luck
Open the Xlate and go to file -> reconfigure and see if the format you picked for inbound or outbout is ok.
I know it sounds simple but sometimes that might work. Good Luck