Forum Replies Created
-
AuthorReplies
-
February 25, 2026 at 2:52 pm in reply to: Best practices for Cloverleaf interface support tools #122310
Is there a document with release notes for 2025.01? I found the release report which is an Excel document. Is there anything more readable? The spreadsheet doesn’t make it easy to find release highlights; you have to wade through descriptions of minor bug fixes, etc.
If you run the IDE from Linux, the shell button opens up an Xterm window. If you’re using MobaXterm or other software that tunnels you GUI traffic over SSH, then it should be secure.
We’re on Rackspace for our servers, so Cloverleaf is sort of running in a cloud, but not the Infor cloud.
David Barr (david_barr@valleymed.org)
February 9, 2026 at 10:32 am in reply to: How to escape the ampersand (&) character in an Xlate #122274You can use \T\.
October 8, 2025 at 6:20 pm in reply to: Trying to replace an entire message with msgset, still only sending old message #122193You could always add a “msgdump $mh” command in your script for more debugging information. It should add messages to the process log to show you if the message has been modified, and if the msgdump output isn’t showing up it would indicate a problem getting your interface to run the script (not applied in the GUI or process not restarted).
October 7, 2025 at 5:07 pm in reply to: Trying to replace an entire message with msgset, still only sending old message #122186The code looks fine to me, and if the testing tool says that it works, then your actual interface is probably still running the old code. I think you can “reload procedure” through the gui to apply your change, but I always just restart the process where the proc is getting run.
If you’re just decoding the base64 data and not passing it anywhere you may not need to remove the linefeeds. The decode will ignore them, and they shouldn’t affect your field lookups since they are using \r and | as delimiters. If you do want to remove the linefeeds, I think you could do something like this:
<pre>set msg [msgget $mh]
set msg [string map { \n “” } $msg]
set ctr_val [msgmetaget $mh “USERDATA”]
set segmentList [split $msg \r]</pre>Do you have an example message? Is the line feed part of the encoded characters, or is it after? Is Cloverleaf decoding the base64 or is it being passed to another system? This should be easy to do in TCL.
In my experience there are very few tutorials for any Cloverleaf usage outside of official Infor training. There is online documentation for the Python API, and at least one example that is installed with the Cloverleaf. I don’t know how much the official training classes would cover Python. The Python API seems very similar to the Java API, so it’s possible that you could infer additional information from the Java documentation and examples.
I think you just put the site folders under version control. That’s pretty much what we did. What questions do you have?
If you’re using SVN, you would set up an SVN server then run “svn add” in each of your site folders.
We’re still trying to make option 1 work (from your post above), and it’s going well.
I ran a test yesterday with 8 outbound threads on Cloverleaf. I had about 85,000 messages. I created the messages according to the Epic specs, but I only included the pathname to the document rather than the contents in the message. When I was building the file, I also put a thread ID (CONV1-CONV8) in MSH-5. I resent all the messages to the inbound thread at once. I had a filter on each route based on MSH-5 so that each outbound thread would process a separate set of messages. The outbound thread would add the base64 encoded document contents to the message in a prewrite proc to delay bloating the messages in Cloverleaf for as long as possible. Also, every outbound thread was in a separate process so that work of reading the document into the message wouldn’t block activity on other threads.
On the Epic side, I set up 8 inbound interfaces to process the messages, and I used the system defaults (IC_IN_TABLE) to route the messages to separate interfaces based on MSH-5. Also, I had all my Cloverleaf threads sending to the same IP/port and there was a load balancer to spread out the work of saving to the web blob server.
For this test we were able to process about 1000-3000 messages per minute which may be fast enough for our needs. We can add more threads, Interconnect servers and Bridges interfaces if we need better performance.
Our Epic TS didn’t like option 2 because there’s more complication of associating the files on the blob server to the HL7 messages.
What do you want to use Azure for? Just hosting your Git repos?
Git workflow doesn’t really do that much for our Cloverleaf development. We can’t have multiple devs cloning separate copies of a site and running them independently due to licensing issues for servers. We generally do all your development in test versions of our production site on a test server. If you have multiple devs, they are generally logged into the hci account and working with the same set of files.
We’re stilling using SVN instead of GIT. My opinion is that most of GIT’s advantages don’t apply due to the Cloverleaf restrictions, so I haven’t seen the need to move. We have separate branches of our sites for test and prod. We check our changes into the test server and merge the changes from the test branch to the prod branch on the prod server. Our SVN repo is on a totally separate server running Trac (trac.edgewall.org). I think the same type of configuration should work for GIT, and locally hosted GIT vs. cloud hosted should be similar.
I suppose that having pull requests for the prod branch could help with change management. In that case you could keep a copy of your prod sites (not running) on your test server, merge your changes from test, push the changes to Azure, make a pull request. Someone approves the request, then pull the changes down to your prod server.
May 9, 2025 at 11:12 am in reply to: NoClassDefFoundError in WebServer process after adding database actions #122026It does sound like a CLASSPATH problem. I’m not very familiar with how environment variables are set in Cloverleaf under Windows. I’m more familiar with Linux. If you can get tech support from Infor that would probably help.
I would see if starting the process from the command line (hcienginerun command) vs. starting through the host server vs. having the processes auto-start with the service makes a difference in how it behaves.
Someone probably wrote a script outside of Cloverleaf that is doing this:
hcicmd -p processname -c “bogus cmd to see if process is responding”
This is probably in a script that is checking if your processes are stuck. I’ve never heard of this before, so it’s probably written by someone specifically for your organization.
Do you know about how the forward queue works? If that’s going to be a problem I could probably make a loopback interface to another thread, await replies, and have the second interface add the PDF and forward the reply from Epic. But if the forward queue can’t get big I don’t want to bother with that.
-
AuthorReplies