Forum Replies Created
-
AuthorReplies
-
Have you notified Support?
Look at the release notes. Latest version supports W11 for client, sever for demo only
Shouldn’t
if { [hl7::get_field hl7 PID.3.($1).5] eq “MR”} {
Be
if { [hl7::get_field hl7 PID.3.($i).5] eq “MR”} {With that said I don’t understand the repeated use of the hl7 package when it is so easy to simply split the message into segments and then into fields to get what you need. The package is not very ergonomic since with each call it needs to parse the message.
I guess to each his own 🙂
HCI Link! That brings back ghostly memories (an inside joke). Rob is the last of us (HCI/Quovadx/Infor and others) from those days. Not very many in the customer base either.
You are so right Jim. He will be sorely missed!
Seems to me to be overkill unless I am missing something.
Simply create multiple Alert files and give each some meaningful name like weekend.alrt, etc. Make sure you save a copy of your stardard alerts file to something like standard.alrt. Then when you need your special alerts simply rename the alert file you want to use to default.alrt. Then run hcisitectl. When no longer needed rename standard.alrt to default.alrt and run hcisitectl again.
This could be easily scripted if need be and, INHO, much easier than traversing and editing an alert file.
As I said, maybe I am missing something here.
March 26, 2024 at 2:21 am in reply to: New cloverleaf is sending TCP PSH flags, 2 receiveing system have problems #121268Must be large messages where multiple packets are received. Should it be inherent on the receiving application to buffer those packets until a complete message is received? For example, assuming MLP HL7 data, Cloverleaf noting a packet with a start character of x0b (vertical Tab), would buffer the message until 1c0d (File separator/Carriage Return) is received
Am I missing something?
As I have said before, stopping and starting threads can be a bit ify at times. You don’t know how much more the thread might attempt to do before stopping or even if it stops at all. It all depends on busy the process is. The command may time out before it is executed.
I find it safer to stop the process even if it means putting a thread in a process by itself or with other threads you don’t mind stopping/starting a the same time. The process stop command will kick the process to death if it does not stop naturally.
Just my $0.02.
If you used the splitX12 proc prior to Xlate the ISA data should be in the metadata.
Here is a snippet from the X12MetaData_template that resides in $HCIROOT/tclprocs.
Perhaps you could use it as a template to extract the fields you need.
set USER_DATA [msgmetaget $mh USERDATA]
if {[catch {set ISA_DATA [keylget USER_DATA ISA]}] == 0} {
set i 1
while { $i <= 16 } {
if {[info exists ISA($i)] == 0} {
set ISA($i) [lindex $ISA_DATA $i]
}
incr i
}
}As Jim said you can use the NCI interface. The commands are in the online docs.
If me I would do something like: (Assuming you want current site NetConfig)
netconfig load $::HciSiteDir/NetConfig
foreach conn [netconfig get connection list] {
set data [netconfig get connection data $conn]
set klst [keylget data DATAXLATE]foreach {full part} [regexp -all -inline {DEST (.*?)\}} $klst] {
echo THREAD $conn –> $part
}
}Note: Only threads with destinations will be listed as others will return empty from regexp command
Note the use of the regexp inline command. To me, much easier than trying to drill down further as now you get into lists of keyed lists, etc.
I hope I did not misunderstand what you wanted. If so this will still give you a kick start.
February 5, 2024 at 1:36 am in reply to: SQLite programming question – how to execute dot commands from Tcl #121103The “copy” method
The “copy” method copies data from a file into a table. It returns the number of rows processed successfully from the file. The syntax of the copy method looks like this:
<i>dbcmd</i> <b>copy</b> <i>conflict-algorithm</i> <i>table-name </i> <i>file-name </i> ?<i>column-separator</i>? ?<i>null-indicator</i>?
Conflict-algorithm must be one of the SQLite conflict algorithms for the INSERT statement: <i>rollback</i>, <i>abort</i>, <i>fail</i>,<i>ignore</i>, or <i>replace</i>. See the SQLite Language section for ON CONFLICT for more information. The conflict-algorithm must be specified in lower case.
Table-name must already exists as a table. File-name must exist, and each row must contain the same number of columns as defined in the table. If a line in the file contains more or less than the number of columns defined, the copy method rollbacks any inserts, and returns an error.
Column-separator is an optional column separator string. The default is the ASCII tab character \t.
Null-indicator is an optional string that indicates a column value is null. The default is an empty string. Note that column-separator and null-indicator are optional positional arguments; if null-indicator is specified, a column-separator argument must be specified and precede the null-indicator argument.
The copy method implements similar functionality to the <b>.import</b> SQLite shell command.
Seems to me your “AND” will not work. You are sayin the thread must be UP and Opening – impossible. This is an OR function
What trouble are you having? There should not be a problem.
hcicmd will always run in the current site.
You can exec any executable from Tcl. How it behaves depends on how it is written. Where the output goes where it expects input from dependencies, etc.
The only problem I see here is that thread may or may not stop. Depending how busy the process is the command may time out. No clean up needed for stopping a thread as all of the resources are assigned to the process. There is a perl command in $HCIROOT/bin named hcienginestop.pl which can be called but it will stop all. You could take a look and see how it does cleanup.
Something to remember here when measuring number of messages over a period of time. It will take the engine to get everything loaded and processing at a stable rate. Any measurement taken should take that into consideration or you will get a skewed result. Get the engine stable then reset the counts and go from there.
Just a thought.
-
AuthorReplies