TCL Error

Clovertech Forums Cloverleaf TCL Error

  • Creator
    Topic
  • #121446
    Rin
    Participant

      Hi,

      I am novice tcl programmer.

      Need help with the tcl error below:

      Please Wait ……
      Command Issued: hcitpstest -r run -x UTF-8 -f nl -c sms_ib_data -e “hcitpstestshowbydisp ” /cloverleaf/cis19.1/integrator/site_cvis/TestMessages/NO_MR_ORDERS-OUT.12.2431267.nl “tpsMissingMRN”
      Command output:
      [0:TEST] Tcl error:
      msgId= message0
      proc= ‘tpsMissingMRN’
      args= ”
      result= ‘can’t read “level”: no such variable’
      errorInfo: ‘
      can’t read “level”: no such variable
          while executing
      “lindex { segment segrep field fieldrep component subcomponent } $level”
          (procedure “::hl7::field_parse” line 93)
          invoked from within
      “::hl7::field_parse hl7 $mode $field”
          (procedure “::hl7::getset_2” line 6)
          invoked from within
      “::hl7::getset_2 GET hl7 $field “””
          (procedure “hl7::get_field” line 3)
          invoked from within
      “hl7::get_field hl7 MSH.5.0”
          (procedure “tpsMissingMRN” line 20)
          invoked from within
      “tpsMissingMRN {MSGID message0} {CONTEXT sms_ib_data} {ARGS {}} {MODE run} {VERSION 3.0}”‘
      I have attached 2 files:
      1. Missing_MRN_Email.tbl
      2. tpsMissingMRN.tcl
      ******************************************
      tcl code:

      proc tpsMissingMRN { args } {
      global HciConnName
      keylget args MODE mode
      set ctx “” ; keylget args CONTEXT ctx
      set module “tpsMissingMRN/$HciConnName/$ctx”
      set uargs {} ; keylget args ARGS uargs
      set debug 0
      catch {keylget uargs DEBUG debug}
      set dispList {}

      switch -exact — $mode {
      start {}

      run {
      keylget args MSGID mh

      package require hl7
      set hl7 [hl7::parse_msg [msgget $mh]]
      set MSH_3 [hl7::get_field hl7 MSH.3]
      set MSH_5 [hl7::get_field hl7 MSH.5.0]
      set MSH_10 [hl7::get_field hl7 MSH.10]
      set PID_3_0 [hl7::get_field hl7 PID.3]
      set PID_3_5 [hl7::get_field hl7 PID.3.5]
      #echo “MSH_3: $MSH_3”
      #echo “MSH_5: $MSH_5”
      #echo “PID_3_0: $PID_3_0”
      #echo “PID_3.5: $PID_3_5”

      # Handle the condition when PID.3.0 is empty and PID.3.5 is not equal to MR
      #if {$PID_3_0 eq “” && $PID_3_5 ne “MR”} {
      # set errormsg “Missing PID-3 with PID-3.5 not equal to MR.”
      # } else {
      # echo “PID segment not found.”
      # }

      # Initialize counter outside the loop
      set pid_counter 0

      #Increment counter inside the loop
      for { set i 1 } { $i <= [hl7::count hl7 PID.3] } { incr i } {
      incr pid_counter

      #Grab the PID-3 iteration where PID-3.5= “MR” and Process PID.3 data using $pid_counter
      if { [hl7::get_field hl7 PID.3($i).5] eq “MR” } {
      set mrn [hl7::get_field hl7 PID.3($i).1]

      }
      }

      #SOURCECONN is the name of the thread that initially receives the message (CARD_Orders_from_Meditech)
      set sourceconn [msgmetaget $mh SOURCECONN]
      set errormsg “”

      if {$sourceconn eq “”} {
      set sourceconn TestTool
      }

      #Create the e-mail

      set mailfrom [tbllookup Missing_MRN_Email “MailFrom”]
      set mailhost [tbllookup Missing_MRN_Email “MailHost”]
      set PORT [tbllookup Missing_MRN_Email “MailPort”]
      set mailsubjectprefix [tbllookup Missing_MRN_Email “MailSubjectPrefix”]

      set subject “$mailsubjectprefix Meditech sent an HL7 Order Message without the MRM number to Cloverleaf”

      set errorMsg “This is the message ID: $MSH_10 \n\n This is the reason why:\n\n$errormsg \n Patient X Number: (PID.3) $PID_3_1”

      #echo “This is errorMsg: |$errorMsg|”
      set emailbody $errorMsg

      if {$errormsg eq “”} {

      echo “Killing message with Message Control ID: |$MSH_10| because of $errorMsg”

      SendEmailAsAlert $mailto “” $emailbody $subject $mailfrom “” “” $mailhost $PORT “0” “0”
      ###echo “email should have been send now”

      #Continue Message
      lappend dispList “KILL $mh”

      } else {
      #Continue Message
      lappend dispList “CONTINUE $mh”
      }

      }

      time {}
      shutdown {}
      default {
      error “Unknown mode ‘$mode’ in $module”
      }

      return $dispList
      }
      }

      *********************************************************
      Any help would be appreciated.
      Thanks.
      • This topic was modified 6 months, 2 weeks ago by Rin.
      Attachments:
      You must be logged in to view attached files.
    Viewing 17 reply threads
    • Author
      Replies
      • #121450
        Peter Heggie
        Participant

          I have not used the HL7 package and I’m notso great with namespaces, but maybe this line:

          set hl7 [hl7::parse_msg [msgget $mh]]

          it just makes me wonder if it is confusing that you are creating/updating a variable that has the same name as the namespace?

          Maybe you use a different variable name:

          set hl7msg [hl7::parse_msg [msgget $mh]]

          and then change the lines that come after that to use the different variable name:

          set MSH_3 [hl7::get_field hl7msg MSH.3]

           

          Peter Heggie

        • #121452
          Jeff Dinsmore
          Participant

            What it’s complaining about is that the “level” variable is not set when running…

            lindex { segment segrep field fieldrep component subcomponent } $level

            … to select one of the six values from the list {segment segrep field fieldrep component subcomponent }.  If level is zero, lindex returns “segment”.  If level is 3, lindex returns “fieldrep”.

            This is the command that’s generating the error:

            set MSH_5 [hl7::get_field hl7 MSH.5.0]

            Assuming it’s not a bug in the hl7 package code itself, the problem is most likely in how message element is specified – “MSH.5.0”.  Perhaps the zero element is the issue.

            Try “MSH.5.1” instead.  If that doesn’t work, try eliminating the component altogether – using “MSH.5” to see if it retrieves the entire contents of MSH-5.

            Good luck!

            Jeff Dinsmore
            Chesapeake Regional Healthcare

            • #121453
              Tim Pancost
              Participant

                To go along with Jeff’s suggestion, I might also wonder if the get_field proc/command needs another argument to say what level you want(whole field, particular component, particular repetition).

                Also, I’m thinking that it should be $hl7 in the call to get_field, not hl7.  You want to pass the content of the variable, not the name of it.

                Also, I’m wondering about the calls to get PID-3 and PID-3.5.  Is that just to echo out their values during debugging?  Otherwise, you’re looping through the repetitions of that field later on to find the MR, so the initial calls are unnecessary.

                HTH,

                TIM

                Tim Pancost
                Trinity Health

            • #121454
              Jeff Dinsmore
              Participant

                Tim

                I think that passing the variable by name is correct since the command prior to the one generating the error would probably have barfed if it was sent a string (hl7) and it was expecting the value in that string.

                Passing the name and then referencing it with upvar in the called procedure is fine – and the only way to do it if the passed variable is an array.

                Jeff Dinsmore
                Chesapeake Regional Healthcare

              • #121455
                Rin
                Participant

                  Thank you all for your suggestions.

                  My script is not erroring anymore after I edited however it is not giving the desired results, unsure why?

                  This is my test message:

                  MSH|^~\&||COCLB|||202406041326||ORM^O01|ORDERS-OUT.12.2431267|P|2.4|||AL|NE| PID|1||X1234785^^^^PI~123456^^^^MR||Test^Testing^^^^^L||19760101|M|||||.^PRN|||||E2911111| PV1|1|O|ECARD^^^^^^LBH Cardiology||||PAAAAA^Pllll^Suuuu^^^^^^^^^^XX|||||||||||CLI||U|||||||||||||||||||COCLB||CAN|||202408071500| ORC|NW|||||N|||202405211446|E.CAR.JJ||PAAAAA^Pllll^Suuuu||||||HCAD03167.1| OBR|1|CARD20240730-0002COCLB||CARD^EXECG^Exercise ECG||202407301430||||||||||PAAAAA^Pllll^Suuuu|||||||||||^^^^^R| OBX|1|TX|CVIS-TSTRS^Reason for Test?||.| ZMN||

                  I have attached the edited script and and seeing the below in the testing tool?

                  I get the same output whether I put the MRN or not?

                  How can I echo , 123456^^^^MR in my script?

                  I would expect the message to be killed only if my PID looks like this

                  PID|1||X1234785^^^^PI~^^^^MR

                  Is there something wrong with my PID iteration?

                  ***********************************

                   

                  Testing tool results:

                  I am here
                  MSH_3:
                  MSH_10: ORDERS-OUT.12.2431267
                  PID_3_1: X1234785
                  PID_3.5: PI
                  Killing message with Message Control ID: |ORDERS-OUT.12.2431267| because of This is the message ID: ORDERS-OUT.12.2431267

                  This is the reason why:

                  Patient X Number: (PID.3) X1234785
                  KILL: ‘MSH|^~\&||COCLB|||202406041326||ORM^O01|ORDERS-OUT.12.2431267|P|2.4|||AL|NE|
                  PID|1||X1234785^^^^PI~123456^^^^MR||Test^Testing^^^^^L||19760101|M|||||.^PRN|||||E2911111|
                  PV1|1|O|ECARD^^^^^^LBH Cardiology||||PAAAAA^Pllll^Suuuu^^^^^^^^^^XX|||||||||||CLI||U|||||||||||||||||||COCLB||CAN|||202408071500|
                  ORC|NW|||||N|||202405211446|E.CAR.JJ||PAAAAA^Pllll^Suuuu||||||HCAD03167.1|
                  OBR|1|CARD20240730-0002COCLB||CARD^EXECG^Exercise ECG||202407301430||||||||||PAAAAA^Pllll^Suuuu|||||||||||^^^^^R|
                  OBX|1|TX|CVIS-TSTRS^Reason for Test?||.|
                  ZMN||

                  <No active handles>

                  Checking for leaked handles…

                  Attachments:
                  You must be logged in to view attached files.
                • #121457
                  Tim Pancost
                  Participant

                    Long story short, it’s killing it because you told it to kill it. 😀

                    After going through the repetitions of PID-3 to (hopefully) find the MRN, you set a variable, errormsg to “”.  Then it looks like you’re building an email, regardless if you’re going to be sending it or not.  You then check if errormsg is “”, which it will always be, as you never change it after initializing it.  And inside that if statement, you send the e-mail and kill the message, although your comment says to continue it.

                    I would think that somewhere you would need to check if the mrn variable is blank, and use that to determine if errormsg should be populated with something.  Then, if it is populated, build and send the e-mail and kill the message, otherwise continue the message.  So something along the lines of:

                    if {$mrn eq “”} {

                    set errormsg “This message has no MRN identifier included.”

                    } else {

                    set errormsg “”

                    }

                    Then:

                    if {$errormsg eq “”} {

                    lappend dispList “CONTINUE $mh”

                    } else {

                    …build/send e-mail section

                    lappend dispList “KILL $mh”

                    }

                    Or something to that effect.

                    HTH,
                    TIM

                    Tim Pancost
                    Trinity Health

                    • #121459
                      Rin
                      Participant

                        Thanks Tim,

                        Let me revisit it.

                      • #121464
                        Rin
                        Participant

                          I am not sure what I am doing wrong here:

                          Testing Tool output

                          Please Wait ……
                          Command Issued: hcitpstest -r run -x UTF-8 -L -f nl -c sms_ib_data -e “hcitpstestshowbydisp ” /cloverleaf/cis19.1/integrator/site_cvis/TestMessages/NO_MR_ORDERS-OUT.12.2431267.nl “tpsMissingMRN”
                          Command output:

                          I am here
                          MSH_3:
                          MSH_10: ORDERS-OUT.12.2431267
                          PID_3: X1234785^^^^PI~123456^^^^MR
                          PID_3_1: X1234785
                          PID_3.5: PI
                          [0:TEST] ‘0’ (returned by ‘tpsMissingMRN ‘) does not match { <key> <value> }

                          Checking for leaked handles…
                          Handle Allocated by
                          ====== ============
                          message0 <global>

                          ****************************************

                          Script:

                          ######################################################################
                          # Name: tpsMissingMRN
                          # Purpose: This will pick up relevant details from the ADT and ORM message from Meditech and send an e-mail
                          ###########################################################

                          proc tpsMissingMRN { args } {
                          global HciConnName
                          keylget args MODE mode
                          set ctx “” ; keylget args CONTEXT ctx
                          set module “tpsMissingMRN/$HciConnName/$ctx”
                          set uargs {} ; keylget args ARGS uargs
                          set debug 0
                          catch {keylget uargs DEBUG debug}
                          set dispList {}

                          switch -exact — $mode {
                          start {}

                          run {
                          keylget args MSGID mh
                          echo “I am here”
                          package require hl7
                          set hl7 [hl7::parse_msg [msgget $mh]]
                          set MSH_3 [hl7::get_field hl7 MSH.3]
                          set MSH_5 [hl7::get_field hl7 MSH.5]
                          set MSH_10 [hl7::get_field hl7 MSH.10]
                          set PID_3 [hl7::get_field hl7 PID.3]
                          set PID_3_1 [hl7::get_field hl7 PID.3.1]
                          set PID_3_5 [hl7::get_field hl7 PID.3.5]
                          echo “MSH_3: $MSH_3”
                          echo “MSH_10: $MSH_10”
                          echo “PID_3: $PID_3”
                          echo “PID_3_1: $PID_3_1”
                          echo “PID_3.5: $PID_3_5”

                          set found_mrn “”
                          for { set i 1 } { $i < [hl7::count hl7 PID.3] } { incr i } {
                          incr pid_counter

                          set mrn [hl7::get_field hl7 PID.3($i).1]
                          if { [string equal $mrn “”] eq 1} {
                          lappend dispList “CONTINUE $mh”
                          }
                          set found_mrn $mrn
                          }

                          if {$found_mrn eq “”} {
                          # Now errormsg is accessible here
                          set errormsg “This message has no MRN identifier included.”
                          echo “Killing message with Message Control ID: |$MSH_10| because of $errormsg”

                          } else {
                          lappend dispList “KILL $mh”

                          #SOURCECONN is the name of the thread that initially receives the message (CARD_Orders_from_Meditech)
                          set sourceconn [msgmetaget $mh SOURCECONN]
                          set errormsg “”

                          if {$sourceconn eq “”} {
                          set sourceconn TestTool
                          }}

                          #Create the e-mail
                          ###echo “This is sourceconn: |$sourceconn|”
                          set mailto [tbllookup Missing_MRN_Email $sourceconn]
                          #echo “This is mailto: |$mailto|”
                          set mailfrom [tbllookup Missing_MRN_Email “MailFrom”]
                          set mailhost [tbllookup Missing_MRN_Email “MailHost”]
                          set PORT [tbllookup Missing_MRN_Email “MailPort”]
                          set mailsubjectprefix [tbllookup Missing_MRN_Email “MailSubjectPrefix”]
                          #set subject “$mailsubjectprefix Cloverleaf – Patient X Number: $PID_3_1 – THH message from $MSH_5 i.e. thread $sourceconn with message ID $MSH_10 needs manual intervention!”
                          set subject “$mailsubjectprefix Meditech sent an HL7 Order Message without the MRM number to Cloverleaf”
                          #set errormsg “This is the message ID: $MSH_10 \nThis is the reason why:\n\n$errormsg \n Patient X Number: $PID_3_1 \n Minor Patient ID: $MRG_1_1 \n The Major UHB patient ID is: $PID_4_1 \n The minor UHB Patient ID is: $mrgid\n\n Please check that the UHB ID matches the correct HCA Patient ID.”
                          set errormsg “This is the message ID: $MSH_10 \n\n This is the reason why:\n\n$errormsg \n Patient X Number: (PID.3) $PID_3_1”
                          #echo “This is errormsg: |$errormsg|”
                          set emailbody $errormsg

                           

                          SendEmailAsAlert $mailto “” $emailbody $subject $mailfrom “” “” $mailhost $PORT “0” “0”
                          ###echo “email should have been send now”

                          }

                          time {}
                          shutdown {}
                          default {
                          error “Unknown mode ‘$mode’ in $module”
                          }

                          return $dispList
                          }
                          }

                      • #121458
                        Jeff Dinsmore
                        Participant

                          Check what’s returned from your hl7::count command – [hl7::count hl7 PID.3.1]

                          I expect that’s counting the number of repeats in PID-3.1 and likely returning 1 rather than the number of repeats in all of PID-3.

                          If that’s the case, it would never get to the repeat with the “MR”

                          Try [hl7::count hl7 PID.3] instead

                          Jeff Dinsmore
                          Chesapeake Regional Healthcare

                          • #121460
                            Rin
                            Participant

                              Thanks Jeff,

                              I change that too (as per your comment).

                              for { set i 1 } { $i < [hl7::count hl7 PID.3] } { incr i } {
                              incr pid_counter

                              if { [hl7::get_field hl7 PID.3($i).5] eq “MR” } {
                              set mrn [hl7::get_field hl7 PID.3($i).1]

                              }
                              }

                          • #121461
                            Jeff Dinsmore
                            Participant

                              Plus what Tim said…

                              If you only want to kill if there’s a missing MRN, you’ll need to put a condition in there to check the MRN – once you’ve found it – for validity.

                              You’ll also want to set mrn to “” prior to your loop so that the variable exists in case you don’t find a repeat that contains “MR”.

                              Once you have your variable, you can use it to choose whether or not to kill.

                              Something like

                              if { $mrn eq “” } {

                              puts “mrn is empty”

                              # kill message here
                              } else {

                              puts “mrn is not empty”

                              }

                              Also – a style pointer…

                              Using two variables that are spelled the same, but have different capitalization is confusing.  Distinguishing between errormsg and errorMsg is harder than it needs to be.

                              Make it easy on yourself and whoever will maintain this after you and  use something like “errormsg” and “emailErrorMsg”.

                              Jeff Dinsmore
                              Chesapeake Regional Healthcare

                            • #121465
                              Rin
                              Participant

                                I am not sure what I am doing wrong here:

                                Testing Tool output

                                Please Wait ……
                                Command Issued: hcitpstest -r run -x UTF-8 -L -f nl -c sms_ib_data -e “hcitpstestshowbydisp ” /cloverleaf/cis19.1/integrator/site_cvis/TestMessages/NO_MR_ORDERS-OUT.12.2431267.nl “tpsMissingMRN”
                                Command output:

                                I am here
                                MSH_3:
                                MSH_10: ORDERS-OUT.12.2431267
                                PID_3: X1234785^^^^PI~123456^^^^MR
                                PID_3_1: X1234785
                                PID_3.5: PI
                                [0:TEST] ‘0’ (returned by ‘tpsMissingMRN ‘) does not match { <key> <value> }

                                Checking for leaked handles…
                                Handle Allocated by
                                ====== ============
                                message0 <global>

                                ****************************************

                                Script:

                                ######################################################################
                                # Name: tpsMissingMRN
                                # Purpose: This will pick up relevant details from the ADT and ORM message from Meditech and send an e-mail
                                ###########################################################

                                proc tpsMissingMRN { args } {
                                global HciConnName
                                keylget args MODE mode
                                set ctx “” ; keylget args CONTEXT ctx
                                set module “tpsMissingMRN/$HciConnName/$ctx”
                                set uargs {} ; keylget args ARGS uargs
                                set debug 0
                                catch {keylget uargs DEBUG debug}
                                set dispList {}

                                switch -exact — $mode {
                                start {}

                                run {
                                keylget args MSGID mh
                                echo “I am here”
                                package require hl7
                                set hl7 [hl7::parse_msg [msgget $mh]]
                                set MSH_3 [hl7::get_field hl7 MSH.3]
                                set MSH_5 [hl7::get_field hl7 MSH.5]
                                set MSH_10 [hl7::get_field hl7 MSH.10]
                                set PID_3 [hl7::get_field hl7 PID.3]
                                set PID_3_1 [hl7::get_field hl7 PID.3.1]
                                set PID_3_5 [hl7::get_field hl7 PID.3.5]
                                echo “MSH_3: $MSH_3”
                                echo “MSH_10: $MSH_10”
                                echo “PID_3: $PID_3”
                                echo “PID_3_1: $PID_3_1”
                                echo “PID_3.5: $PID_3_5”

                                set found_mrn “”
                                for { set i 1 } { $i < [hl7::count hl7 PID.3] } { incr i } {
                                incr pid_counter

                                set mrn [hl7::get_field hl7 PID.3($i).1]
                                if { [string equal $mrn “”] eq 1} {
                                lappend dispList “CONTINUE $mh”
                                }
                                set found_mrn $mrn
                                }

                                if {$found_mrn eq “”} {
                                # Now errormsg is accessible here
                                set errormsg “This message has no MRN identifier included.”
                                echo “Killing message with Message Control ID: |$MSH_10| because of $errormsg”

                                } else {
                                lappend dispList “KILL $mh”

                                #SOURCECONN is the name of the thread that initially receives the message (CARD_Orders_from_Meditech)
                                set sourceconn [msgmetaget $mh SOURCECONN]
                                set errormsg “”

                                if {$sourceconn eq “”} {
                                set sourceconn TestTool
                                }}

                                #Create the e-mail
                                ###echo “This is sourceconn: |$sourceconn|”
                                set mailto [tbllookup Missing_MRN_Email $sourceconn]
                                #echo “This is mailto: |$mailto|”
                                set mailfrom [tbllookup Missing_MRN_Email “MailFrom”]
                                set mailhost [tbllookup Missing_MRN_Email “MailHost”]
                                set PORT [tbllookup Missing_MRN_Email “MailPort”]
                                set mailsubjectprefix [tbllookup Missing_MRN_Email “MailSubjectPrefix”]
                                #set subject “$mailsubjectprefix Cloverleaf – Patient X Number: $PID_3_1 – THH message from $MSH_5 i.e. thread $sourceconn with message ID $MSH_10 needs manual intervention!”
                                set subject “$mailsubjectprefix Meditech sent an HL7 Order Message without the MRM number to Cloverleaf”
                                #set errormsg “This is the message ID: $MSH_10 \nThis is the reason why:\n\n$errormsg \n Patient X Number: $PID_3_1 \n Minor Patient ID: $MRG_1_1 \n The Major UHB patient ID is: $PID_4_1 \n The minor UHB Patient ID is: $mrgid\n\n Please check that the UHB ID matches the correct HCA Patient ID.”
                                set errormsg “This is the message ID: $MSH_10 \n\n This is the reason why:\n\n$errormsg \n Patient X Number: (PID.3) $PID_3_1”
                                #echo “This is errormsg: |$errormsg|”
                                set emailbody $errormsg

                                 

                                SendEmailAsAlert $mailto “” $emailbody $subject $mailfrom “” “” $mailhost $PORT “0” “0”
                                ###echo “email should have been send now”

                                }

                                time {}
                                shutdown {}
                                default {
                                error “Unknown mode ‘$mode’ in $module”
                                }

                                return $dispList
                                }
                                }

                              • #121466
                                Jeff Dinsmore
                                Participant

                                  First thing I see is that the “return $dispList” is inside your switch, but not within one of the switch cases.  I expect that would cause a Tcl error that would kill the script.

                                  Are you wanting this script to email an alert and kill the message if it doesn’t have an MR in PID-3 and continue the message if you do find an MR?

                                  Please confirm what you want it to do.

                                  Jeff Dinsmore
                                  Chesapeake Regional Healthcare

                                • #121467
                                  Tim Pancost
                                  Participant

                                    As it stands, if an MRN type id is found, you’re not updating dispList, so you have a message leak.

                                    Looks like somewhere along the way you lost the check if the id retrieved is the MRN.  The section:

                                    set mrn [hl7::get_field hl7 PID.3($i).1]
                                    if { [string equal $mrn “”] eq 1} {
                                    lappend dispList “CONTINUE $mh”
                                    }
                                    set found_mrn $mrn

                                    Should be more like:

                                    if { [hl7::get_field hl7 PID.3.($1).5] eq “MR”} {
                                    set found_mrn [hl7::get_field hl7 PID.3($i).1]
                                    lappend dispList “CONTINUE $mh”
                                    }

                                    And then, later on, remove the “} else {” before the KILL, it’s not supposed to be there:

                                    echo “Killing message with Message Control ID: |$MSH_10| because of $errormsg”

                                    } else {
                                    lappend dispList “KILL $mh”

                                    Should be more like:

                                    echo “Killing message with Message Control ID: |$MSH_10| because of $errormsg”
                                    lappend dispList “KILL $mh”

                                    One more thing, your close brace after your sourceconn check should be after sending the email.  As it stands, it’s always going to try to send an email, missing MRN or not:

                                    if {$sourceconn eq “”} {
                                    set sourceconn TestTool
                                    }}

                                    #Create the e-mail
                                    ###echo “This is sourceconn: |$sourceconn|”
                                    set mailto [tbllookup Missing_MRN_Email $sourceconn]
                                    #echo “This is mailto: |$mailto|”
                                    set mailfrom [tbllookup Missing_MRN_Email “MailFrom”]
                                    set mailhost [tbllookup Missing_MRN_Email “MailHost”]
                                    set PORT [tbllookup Missing_MRN_Email “MailPort”]
                                    set mailsubjectprefix [tbllookup Missing_MRN_Email “MailSubjectPrefix”]
                                    #set subject “$mailsubjectprefix Cloverleaf – Patient X Number: $PID_3_1 – THH message from $MSH_5 i.e. thread $sourceconn with message ID $MSH_10 needs manual intervention!”
                                    set subject “$mailsubjectprefix Meditech sent an HL7 Order Message without the MRM number to Cloverleaf”
                                    #set errormsg “This is the message ID: $MSH_10 \nThis is the reason why:\n\n$errormsg \n Patient X Number: $PID_3_1 \n Minor Patient ID: $MRG_1_1 \n The Major UHB patient ID is: $PID_4_1 \n The minor UHB Patient ID is: $mrgid\n\n Please check that the UHB ID matches the correct HCA Patient ID.”
                                    set errormsg “This is the message ID: $MSH_10 \n\n This is the reason why:\n\n$errormsg \n Patient X Number: (PID.3) $PID_3_1”
                                    #echo “This is errormsg: |$errormsg|”
                                    set emailbody $errormsg

                                     

                                    SendEmailAsAlert $mailto “” $emailbody $subject $mailfrom “” “” $mailhost $PORT “0” “0”
                                    ###echo “email should have been send now”

                                    }

                                    Should be more like:

                                    if {$sourceconn eq “”} {
                                    set sourceconn TestTool
                                    }

                                    #Create the e-mail
                                    ###echo “This is sourceconn: |$sourceconn|”
                                    set mailto [tbllookup Missing_MRN_Email $sourceconn]
                                    #echo “This is mailto: |$mailto|”
                                    set mailfrom [tbllookup Missing_MRN_Email “MailFrom”]
                                    set mailhost [tbllookup Missing_MRN_Email “MailHost”]
                                    set PORT [tbllookup Missing_MRN_Email “MailPort”]
                                    set mailsubjectprefix [tbllookup Missing_MRN_Email “MailSubjectPrefix”]
                                    #set subject “$mailsubjectprefix Cloverleaf – Patient X Number: $PID_3_1 – THH message from $MSH_5 i.e. thread $sourceconn with message ID $MSH_10 needs manual intervention!”
                                    set subject “$mailsubjectprefix Meditech sent an HL7 Order Message without the MRM number to Cloverleaf”
                                    #set errormsg “This is the message ID: $MSH_10 \nThis is the reason why:\n\n$errormsg \n Patient X Number: $PID_3_1 \n Minor Patient ID: $MRG_1_1 \n The Major UHB patient ID is: $PID_4_1 \n The minor UHB Patient ID is: $mrgid\n\n Please check that the UHB ID matches the correct HCA Patient ID.”
                                    set errormsg “This is the message ID: $MSH_10 \n\n This is the reason why:\n\n$errormsg \n Patient X Number: (PID.3) $PID_3_1”
                                    #echo “This is errormsg: |$errormsg|”
                                    set emailbody $errormsg

                                     

                                    SendEmailAsAlert $mailto “” $emailbody $subject $mailfrom “” “” $mailhost $PORT “0” “0”
                                    ###echo “email should have been send now”

                                    }}

                                    HTH,

                                    TIM

                                    Tim Pancost
                                    Trinity Health

                                    • #121468
                                      Rin
                                      Participant

                                        HI Tim,

                                        Thank you, edited but still erroring?

                                        MSH_3: 
                                        MSH_10: ORDERS-OUT.12.2431267
                                        PID_3: X1234785^^^^PI~123456^^^^MR
                                        [0:TEST] Tcl error:
                                        msgId= message0
                                        proc= ‘tpsMissingMRN’
                                        args= ”
                                        result= ‘expected integer but got “=0″‘
                                        errorInfo: ‘
                                        expected integer but got “=0”
                                            while executing
                                        “incr pid_counter  “
                                            (procedure “tpsMissingMRN” line 30)
                                            invoked from within
                                        “tpsMissingMRN {MSGID message0} {CONTEXT sms_ib_data} {ARGS {}} {MODE run} {VERSION 3.0}”‘

                                        *****************************************************************

                                        Script:

                                        ######################################################################
                                        # Name: tpsMissingMRN
                                        # Purpose: This will pick up relevant details from the ADT and ORM message from Meditech and send an e-mail
                                        ###########################################################

                                        proc tpsMissingMRN { args } {
                                        global HciConnName
                                        keylget args MODE mode
                                        set ctx “” ; keylget args CONTEXT ctx
                                        set module “tpsMissingMRN/$HciConnName/$ctx”
                                        set uargs {} ; keylget args ARGS uargs
                                        set debug 0
                                        catch {keylget uargs DEBUG debug}
                                        set dispList {}

                                        switch -exact — $mode {
                                        start {}

                                        run {
                                        keylget args MSGID mh
                                        package require hl7
                                        set hl7 [hl7::parse_msg [msgget $mh]]
                                        set MSH_3 [hl7::get_field hl7 MSH.3]
                                        set MSH_10 [hl7::get_field hl7 MSH.10]
                                        set PID_3 [hl7::get_field hl7 PID.3]
                                        set PID_3_1 [hl7::get_field hl7 PID.3.1]
                                        set PID_3_5 [hl7::get_field hl7 PID.3.5]
                                        echo “MSH_3: $MSH_3”
                                        echo “MSH_10: $MSH_10”
                                        echo “PID_3: $PID_3”

                                        set pid_counter =0
                                        set found_mrn “”
                                        for { set i 1 } { $i < [hl7::count hl7 PID.3] } { incr i } {
                                        incr pid_counter

                                        if { [hl7::get_field hl7 PID.3.($1).5] eq “MR”} {
                                        set found_mrn [hl7::get_field hl7 PID.3($i).1]
                                        lappend dispList “CONTINUE $mh”

                                        } else {
                                        if {[$found_mrn eq “”]}
                                        # Send an error message
                                        set errormsg “This message has no MRN identifier included.”
                                        echo “Killing message with Message Control ID: |$MSH_10| because of $errormsg”
                                        lappend dispList “KILL $mh”
                                        }

                                        #SOURCECONN is the name of the thread that initially receives the message (CARD_Orders_from_Meditech)
                                        set sourceconn [msgmetaget $mh SOURCECONN]
                                        set errormsg “”

                                        if {$sourceconn eq “”} {
                                        set sourceconn TestTool
                                        }

                                        #Create the e-mail
                                        ###echo “This is sourceconn: |$sourceconn|”
                                        set mailto [tbllookup Missing_MRN_Email $sourceconn]
                                        #echo “This is mailto: |$mailto|”
                                        set mailfrom [tbllookup Missing_MRN_Email “MailFrom”]
                                        set mailhost [tbllookup Missing_MRN_Email “MailHost”]
                                        set PORT [tbllookup Missing_MRN_Email “MailPort”]
                                        set mailsubjectprefix [tbllookup Missing_MRN_Email “MailSubjectPrefix”]
                                        #set subject “$mailsubjectprefix Cloverleaf – Patient X Number: $PID_3_1 – THH message from $MSH_5 i.e. thread $sourceconn with message ID $MSH_10 needs manual intervention!”
                                        set subject “$mailsubjectprefix Meditech sent an HL7 Order Message without the MRM number to Cloverleaf”
                                        #set errormsg “This is the message ID: $MSH_10 \nThis is the reason why:\n\n$errormsg \n Patient X Number: $PID_3_1 \n Minor Patient ID: $MRG_1_1 \n The Major UHB patient ID is: $PID_4_1 \n The minor UHB Patient ID is: $mrgid\n\n Please check that the UHB ID matches the correct HCA Patient ID.”
                                        set errormsg “This is the message ID: $MSH_10 \n\n This is the reason why:\n\n$errormsg \n Patient X Number: (PID.3) $PID_3”
                                        #echo “This is errormsg: |$errormsg|”
                                        set emailbody $errormsg

                                        SendEmailAsAlert $mailto “” $emailbody $subject $mailfrom “” “” $mailhost $PORT “0” “0”
                                        ###echo “email should have been send now”

                                        }}

                                        time {}
                                        shutdown {}
                                        default {
                                        error “Unknown mode ‘$mode’ in $module”
                                        }

                                        return $dispList
                                        }
                                        }

                                    • #121469
                                      Rin
                                      Participant

                                        Hi Tim ,

                                        Please IGNORE the above,

                                        I have added a new error below:

                                        Error:

                                        MSH_10: ORDERS-OUT.12.2431267
                                        PID_3: X1234785^^^^PI~123456^^^^MR
                                        [0:TEST] Tcl error:
                                        msgId= message0
                                        proc= ‘tpsMissingMRN’
                                        args= ”
                                        result= ‘can’t read “1”: no such variable’
                                        errorInfo: ‘
                                        can’t read “1”: no such variable
                                            while executing
                                        “hl7::get_field hl7 PID.3.($1).5”
                                            (procedure “tpsMissingMRN” line 30)
                                            invoked from within
                                        “tpsMissingMRN {MSGID message0} {CONTEXT sms_ib_data} {ARGS {}} {MODE run} {VERSION 3.0}”‘

                                        **********************************

                                        SCRIPT:

                                        ######################################################################
                                        # Name: tpsMissingMRN
                                        # Purpose: This will pick up relevant details from the ADT and ORM message from Meditech and send an e-mail
                                        # to people decodefined for Missing PID-3 in table Missing_MRN_Email.tbl
                                        #############################################################

                                        proc tpsMissingMRN { args } {
                                        global HciConnName
                                        keylget args MODE mode
                                        set ctx “” ; keylget args CONTEXT ctx
                                        set module “tpsMissingMRN/$HciConnName/$ctx”
                                        set uargs {} ; keylget args ARGS uargs
                                        set debug 0
                                        catch {keylget uargs DEBUG debug}
                                        set dispList {}

                                        switch -exact — $mode {
                                        start {}

                                        run {
                                        keylget args MSGID mh
                                        package require hl7
                                        set hl7 [hl7::parse_msg [msgget $mh]]
                                        set MSH_10 [hl7::get_field hl7 MSH.10]
                                        set PID_3 [hl7::get_field hl7 PID.3]
                                        set PID_3_1 [hl7::get_field hl7 PID.3.1]
                                        set PID_3_5 [hl7::get_field hl7 PID.3.5]
                                        echo “MSH_10: $MSH_10”
                                        echo “PID_3: $PID_3”

                                        set pid_counter 0
                                        set found_mrn “”
                                        for { set i 1 } { $i < [hl7::count hl7 PID.3] } { incr i } {
                                        incr pid_counter

                                        if { [hl7::get_field hl7 PID.3.($1).5] eq “MR”} {
                                        set found_mrn [hl7::get_field hl7 PID.3($i).1]
                                        lappend dispList “CONTINUE $mh”
                                        echo found mrn $found_mrn

                                        } else {
                                        if {[$found_mrn eq “”]}
                                        # Send an error message
                                        set errormsg “This message has no MRN identifier included.”
                                        echo “Killing message with Message Control ID: |$MSH_10| because of $errormsg”
                                        lappend dispList “KILL $mh”
                                        }

                                        #SOURCECONN is the name of the thread that initially receives the message (CARD_Orders_from_Meditech)
                                        set sourceconn [msgmetaget $mh SOURCECONN]
                                        set errormsg “”

                                        if {$sourceconn eq “”} {
                                        set sourceconn TestTool
                                        }

                                        #Create the e-mail
                                        ###echo “This is sourceconn: |$sourceconn|”
                                        set mailto [tbllookup Missing_MRN_Email $sourceconn]
                                        #echo “This is mailto: |$mailto|”
                                        set mailfrom [tbllookup Missing_MRN_Email “MailFrom”]
                                        set mailhost [tbllookup Missing_MRN_Email “MailHost”]
                                        set PORT [tbllookup Missing_MRN_Email “MailPort”]
                                        set mailsubjectprefix [tbllookup Missing_MRN_Email “MailSubjectPrefix”]
                                        #set subject “$mailsubjectprefix Cloverleaf – Patient X Number: $PID_3_1 – THH message from $MSH_5 i.e. thread $sourceconn with message ID $MSH_10 needs manual intervention!”
                                        set subject “$mailsubjectprefix Meditech sent an HL7 Order Message without the MRM number to Cloverleaf”
                                        #set errormsg “This is the message ID: $MSH_10 \nThis is the reason why:\n\n$errormsg \n Patient X Number: $PID_3_1 \n Minor Patient ID: $MRG_1_1 \n The Major UHB patient ID is: $PID_4_1 \n The minor UHB Patient ID is: $mrgid\n\n Please check that the UHB ID matches the correct HCA Patient ID.”
                                        set errormsg “This is the message ID: $MSH_10 \n\n This is the reason why:\n\n$errormsg \n Patient X Number: (PID.3) $PID_3”
                                        #echo “This is errormsg: |$errormsg|”
                                        set emailbody $errormsg

                                        SendEmailAsAlert $mailto “” $emailbody $subject $mailfrom “” “” $mailhost $PORT “0” “0”
                                        ###echo “email should have been send now”

                                        }}

                                        time {}
                                        shutdown {}
                                        default {
                                        error “Unknown mode ‘$mode’ in $module”
                                        }

                                        return $dispList
                                        }
                                        }

                                      • #121470
                                        Charlie Bursell
                                        Participant

                                          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 🙂

                                        • #121471
                                          Rin
                                          Participant

                                            Finally works now!
                                            Many thanks to everyone.

                                            If anybody has any TCL with Cloverleaf training guide or good tcl example re-usable scripts, please let me know.

                                             

                                            ######################################################################
                                            # Name: tpsMissingMRN
                                            # Purpose: This will pick up relevant details from the ADT and ORM message from Meditech and send an e-mail

                                            #############################################################

                                            proc tpsMissingMRN { args } {
                                            global HciConnName
                                            keylget args MODE mode
                                            set ctx “” ; keylget args CONTEXT ctx
                                            set module “tpsMissingMRN/$HciConnName/$ctx”
                                            set uargs {} ; keylget args ARGS uargs
                                            set debug 0
                                            catch {keylget uargs DEBUG debug}
                                            set dispList {}

                                            switch -exact — $mode {
                                            start {}

                                            run {
                                            keylget args MSGID mh
                                            package require hl7
                                            set hl7 [hl7::parse_msg [msgget $mh]]
                                            set MSH_10 [hl7::get_field hl7 MSH.10]
                                            set PID_3 [hl7::get_field hl7 PID.3]
                                            set PID_3_1 [hl7::get_field hl7 PID.3.1]
                                            set PID_3_5 [hl7::get_field hl7 PID.3.5]
                                            echo “MSH_10: $MSH_10”
                                            echo “PID_3: $PID_3”

                                            set pid_counter 0
                                            #SOURCECONN is the name of the thread that initially receives the message (CARD_Orders_from_Meditech)
                                            set sourceconn [msgmetaget $mh SOURCECONN]
                                            set errormsg “”

                                            if {$sourceconn eq “”} {
                                            set sourceconn TestTool
                                            }

                                            for { set i 1 } { $i <= [hl7::count hl7 PID.3] } { incr i } {

                                            echo Hi entering IF statement
                                            if { [hl7::get_field hl7 PID.3($i).5] eq “MR”} {
                                            echo pid_counter before $pid_counter
                                            incr pid_counter
                                            echo pid_counter after $pid_counter

                                            }

                                            }
                                            if {$pid_counter eq 0} {
                                            # Send an error message
                                            set errormsg “This message has no MRN identifier included.”
                                            echo “Killing message with Message Control ID: |$MSH_10| because of $errormsg”
                                            lappend dispList “KILL $mh”

                                            #Create the e-mail
                                            ###echo “This is sourceconn: |$sourceconn|”
                                            set mailto [tbllookup Missing_MRN_Email $sourceconn]
                                            echo “This is mailto: |$mailto|”
                                            set mailfrom [tbllookup Missing_MRN_Email “MailFrom”]
                                            set mailhost [tbllookup Missing_MRN_Email “MailHost”]
                                            set PORT [tbllookup Missing_MRN_Email “MailPort”]
                                            set mailsubjectprefix [tbllookup Missing_MRN_Email “MailSubjectPrefix”]
                                            #set subject “$mailsubjectprefix Cloverleaf – Patient X Number: $PID_3_1 – THH message from $MSH_5 i.e. thread $sourceconn with message ID $MSH_10 needs manual intervention!”
                                            set subject “$mailsubjectprefix Meditech sent an HL7 Order Message without the MRM number to Cloverleaf”
                                            #set errormsg “This is the message ID: $MSH_10 \nThis is the reason why:\n\n$errormsg \n Patient X Number: $PID_3_1 \n Minor Patient ID: $MRG_1_1 \n The Major UHB patient ID is: $PID_4_1 \n The minor UHB Patient ID is: $mrgid\n\n Please check that the UHB ID matches the correct HCA Patient ID.”
                                            set errormsg “This is the message ID: $MSH_10 \n\n This is the reason why:\n\n$errormsg \n Patient X Number: (PID.3) $PID_3”
                                            #echo “This is errormsg: |$errormsg|”
                                            set emailbody $errormsg

                                            SendEmailAsAlert $mailto “” $emailbody $subject $mailfrom “” “” $mailhost $PORT “0” “0”
                                            ###echo “email should have been send now”

                                            } else {
                                            lappend dispList “CONTINUE $mh”
                                            }

                                            }

                                            time {}
                                            shutdown {}
                                            default {
                                            error “Unknown mode ‘$mode’ in $module”
                                            }
                                            }

                                            return $dispList
                                            }

                                             

                                          • #121472
                                            David Barr
                                            Participant

                                              You don’t need this loop:

                                              for { set i 1 } { $i <= [hl7::count hl7 PID.3] } { incr i } {

                                              With the library you can do this:

                                              set mrn [hl7::get_field hl7 PID.3(5=MR).1]

                                               

                                              • This reply was modified 6 months, 2 weeks ago by David Barr.
                                              • #121474
                                                Rin
                                                Participant

                                                  Thanks David,

                                                  I will try it.

                                              • #121475
                                                Rin
                                                Participant

                                                  Hi David,

                                                  I replaced

                                                  for { set i 1 } { $i <= [hl7::count hl7 PID.3] } { incr i } {

                                                  with your suggested line,

                                                  set mrn [hl7::get_field hl7 PID.3(5=MR).1]

                                                  but it errored?

                                                • #121476
                                                  David Barr
                                                  Participant

                                                    Try replacing all these lines:

                                                    set pid_counter 0
                                                    set found_mrn “”
                                                    for { set i 1 } { $i < [hl7::count hl7 PID.3] } { incr i } {
                                                    incr pid_counter

                                                    if { [hl7::get_field hl7 PID.3.($1).5] eq “MR”} {
                                                    set found_mrn [hl7::get_field hl7 PID.3($i).1]
                                                    lappend dispList “CONTINUE $mh”
                                                    echo found mrn $found_mrn

                                                    } else {
                                                    if {[$found_mrn eq “”]}
                                                    # Send an error message
                                                    set errormsg “This message has no MRN identifier included.”
                                                    echo “Killing message with Message Control ID: |$MSH_10| because of $errormsg”
                                                    lappend dispList “KILL $mh”
                                                    }

                                                     

                                                     

                                                    with this:

                                                     

                                                    set found_mrn [hl7::get_field hl7 PID.3(5=MR).1]

                                                    if { $found_mrn ne “” } {
                                                    lappend dispList “CONTINUE $mh”
                                                    echo found mrn $found_mrn

                                                    } else {

                                                    # Send an error message
                                                    set errormsg “This message has no MRN identifier included.”
                                                    echo “Killing message with Message Control ID: |$MSH_10| because of $errormsg”
                                                    lappend dispList “KILL $mh”
                                                    }

                                                     

                                                    • This reply was modified 6 months, 2 weeks ago by David Barr.
                                                    • #121478
                                                      Rin
                                                      Participant
                                                        Hi David,
                                                        This has worked without a for loop.
                                                        Thank you, nice and simple solution.

                                                        proc tpsMissingMRN_1 { args } {
                                                        global HciConnName
                                                        keylget args MODE mode
                                                        set ctx “” ; keylget args CONTEXT ctx
                                                        set module “tpsMissingMRN/$HciConnName/$ctx”
                                                        set uargs {} ; keylget args ARGS uargs
                                                        set debug 0
                                                        catch {keylget uargs DEBUG debug}
                                                        set dispList {}

                                                        switch -exact — $mode {
                                                        start {}

                                                        run {
                                                        keylget args MSGID mh
                                                        package require hl7
                                                        set hl7 [hl7::parse_msg [msgget $mh]]
                                                        set MSH_10 [hl7::get_field hl7 MSH.10]
                                                        set PID_3 [hl7::get_field hl7 PID.3]
                                                        set PID_3_1 [hl7::get_field hl7 PID.3.1]
                                                        set PID_3_5 [hl7::get_field hl7 PID.3.5]
                                                        set OBR_2 [hl7::get_field hl7 OBR.2]
                                                        echo “MSH_10: $MSH_10”
                                                        echo “OBR_2: $OBR_2”

                                                        set found_mrn [hl7::get_field hl7 PID.3(5=MR).1]

                                                        if { $found_mrn ne “” } {
                                                        lappend dispList “CONTINUE $mh”
                                                        echo found mrn $found_mrn

                                                        } else {

                                                        # Send an error message
                                                        set errormsg “This message has no MRN identifier included.”
                                                        echo “Killing message with Message Control ID: |$MSH_10| because of $errormsg”
                                                        lappend dispList “KILL $mh”
                                                        }

                                                        #SOURCECONN is the name of the thread that initially receives the message (CARD_Orders_from_Meditech)
                                                        set sourceconn [msgmetaget $mh SOURCECONN]
                                                        set errormsg “”

                                                        if {$sourceconn eq “”} {
                                                        set sourceconn TestTool
                                                        }

                                                        #Create the e-mail
                                                        ###echo “This is sourceconn: |$sourceconn|”
                                                        set mailto [tbllookup Missing_MRN_Email $sourceconn]
                                                        echo “This is mailto: |$mailto|”
                                                        set mailfrom [tbllookup Missing_MRN_Email “MailFrom”]
                                                        set mailhost [tbllookup Missing_MRN_Email “MailHost”]
                                                        set PORT [tbllookup Missing_MRN_Email “MailPort”]
                                                        set mailsubjectprefix [tbllookup Missing_MRN_Email “MailSubjectPrefix”]
                                                        set subject “$mailsubjectprefix Meditech sent an HL7 Order Message without the MRM number to Cloverleaf”
                                                        set errormsg “This is the message ID: $MSH_10 \n\n This is the reason why:\n\n$errormsg \n\n The Order Id is : (OBR.2) $OBR_2”
                                                        #echo “This is errormsg: |$errormsg|”
                                                        set emailbody $errormsg

                                                        SendEmailAsAlert $mailto “” $emailbody $subject $mailfrom “” “” $mailhost $PORT “0” “0”
                                                        ###echo “email should have been send now”

                                                        } else {
                                                        lappend dispList “CONTINUE $mh”
                                                        }

                                                        time {}
                                                        shutdown {}
                                                        default {
                                                        error “Unknown mode ‘$mode’ in $module”
                                                        }
                                                        }

                                                        return $dispList
                                                        }

                                                         

                                                         

                                                    • #121479
                                                      Rin
                                                      Participant

                                                        Hi David,

                                                        Just to clarify,

                                                        (1) This line (.1):

                                                        set found_mrn [hl7::get_field hl7 PID.3(5=MR).1]

                                                        Does “.1” mean PID3.5.1 field value?

                                                        (2) I know I am not using the “for” look in the code above anymore but,

                                                        for { set i 1 } { $i <= [hl7::count hl7 PID.3] } { incr i } {

                                                        Does the above mean that loop through the repitions of PID-3 field and incremented by 1 after each loop i.e. after every “~” in PID-3?

                                                        • #121484
                                                          David Barr
                                                          Participant

                                                            (1) Yes.

                                                            (2) Yes. The “count” proc tells you how many repetitions of the field are present in the message.

                                                            (3) I think your brace alignment is off. You need to remove the brace on the line after lappend dispList “KILL $mh”. As it is right now, all the code below that is getting run regardless of whether or not there’s an MRN. And you need to replace these lines:

                                                            } else {
                                                            lappend dispList “CONTINUE $mh”
                                                            }

                                                            With two closing braces (}}). One brace to close the if statement and one to close the “run” section of the switch. The “CONTINUE” here is redundant with the one above it and shouldn’t be included.

                                                             

                                                        • #121480
                                                          Rin
                                                          Participant

                                                            Also, 1 silly qn please,

                                                            Qn #3:

                                                            Why is the “errormsg” set at the top does not get displayed in an email?

                                                            I tried changing the variable to an “error” but still the same?

                                                            set errormsg “This is the message ID: $MSH_10 \n\n This is the reason why:\n\n $errormsg \n\n The Order Id is : (OBR.2) $OBR_2”

                                                            *****************************************

                                                            The email only shows the details below:

                                                            “This is the message ID: ORDERS-OUT.12.2431267

                                                             This is the reason why:

                                                             The Order Id is : (OBR.2) CARD20240730-0002COCLB”

                                                             

                                                            In addition to the above, I would also expect the line below to be displayed in my email:

                                                            “This message has no MRN identifier included.”

                                                            • #121490
                                                              Rin
                                                              Participant

                                                                Thank you David.

                                                          Viewing 17 reply threads
                                                          • You must be logged in to reply to this topic.