Re: Replacing HL7 Segments

#56287
Alise Blankenship
Participant

Hi David,

We do this for A44s changed to A35s. I am including an attachment of the tcl code we use. Try this.

Good Luck.

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

# Name:         Cloverleaf Template

# Purpose:      

# UPoC type:    tps

# Args:         tps keyedlist containing the following keys:

#               MODE    run mode (“start”, “run” or “time”)

#               MSGID   message handle

#               ARGS    user-supplied arguments:

#                      

#

# Returns: tps disposition list:

#          

#

proc A44_to_A35 { args } {

   keylget args MODE mode                      ;# Fetch mode

   set dispList {}                             ;# Nothing to return

   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 msg [msgget $mh]

           set addMsg [msgcreate -class engine -type data -recover]

           set splitMsg [split $msg r]

           set msgTest [lindex [split [lindex [split [lindex $splitMsg [lsearch

-glob $splitMsg “MSH|*”]] |] 8] ^] 1]

             if {$msgTest == “A44”} {

             set test [lindex [split [lindex $splitMsg [lsearch -glob $splitMsg

“PV1|*”]] |] 2]

               foreach seg $splitMsg {

                 set splitSeg [split $seg |]

                 set segID [string range $seg 0 2]

                   switch -exact $segID {

                       MSH { regsub -all A44 $seg A35 newSeg

                             regsub -all A44 $seg $type addSeg

                             append mergeMsg $newSeg[format %c 13]

                             append adtMsg $addSeg[format %c 13]

                       }

                       EVN { regsub -all A44 $seg A35 newSeg

                             regsub -all A44 $seg $type addSeg

                             append mergeMsg $newSeg[format %c 13]

                             append adtMsg $addSeg[format %c 13]

                       }

                       PID { append mergeMsg $seg[format %c 13]

                             append adtMsg $seg[format %c 13]

                       }

                       PV1 { append mergeMsg $seg[format %c 13]

                             append adtMsg $seg[format %c 13]

                       }

                       DG1 { append mergeMsg $seg[format %c 13]

                             append adtMsg $seg[format %c 13]

                       }

                       MRG { append mergeMsg $seg[format %c 13]

                       }

                   }

               }

            set mergeMsg [string trimright $mergeMsg r]

            set adtMsg [string trimright $adtMsg r]

          #  set fullMsg $adtMsgn$mergeMsgn

            msgset $mh $adtMsg

            msgset $addMsg $mergeMsg

            lappend dispList “CONTINUE $mh”

            lappend dispList “CONTINUE $addMsg”

          } else { lappend dispList “CONTINUE $mh” }

       }

       time {

           # Timer-based processing

           # N.B.: there may or may not be a MSGID key in args

       }

       default {

           error “Unknown mode ‘$mode’ in blank”

       }

   }

   return $dispList

}

Forum Statistics

Registered Users
5,116
Forums
28
Topics
9,292
Replies
34,432
Topic Tags
286
Empty Topic Tags
10