Forum Replies Created
-
AuthorReplies
-
Luke, We have a cron job within the Linux server that performs a PRESTART process but does not seem to be working the way that the other jobs we have to shut off the feed to FTP a file out. What is the name of the program that you are using to auto bounce and is it linux friendly. Thanks
Chris
The file would be a date/time stamp for each result generated thru the Interface Engine then the file would be picked up thru a script and dropped onto the receiving system. So 3 ORU messages would be labeled rad12032012100100.dta, rad12032012100101.dta, rad12032012100102.dta. The receiving site does not want the HL7 messages appended to one file.
Jim,
Would I have to iterate for the NTE outbound if copying the field from OBX to NTE but have to Iterate for another field in the NTE since it seems to be looking for it when displayed in the Xlate process when creating.
1(%g1).1(%g2).1(%g3).NTE(
0).#3(%f1).[0]Would the %f1 be for the NTE( ) then %f2 be for the field #3 field. The other thing we are looking to do is delete the OBX record since the third party vendor does not like having OBX tx record and NTE record in the file.
Chris
Most of the logic was correct especially with ITERATE but the outbound fields that I was replacing were not correct. I used the same logic format that was built in 5.7 version was different that what I figured out in the 5.8.4 version. This is what i had to change the logic to for it to work. (1(%g1).1(%g2).1(%g3).OBX(0).#3(0).[3] ).
I had to have the (0) after the OBX and #3 information but the earlier format did not need the (0).
Thanks for your responses – it made me look at the logic a bit more to understand the reason why.
Thanks
Chris Wethey
Jim,
It is a tcl that is part of the install on our server from either mckesson or quovadx.
Here is the coding of that tcl.
######################################################################
# Name: tblqualify
# Purpose: Qualify on a field
# UPoC type: tps
# Args: tps keyedlist containing the following keys:
# MODE run mode (“start”, “run” or “time”)
# MSGID message handle
# ARGS user-supplied arguments:
# TBLNAME Table Lookup name
# ERRCOND Literal that is set as DEFAULT in the table lookup
# SEGNAME Segment to check
# FIELDNUM Field number to check within the segment
# SUBFIELDNUM Subfield to check within the field
#
# Args (Example ENTRY): To qualify on the patient location field (PV1 3):
# the arguments would be:
# {TBLNAME
} {ERRCOND
} {SEGNAME PV1} {FIELDNUM 3} {SUBFIELDNUM 0}
#
# Returns: tps disposition list:
# $CONTINUE
#
proc tblqualify_kill_default { args } {
keylget args MODE mode ;# Fetch mode
set dispList {} ;# Nothing to return
switch -exact — $mode {
start {
# Perform special init functions
# N.B.: there may or may not be a MSGID key in args
}
run {
# ‘run’ mode always has a MSGID; fetch and process it
keylget args MSGID mh
set msg [msgget $mh] ;# Get message
#
# Get arguments
#
set tblname {}
keylget args ARGS.TBLNAME tblname ;# Fetch the table name
set errcond {}
keylget args ARGS.ERRCOND errcond ;# Fetch the error literal
set segname {}
keylget args ARGS.SEGNAME segname ;# Fetch the segment
set fieldnum {}
keylget args ARGS.FIELDNUM fieldnum ;# Fetch the fieldnum
set subfielnum {}
keylget args ARGS.SUBFIELDNUM subfieldnum ;# Fetch the subfieldnum
#
# Split the message and get fields to check
# First set up some constants
#
set sep [csubstr $msg 3 1] ;# HL7 field separator
set sub [csubstr $msg 4 1] ;# HL7 subfield separator
set segments [split $msg r] ;# Get segments
#
# LOOP through and make changes
#
foreach seg $segments {
if [cequal $seg “”] { continue } ;# Just in case
set segtype [csubstr $seg 0 3] ;# segment type
if [cequal $segtype $segname] { ;# MSH?
set fields [split $seg $sep] ;# Fields
set checkfield [lindex $fields $fieldnum] ;# field to check
set subfields [split $checkfield $sub] ;# subfields
set checkvalue [lindex $subfields $subfieldnum]
#
# do table lookup
#
echo “Table=$tblname Value to check=$checkvaluen”
set tblvalue [tbllookup $tblname $checkvalue]
echo “Table value=$tblvaluen”
#
# if the default value is returned, KILL the message”
#
if [cequal $tblvalue $errcond] {
lappend dispList “KILL $mh”
} else {
lappend dispList “CONTINUE $mh”
}
echo “dispList=$dispList”
}
}
}
time {
# Timer-based processing
# N.B.: there may or may not be a MSGID key in args
}
shutdown {
# Doing some clean-up work
}
default {
error “Unknown mode ‘$mode’ in tblqualify”
}
}
return $dispList
}
*******
I need to read the Repetitive information in one of the OBR fields since it could have multiple physician numbers in there and if one of them match’s then i would send the record onto the receiving interface.
The tilde is the repetitive separator – so when i am performing a lookup using the tblqualify_kill_default within qdx5.5 GUI screen and using this command within the edit of the command for the table view
“”SEGNAME OBR} {FIELDNUM 28} {SUBFIELDNUM 1}”” – would the subfieldnum be the repetitive within that segname so “0” is the first and “1” is the second and so on down the line.
Jim and Thomas,
Thanks for the subfield coding – that worked the second time around. I did not clear out all of the subfields prior to moving my results to the field and had “&” after the description.
The next round is on me.
Chris
Jim,
We are on 5.5 and not even thinking of upgrading to 5.6 at this time. I will have to wait for the Tcl book that i ordered to read up on the process to perform that feature at this time.
Thanks
Chris Wethey
Jim,
What i forgot to change was the iterate type it was originally list instead of Group. I had created but forgot to change to the group when defining the %g1 and so on. 😳
Once i changed all the type’s to Group then it was going thru all the OBX records and changing the fields that i was looking for.
Thats what happens when your a newbie learning the ropes.
Thanks for pointing out the grouping in your message. That was why it was only reading the first OBX record and passing the rest over without looking.
Attached is a screen shot of the process. single tblqualify Within TPS Properties – there is already a PROC called Tblqualify_kill_default that we are testing for a physician number in a specific location of the OBR. But we are looking for that same physician number in another location within the same segment. When I place 2 seperate Proc line in raw or xlate pre proc arguement it seems to nullify itself when it looks from one to the other which does not send the HL7 record onto the third party vendor. We perform this in dozen of checks in our system but it has always been on one field to check not multiple fields.
Argument = {TBLNAME polaris_phy} {ERRCOND ERR} {SEGNAME OBR} {FIELDNUM 16} {SUBFIELDNUM 0}
Arguement 2 = {TBLNAME polaris_phy} {ERRCOND ERR} {SEGNAME OBR} {FIELDNUM 28} {SUBFIELDNUM 0}
Is there a way to do an OR within one tblqualify_kill_default like there is in the translation process.
Was able to figure out the process with a lot of help from Jim, Still working the bugs out with the smat and testing tools.
Thanks for your comments and help
What we are looking for is to check the OBX record and search the field to determine is a specific ST Value Type has a comment of “Lab Comment” or “Order Comment” and then change the ST Value Type to TX – so i am not sure how to do that since i am new at writing in XLT process as of yet.
-
AuthorReplies