Peter Heggie

Forum Replies Created

Viewing 15 replies – 1 through 15 (of 627 total)
  • Author
    Replies
  • in reply to: Alert to restart thread if queue>10 #122604
    Peter Heggie
    Participant

      do you have to escape the inner quotes? does it work from the command line?

      Peter Heggie
      PeterHeggie@crouse.org

      in reply to: Alert to restart thread if queue>10 #122602
      Peter Heggie
      Participant

        Can you run that whole text from the command line to see if it works outside of an Alert context?

        hcicmd -p ADT -c “VRAD_ORM_OB pstop”;sleep 20;hcicmd -p  ADT -c “VRAD_ORM_OB pstart”

        or

        cmd /c hcicmd -p ADT -c “VRAD_ORM_OB pstop”;sleep 20;hcicmd -p  ADT -c “VRAD_ORM_OB pstart”

        ?

        If not, can you just try one of those commands, ex: cmd /c hcicmd -p ADT -c “VRAD_ORM_OB pstop” ?

        do you have to setsite first?

         

        Peter Heggie
        PeterHeggie@crouse.org

        Peter Heggie
        Participant

          Is the file on the Cloverleaf server? Then you can use TCL to open the file, read it into a variable (in binary) and then COPY the variable into the OBX.

          If you have to use FTP, then technically you could add the TCL FTP package into your environment but I’m not sure about the impact. especially if it encounters errors.

          Peter Heggie
          PeterHeggie@crouse.org

          in reply to: Using Wizard to generate VRL #122528
          Peter Heggie
          Participant

            I have wanted this for a long time!!

            Peter Heggie
            PeterHeggie@crouse.org

            in reply to: Manipulating email contents in Cloverleaf #122509
            Peter Heggie
            Participant

              following

              Peter Heggie
              PeterHeggie@crouse.org

              in reply to: 2022.09.04 Patch #122474
              Peter Heggie
              Participant

                I have the same question – following..

                Peter Heggie
                PeterHeggie@crouse.org

                Peter Heggie
                Participant

                  yes – we ran our normal recycle at 00:53 and had 48 normal startup messages in the log, down to here:

                  [prod:prod:INFO/0:dohbeds_out_cmd:03/23/2026 00:53:27] Log History feature is enabled.

                  Then we started to see the icl messages:

                  [xlt :thre:ERR /0:dohbeds_out_xlate:03/23/2026 00:53:27] XLATE ICL server open failed, iclErr=1

                  [pd :pdtd:ERR /0:fr_dohbeds_db2:03/23/2026 00:53:30] Sending ICL cmd to ‘dohbeds_out_xlate’ failed, iclErr=3

                  There were no more of these messages and there were a few more normal process startup messages, ending with this:

                  [cmd :cmd :INFO/0:dohbeds_out_cmd:03/23/2026 00:53:43] Command client went away. Closing connection.

                  At  2:16:18 there was an application msg processed. This would have been the first application activity since startup, and it was expected. There was debugging output (sorry for the length):

                  [tcl :out :INFO/0:fr_dohbeds_db2:03/23/2026 02:16:18] tpsPrintMsg: 2026-03-23 02:05:04.0,2026-03-23 02:16:04.607,,CRH,ready,ip,9C902EC5-7F26-F111-8882-005056957E5C,Yes,12,0,0,30,26.90,56,51,1.45,5,21,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,267,295,62,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,41,0,0,0,0,46,51,16,21,0,0,0,0,61,0,1.45,12,26.90,51,312
                  [tcl :out :INFO/0:fr_dohbeds_db2:03/23/2026 02:16:18] DOH_BedAvail_sending_Update updated guid: 9C902EC5-7F26-F111-8882-005056957E5C status: sending result: 0

                  Right after this, we got the “delivery failed” message:

                  [pd :pdtd:ERR /0:fr_dohbeds_db2:03/23/2026 02:16:18] [0.0.7755725] Delivery to xlate thread dohbeds_out_xlate failed. Requeuing msg. iclErr=3

                  At this point we started getting approximately 500 of these per second.

                  There were two more sets of application messages, as expected, just a few minutes apart, as expected. There were error messages interspersed between the application messages.

                  Then the error messages continued until 04:13. it seems like we were getting around 3100 error messages per second.

                  At 04:13 the last line was truncated, so I think it stopped there – space, memory, whatever – just stopped, no crash, no panic, just stopped.

                  I restarted around 12:20 and all was fine, all application messages that attempted to go, did go through, successfully.

                  I have disabled the debugging code, in case that contributed to the issue, but its been running without changes since September.

                  I do have ksh shell scripts that monitor some process logs, looking for Java errors, so I could look for this also and raise an alert or maybe just recycle the process.

                  Peter

                   

                   

                   

                  Peter Heggie
                  PeterHeggie@crouse.org

                  Peter Heggie
                  Participant

                    we run shell scripts on AIX that recycle all sites, all processes.

                    the last successful message transmission was around 00:18 and the process was recycled at 00:55. And about a minute after that the log started filling up with those entries. Will have to see if the entries continued to post or stopped at some point.

                    Peter Heggie
                    PeterHeggie@crouse.org

                    Peter Heggie
                    Participant

                      thank you – yes we recycle the processes every night. Also I was able to tail and head the process log and I found those messages starting showing up in the log fairly close to the top of the log. I have debug statements in procs at various UPOCs, and I did see some of these write to the log before the error messages started. I looked at the debug output and I didn’t see any obvious problems like non-printable characters, etc. There are only three messages sent every other hour, each around 6500 bytes, so not a lot of volume. Copies are written to the log. They contain a lot of square brackets and curly braces but that shouldn’t be a problem. Its been running like this since last September, never saw this error before. And yes we are on AIX as well.

                       

                      Peter

                      Peter Heggie
                      PeterHeggie@crouse.org

                      in reply to: 203: Failure in OB Data TPS eval #122382
                      Peter Heggie
                      Participant

                        Is there any information in the process log that shows the error? Can you share that information?

                        Peter Heggie
                        PeterHeggie@crouse.org

                        in reply to: My Profile Photo #122352
                        Peter Heggie
                        Participant

                          I always notice your car!

                          Very cool. Not too many mid-engine cars with that big of an engine.

                          I had an X 1/9.. well, three of them. I got mine up to 85 going downhill…

                          Congratulations!

                          Peter Heggie
                          PeterHeggie@crouse.org

                          in reply to: Use database connection defined in site preferences #122302
                          Peter Heggie
                          Participant

                            We use Cloverleaf tables, that are database tables, from within shell scripts. That being said, we still need Cloverleaf. The Cloverleaf tables have to live somewhere, and maybe someone has figured out how to use a Cloverleaf table whose definition is not stored in Cloverleaf, but we have not.

                            Sometimes we use our Master site to hold Cloverleaf database tables, just because the tables are not related to any particular interface or business process that is associated with a Cloverleaf site. I believe the Network Monitor has to be bounced once after creating the table in the site. But we also store such Cloverleaf DB tables in an “application” site, the example below uses site “chargeprd”.

                            Here is an example. We have a shell script that functions as the job (parent level processing), it calls a utility script (Generic_Charges_Report_New.tcl) which invokes the DB table:

                            dbl_prGenericCharges_Report

                            which is an Advanced Database Lookup stored procedure:

                            {?=CALL prGenericCharges_Report( <@StartDateTimeString> , <@EndDateTimeString>,<@Source> , @Count1V OUT , @Count2V OUT , @RCode OUT , @RDesc OUT )};

                            IN: @StartDateTimeString,@EndDateTimeString,@Source

                            OUT: _CLRC_,RS_tstamp,RS_mrn,RS_ecd,RS_c_svccode,RS_c_svcdate,RS_prlocation,OUT_@Count1V,OUT_@Count2V,OUT_@RCode,OUT_@RDesc

                            Notice that the output has both record set (RS) data and stored procedure output (OUT) variables. Don’t know if you have had both RS and OUT data on the same stored procedure but you will notice that the result data has multiple rows, and each row has multiple data items (the RS items). But tacked on the end of each row will be the output items (OUT), and those values will be the same on each row (so they are kind of like duplicate data).

                            with this code:

                            set result [dblookup -maxrow 999999 dbl_prGenericCharges_Report $startdatetime $enddatetime $datasource]
                            if {$debug} {echo “[gts] $result RESULTS”}
                            if {$debug} {debugw “[gts] $result RESULTS”}

                            set rows [split “$result” “\n\r”]
                            set numrows [llength $rows]
                            if {$debug} {echo “[gts] $module results had $numrows rows”}
                            if {$debug} {debugw “[gts] $module results had $numrows rows”}

                            fyi – ‘debugw’ writes the information to a file, while ‘echo’ writes to the parent shell script. Don’t forget to set -MAXROW to a high number, to get all your output rows.

                            The utility script goes on to process each row in a loop. fyi – the utility script is TCL ; the parent script is a UNIX KSH shell script

                            This is from the parent ‘job’ shell script. Variable clsfx is the environment suffix, tst or prd.

                            prc=0
                            echo “omtstart-date +%Y%m%d%H%M%S”

                            # set site charge – to get to table dbl_prGenericCharges_Report
                            setsite charge${clsfx}; clCheckSite “$prc” “setsite” “charge${clsfx}” ; prc=$?

                            # run query SQL – this produces output to a file
                            Generic_Charges_Report_New.tcl “$startdatetime” “$enddatetime” “$email_fr” “$email_to” “$email_su” “$runtime” “$datasource” ; prc=$?

                            # set audit return code for the entire job and echo a timestamp to the log
                            omtend

                            When you run TCL in a batch script you need something like this at the top:

                            #! /usr/bin/ksh
                            # The following line is seen as a continuecomment by Tcl\
                            exec $QUOVADX_INSTALL_DIR/integrator/bin/hcitcl “$0″ ${1+”$@”}

                             

                            At the bottom of the TCL script, after all the subroutines, is the main TCL script code, here is a snippet:

                            # main routine
                            set startdatetime [lindex $argv 0 ]
                            set enddatetime [lindex $argv 1 ]
                            set email_fr [lindex $argv 2 ]
                            set email_to [lindex $argv 3 ]
                            set email_su [lindex $argv 4 ]
                            set runtime [lindex $argv 5 ]
                            set datasource [lindex $argv 6]

                            When you are building and testing, what is very helpful is to use this utility on the command line: hcitcl

                            it creates another shell / command line, where you can set variables and then invoke your dblookup stored procedure call. You will get the results back to your screen (or to a variable). This is really helpful, to make sure the database part of your solution is working, before running it out of a bigger script. Don’t forget to do a setsite first.

                            hope this helps

                            Peter

                            Peter Heggie
                            PeterHeggie@crouse.org

                            in reply to: Adding new OBX segments to an iteration? #122242
                            Peter Heggie
                            Participant

                              I believe this falls under the “fun with indexes” category. You will need to maintain separate indexes/variables for the NTE segments vs the OBX segments. As you mentioned, you may want to “insert” a new OBX segment at the top. You will have math functions to increment counters that are used as the OBX indexes. This means that your OBX index will end up being greater than your NTE index.

                              Example – if you know there will be five patient identification OBX segments, write those out first, incrementing the index for each OBX, from 0 through 4. Then when you get into your NTE-based loop, use that same OBX index, currently valued at 4, and add 1 to it for each NTE segment that you are copying over to an OBX.

                              This will take some time to work out, but everything is addressable.

                              Peter Heggie
                              PeterHeggie@crouse.org

                              in reply to: Closing down Cloverleaf completely (Linux) #121905
                              Peter Heggie
                              Participant

                                To start Cloverleaf, start the lock manager and monitor first, then start the processes. I think it is desirable to have the lock manager running before messages are processed through threads.

                                it is interesting that our HACMP environment, configured by Infor, has a shell script that determines all the processes in a site and does a kill -9 on the PIDs, then a kill -9 on the lock manager and the monitor. And does that for all sites. Then kills the host server. So nine sites with a total of 400 threads will end in about eight seconds. Never lost a message, never had a problem. We use Recovery Databases for everything.

                                 

                                Peter Heggie
                                PeterHeggie@crouse.org

                                in reply to: ‘Failed to query data: The index 1 is out of range.’ #121903
                                Peter Heggie
                                Participant

                                  This is how we use LIKE – if that is what you are looking for?

                                   

                                  select status from dbo.prl_charges WITH (NOLOCK) where keyvalue like ‘%’ + <keyvalue> + ‘%’

                                  in_column_name=keyvalue
                                  out_column_name=status

                                  Peter Heggie
                                  PeterHeggie@crouse.org

                                Viewing 15 replies – 1 through 15 (of 627 total)