Forum Replies Created
-
AuthorReplies
-
Van,
There may be more elegant ways to go about this, but in the past what we have done in this situation is to put a tcl script on the “TPS inbound data ” side of the thread coming from the sending system (SEND_SYS_IN). The script will look for A38 messages and write the whole message to a file (one message per file).
Then I have a cron entry that starts a unix (AIX system) shell script every hour that looks at the directory where the files are written and finds every file that is more than 24 hours old and using the command line version of the cloverleaf commands, replays the messages on a second inbound thread (REPLAY_THREAD_IN) used specifically for the message replay. Both the initial inbound thread and the replay inbound thread are routed to the outbound thread to the receiving system.
SEND_SYS_IN ============> REC SYS_OUT
/
/
REPLAY_THREAD_IN ====/
Any Xlating that needs to be done can be done on the route from REPLAY_THREAD_IN to REC_SYS_OUT.
Let me know if you have any questions.
Craig Weldy
Senior Interface Analyst
Beacon Health System
South Bend, In, 46615I mirror what James and Ross stated, that I use the master site option and don’t put any interfaces in the master site. But I only use it on my production server.
I found that you can only have one master site per server.
On my test server, I run up to 3 copies of my production environment (15 sites each) depending on the current projects in the pipe. Since I don’t want all of these environments to use the same master site, I use the symbolic link method to tie each of the environments to its own “master site”.
I am hoping that the one master site per server restriction will be changed in the future.
Craig Weldy
Senior Interface Analyst
Beacon Health System
South Bend, In, 46615Helen, are you using encrypted SMATDB’s?
I found that since the engine is running as user “hci” if you are logged in as yourself and you try to do anything to the encrypted SmatDB files it will corrupt them. Once that happens, there is no going back. Stop the thread, delete the SmatDB files, restart the thread and move on from there.
Craig W.
Craig Weldy
Senior Interface Analyst
Beacon Health System
South Bend, In, 46615The only issue I know about like this with smat files was that if the disk partition (AIX) your cloverleaf root directory is in (/hci) reaches 90% full, cloverleaf will automatically stop writing to smat databases (probably to prevent filling up the disk and having cloverleaf crash).
To help prevent this, I have a softlink that I place in each SmatHistory folder named HISTORY which points to a seperate partition called “/smathist” that has a directory for each process. Then every week I move any smat databases in SmatHistory that are older than one month into the HISTORY folder. This helps keep my SmatHistory folders clear, and I can keep as many smat databases as disk space allows without causing any issues with Cloverleaf.
Also, with the HISTORY link being in the SmatHistory folders, you can get to them directly using the smatdb tool or with global monitor.
NOTE: if you are encrypting your smatdb’s, then make sure your cron job is running as the same user that your cloverleaf application runs, or you will corrupt your smatdb’s by trying to move them (learned the hard way).
SITE:
prod_ADT
Process:
ADT1
Thread1.smatdb
Thread2.smatdb
SmatHistory
Thread1.20160505.smatdb
Thread2.20160505.smatdb
HISTORY (softlink to /smathist/ADT1)
ADT2
Thread3.smatdb
SmatHistory
Thread3.20160505.smatdb
HISTORY (softlink to /smathist/ADT2)
/smathist
ADT1
Thread1.20160405.smatdb
Thread1.20160305.smatdb
Thread1.20160205.smatdb
Thread2.20160405.smatdb
Thread2.20160305.smatdb
Thread2.20160205.smatdb
ADT2
Thread3.20160405.smatdb
Thread3.20160305.smatdb
Thread3.20160205.smatdb
Craig Weldy
Senior Interface Analyst
Beacon Health System
South Bend, In, 46615Tahir,
We have found that you probably don’t want to change every field in an HL7 message to Mixed case, just those in the Name/address/notes type fields. If you have a department code “ECC” and it turns into “Ecc” it may not be received well by the receiving system.
I run an Xlate shop so in my xlates I put a .xltp script on any field that I want to convert to mixed (code is included below).
It adds a little work up front, but I find it is much easier to include or exclude the script as you find fields that you want to change to mixed and those that you don’t want modified.
FILE: tomixedcast_xltp.tcl
proc tomixedcase {} {
upvar xlateId xlateId
xlateInList xlateInList
xlateInTypes xlateInTypes
xlateInVals xlateInVals
xlateOutList xlateOutList
xlateOutTypes xlateOutTypes
xlateOutVals xlateOutVals
set inp [lindex $xlateInVals 0]
if { $inp > ” ” } {
foreach el $inp {
set el [string totitle $el]
lappend outList $el
}
set xlateOutVals
]
} else {
set xlateOutVals
}
}
Hope it helps!!
Craig Weldy
Senior Interface Analyst
Beacon Health System
South Bend, In, 46615I ran into the same issue with CL 6.1.1. What I have found is that since I am running with the SMATDB encrypted, and the engine runs as user “hci”, if I try to do anything with the smatdb files as a different user, they are corrupted and can’t be accessed again. You can’t even move the files to another directory as a different user.
From what I have seen, it dosn’t help much to gzip the smatdb files anyway, they don’t compress much. For long term storage I am looking at converting them to the old smat file format and then gzipping them up.
I have not finished working out this process yet. For the time being I have created an additional partition on my box with more storage space /smathist and in each of the process directories in the SmatHistory directory (if you have smat history turned on) I am creating a soft link (AIX os) to /smathist/ and naming it “HISTORY”. Then any smat files older than 60 days I am moving to HISTORY. This way when you are in the smatdb tool you can drill down to files in the SmatHistory folder and in there is another filder called HISTORY where you can see everything that is on the additional partition.
I am currently working on the script that will go through all the process directories and create the link if it dosn’t exist and move the older files to the HISTORY folder/link.
Craig Weldy
Senior Interface Analyst
Beacon Health System
South Bend, In, 46615Sorry for the confusion, all of the threads (in/out) are in relation to cloverleaf. When I have a thread with “out” in the name I am sending a message to a system outside of cloverleaf. When I send a message out, I am expecting to get an ACK back to that thread from the external system.
The problem is that the external system is not sending the ACK back to the thread that sent it the message, it is sending the ACK in the normal data flow to a different thread that is Inbound from that same external system. It is not coming back to the original outbound thread as an acknowledgement that they received the message I sent out.
Hope I didn’t just muddy the water even more.
Craig Weldy
Senior Interface Analyst
Beacon Health System
South Bend, In, 46615Robert,
Thanks for the reply and you hit the problem right on the head. I passed the info to one of my SA’s and he had it reset in no time flat.
Thanks for the help.
Craig Weldy
Senior Interface Analyst
Beacon Health System
South Bend, In, 46615There are Cloverleaf 6 Roadshow’s going on across the country. Check on the one closest to you! https://usspvlclovertch2.infor.com/viewtopic.php?t=6126&start=0&postdays=0&postorder=asc&highlight= Barring production issues, I will be at the one in Chicago in just a couple weeks.
Craig Weldy
Senior Interface Analyst
Beacon Health System
South Bend, In, 46615Stefan, to answer your question, you should only use the inter-site routing if that is the best tool for the job. For those of you with unlimited thread licenses, you will probably not use it, you can keep using the additional threads to pass data from site to site.
If on the other hand you are paying for each thread license used, only having to use 2 licenses to pass data from an inbound thread in one site to an outbound thread in a second site, is much better than having to pay for 4 licenses to do the same thing. Just the use of this new feature made me a superstar to by boss, since I was able to split my threads up between 5 sites instead of cramming them into 2, they process faster as a whole and I didn’t have to buy a bunch more licenses to make it happen.
Inter-site routing is just a tool, and like all tools it should only be used when it will solve a problem. If I had unlimited licenses, I would probably not use it since there are some things about it that I need to work around, but these issues are small potatos compared with the solution it has provided for me.
Still needs some work, but I feel like they created this feature just for me! Thanks guys!
Craig Weldy
Senior Interface Analyst
Beacon Health System
South Bend, In, 46615Simone,
I agree with you that I love this new feature. We just went live with 5.8.5 last Wednesday and so far so good.
You had mentioned that you couldn’t remove the bad messge from the database, you should still be able to use the message id [0.0.0] to specifically locate and remove any message that is there. I have not tried this yet in the new version but it always worked in the past.
I have not run into the problem with the bad message yet, but my biggest issue is one that is know and in the release notes. The problem that if you take down a thread with an inter-site routeing port, you can’t bring it back up right away because the OS has not released the port yet, and the whole process panics and shuts down. I have just had to create a script that takes the thread down, waits for 10 min (the safe amount of time it takes to release the port on my system [AIX]) and then brings it back up. With this I have been able to successfully deal with any hung threads I get from time to time without taking down whole process.
But I am waiting for any word that there is a fix for this little challenge!
😀
Craig Weldy
Senior Interface Analyst
Beacon Health System
South Bend, In, 46615I tend to only use the purge cache command when I have modified an entry in a lookup table and want the process to reread the table with the new entry.
If I make any other modifications to processes, threads, scripts or xlates, I always bounce the process. Perhaps overkill but from past performance, that is how I use it.
I have never seen a situation where existing xlates where messed up through purging cache. Unless of course you had added the last line and that was what you where trying to have take effect through purging the cache, then I would expect that which was added to not work.
Craig Weldy
Senior Interface Analyst
Beacon Health System
South Bend, In, 46615I think the real advantage of the inter-site routing in 5.8.5, is for the smaller shops that have to pay for each individual thread license. I can’t justify 2 additional ($1,700 for each prod/test pair, plus yearly support) threads each time I want to just pass data to another site. Because of this I have 90 threads packed into a single site.
Now, instead of having to use 4 threads to get data from the inbound thread in site A to the outbound thread in site B, I only have to use 2.
I am in the process of redesigning my site right now for my 5.8.5 upgrade and I am loving the fact that I can now split my installation up into 6 different sites.
I will be using the old method to split up my inbound adt (sends out to 30 outbound threads at this point) so that I can distribute the processing between different processes, but I will still be way ahead of where I was with no additional threads licenses used.
Craig Weldy
Senior Interface Analyst
Beacon Health System
South Bend, In, 46615Thanks for all of those that sent me contact info. I am now in communication with someone who can help me out.
Thanks CloverTechers!
Craig Weldy
Senior Interface Analyst
Beacon Health System
South Bend, In, 46615Keep in mind that this will work ok as long as you have an unlimited thread license. If you have a 120 thread license for Productiion and a 120 thread license for Test, I doubt you can have them both running on the same box. And you can’t just switch to a single 240 thread license since the cost of prod threads are different than the cost of test threads. [Perhaps I am the only one still out there with a limited thread license :^( ]
Craig Weldy
Senior Interface Analyst
Beacon Health System
South Bend, In, 46615 -
AuthorReplies