How to filter A01 message when the room or bed is missing

Clovertech Forums Read Only Archives Cloverleaf Cloverleaf How to filter A01 message when the room or bed is missing

  • Creator
    Topic
  • #55488
    Amdy Diene
    Participant

      Hi all, I need a script to filter messages A01, A02, A12, A13, when the room or bed is missing from the message.

      Thank you

    Viewing 7 reply threads
    • Author
      Replies
      • #85536
        Linus Betschart
        Participant

          if you are doing it with an xlate you can just do a bulk copy, then an IF statement, and within the IF statement (missing bed) you do a suppress action. thats it.  ðŸ™‚

        • #85537
          Amdy Diene
          Participant

            Thank you Linus, but I was looking for an sample of a script that does that.  I am new to using Cloverleaf again after several years since version 3.7.

          • #85538
            Kevin Crist
            Participant

              Hi Andy,

              Not sure of your level of tcl but here is one that you should just have to modify a little to hopefully meet your needs or get started at least.

              Code:

              ######################################################################
              # Name: tpsKillA31WithPV1Empty
              #
              # Purpose: Kills all A31’s going to CareManager that have no information
              #           in the PV1 segment..
              #
              # UPoC type: tps
              # Args: tps keyedlist containing the following keys:
              #       MODE    run mode (”start”, “run” or “time”)
              #       MSGID   message handle
              #
              # Returns: tps disposition list:
              #          
              # KILL when ADT = A31 and patient has no PV1 information  
              # CONTINUE all others
              #

              proc tpsKillA31WithPV1Empty { args } {
              keylget args MODE mode               ;# Fetch mode
                 
                  global HciConnName
                  set procName “tpsKillA31WithPV1Empty”
              set dispList {} ;# Nothing to return
              set foundA31 {}
              set assignedPatientLocation {}

              switch -exact — $mode {
              start {
              # Perform special init functions
              # N.B.: there may or may not be a MSGID key in args
              }

              run {
              # ‘run’ mode always has a MSGID; fetch and process it
              keylget args MSGID mh

              set msgtext  [msgget $mh]
              set fieldsep [crange $msgtext 3 3]
              set subfieldsep [crange $msgtext 4 4]
              set segments [split $msgtext “r”]

              foreach seg $segments {
                           if {[cequal [crange $seg 0 2] “MSH”]} {
                        # this segment (seg) is MSH
                        # get the field data
                           set data [split $seg $fieldsep]
                           set field [lindex $data 8]
                           set data [split $field $subfieldsep]
                           set triggerType [lindex $data 0]
                           set triggerEvent [lindex $data 1]

                   # Check for an ADT and A31 trigger Event.
                     if {[cequal $triggerType “ADT”] && [cequal $triggerEvent “A31″]} then {
                     set foundA31 “YES”
              #echo foundA31: $foundA31
                     }
               
                } elseif {[cequal [crange $seg 0 2] “PID”]} {
                        # this segment (seg) is PID
                           set data [split $seg $fieldsep]
                           set patientAccount [lindex $data 18]
                           set patientName [lindex $data 5]
               
                } elseif {[cequal [crange $seg 0 2] “PV1″]} {
                        # this segment (seg) is PV1
                           set data [split $seg $fieldsep]
                     #      set patientType [lindex $data 2]
                           set assignedPatientLocation [lindex $data 2]

                   # Check for a Assigned Patient Location.
                     if {[cequal $assignedPatientLocation “”]} then {
                     set assignedPatientLocation “NO”
                   
                                             }
                                        }
                    }

                   #
                   # If the ADT trigger event is an A31 and the assigned patient location is not loaded then
                   # kill the message, otherwise continue it.  
                   #

                   if {[cequal $foundA31 “YES”] && [cequal $assignedPatientLocation “NO”]} {
              #        puts $msgtext
                               puts “$HciConnName\$procName – KILLING A31 for patient: $patientName – $patientAccount”
                               echo
                                       lappend dispList “KILL $mh”
              #              } else {
              #        puts $msgtext
              #                  puts “$HciConnName\$procName – CONTINUING ADT for Patient: $patientName – $patientAccount”
              #                  echo
                               lappend dispList “CONTINUE $mh”
                       }
                     return $dispList
              }

              time {
              # Timer-based processing
              # N.B.: there may or may not be a MSGID key in args
              }

              shutdown {
                 # Doing some clean-up work
              }

              default {
              error “Unknown mode ‘$mode’ in tpsKillA31WithPV1Empty”
              }
              }

              return $dispList
              }

            • #85539
              Amdy Diene
              Participant

                This is what I was looking for.

                Thanks

              • #85540
                David Barr
                Participant

                  You could use my expression filter proc and call it with these arguments:

                  Code:

                  { EXPRESSION { (%PV1.3.2% ne ” && %PV1.3.3% ne ”) || [lsearch -exact { A01 A02 A12 A13 } %MSH.9.2%] < 0 } }

                • #85541
                  Kevin Crist
                  Participant

                    can i get a copy by chance? That looks interesting.

                    thanks.

                  • #85542
                    Amdy Diene
                    Participant

                      Dave, I got your EXPRESSION filter, thank you.

                    • #85543
                      David Barr
                      Participant

                        See this thread for more information:

                        https://usspvlclovertch2.infor.com/viewtopic.php?t=6666

                        This also requires that you install the HL7 parser from this thread:

                        https://usspvlclovertch2.infor.com/viewtopic.php?t=4886

                        I normally would call this on the route from your inbound thread to your outbound thread.

                    Viewing 7 reply threads
                    • The forum ‘Cloverleaf’ is closed to new topics and replies.