Re: Replacing HL7 Segments

Clovertech Forums Read Only Archives Cloverleaf Cloverleaf Replacing HL7 segments 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

    }