Reply To: Looking for a script to parse HL7 escape sequences

Homepage Clovertech Forums Read Only Archives Cloverleaf Cloverleaf Looking for a script to parse HL7 escape sequences Reply To: Looking for a script to parse HL7 escape sequences

#56296
Jason Alexander
Participant

David Barr from MedStar Health out in Maryland was kind enough to send me the following proc to do what is needed.  You need to pass in the delimiter list as well as the string to process.

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

# Name:         unescape_HL7

# Purpose:      Remove HL7 escape sequences and replace them with

#               the actual characters represented (including escaped

#               hexadecimal values)

# Args:         Two strings required

#               input – the actual string to be unescaped

#               delimiters – the delimiters as foudn in MSH-1 and MSH-2

#

# Comments:    

proc unescape_HL7 { input delimiters } {

   set delim_f [string range $delimiters 0 0]

   set delim_s [string range $delimiters 1 1]

   set delim_r [string range $delimiters 2 2]

   set delim_e [string range $delimiters 3 3]

   set delim_t [string range $delimiters 4 4]

   set output “”

   while {[ string length $input ]} {

     set char [string range $input 0 0]

     set input [string range $input 1 end]

     #echo processing $char

     if { [string equal $char $delim_e] } {

         set esc “”

         set char [string range $input 0 0]

         set input [string range $input 1 end]

         while {![string equal $char $delim_e]} {

           append esc $char

           set char [string range $input 0 0]

           set input [string range $input 1 end]

         }

         #echo “escape sequence: $esc”

         switch -exact [string range $esc 0 0] {

           “F” {

               append output $delim_f

           }

           “E” {

               append output $delim_e

           }

           “S” {

               append output $delim_s

           }

           “T” {

               append output $delim_t

           }

           “R” {

               append output $delim_r

           }

           “X” {

               scan [string range $esc 1 end] “%x” x

               append output [format “%c” $x]

           }

           default {

               #echo unknown escape sequence $esc

           }

         }

     } else {

         append output $char

     }

   }

   return $output

}

Forum Statistics

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