Weird looking message

Clovertech Forums Read Only Archives Cloverleaf Cloverleaf Weird looking message

  • Creator
    Topic
  • #51364
    Kevin Crist
    Participant

      I am working on a tclproc and somehow when i run the testing tool i get a very weird looking message. Can someone point me in the right direction, this one is new to me. Thanks.

      value = 2005

      CONTINUE: ‘MSH|^~&|REG|GSH||GSH|20091118083304||ADT^A01|411773|D|2.3

      EVN|A01|20091118083304|||JKC^CRIST^KEVIN|20091118083304

      PID|||002001|21783|LIGHT^COORS||19900404|M||WHIT|444

      ROCKY

      MTN

      DRIVE^^BICKNELL^IN^47512|KNOX||||D||9000001552|303-21-4521

      PD1||||2005^YANG^RONG^^^MD||||||||N

      PV1||I|3E^324^2|9|||0839^BRIDGES^JANE^M^^MD||1539^BEAR^JOHNNY^^^MD|MED||||9|||0686^CARANDANG^REYNALDO^^^MD|MED|2242|600|||||||||N||||||||||||A|||20091118083140

      PV2||S|THE

      MOST

      AWESOME

      BEER

      EVER|||||||||||||||||||||A||20091112

      GT1|1||LIGHT^COORS||444

      ROCKY

      MTN

      DRIVE^^BICKNELL^IN^47512|||19900404|M||P|303-21-4521|||1|||||||||||||||D

      IN1|1||803|SAGAMORE

      HEALTH

      NETWORK|PO

      BOX

      6051^^INDIANAPOLIS^IN^46206|||||||||||LIGHT^COORS|18|19900404|444

      ROCKY

      MTN

      DRIVE^^BICKNELL^IN^47512||||||||||||||||||||||||M

      IN2||303-21-4521||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||18

      IN1|2||100|SELF

      PAY||||||||||||LIGHT^COORS|18|19900404|||||||||||||||||||||||||M

      IN2||303-21-4521||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||18

      ZAD|NO

      Below is my proc so far…

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

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

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

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

      # Name: tpsKill_EHR_AllsDr

      # Purpose: This tps tclproc will check the Alls_EHR_Dr.tbl for dr codes. If the code is

      # in the table the pass the message on to the EHR application or KILL the message

      # PD1-4: Primary Care

      # PV1-7: Attending

      # PV1-8: Reffering

      # PV1-9: Consulting

      # PV1-17: Admitting

      # ORC-12: Ordering

      # OBR-16: Ordering

      #

      # 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:

      #          Continues the modified messages

      # OR

      # Continues un-modified message if the segment is missing

      #

      # Created: Kevin Crist 11/23/2009

      #

      #

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

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

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

      proc tpsKill_EHR_AllsDr { args } {

       

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

      # Initialize Variables Used

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

      set dispList { }  ;# Disposition List Returned to Engine

      set fldSep “” ;# Field Seperator – get from MSH

      set subSep “” ;# SubField Seperator – get from MSH

      set repSep “” ;# Repeating Field Seperator – get from MSH

      set segList

    • ;# Message Segments in List Form

      set fldList

    • ;# Fields of a segment in List Form

      set repList

    • ;# The Repitions of the Field in List Form

      set subfldList

    • ;# Sub-Fields of a Field in List Form

      set PD1pos -1 ;# Position of PD1 Segment in msg

      set PV1pos -1 ;# Position of PV1 Segment in msg

      set ORCpos -1 ;# Position of ORC Segment in msg

      set OBRpos -1 ;# Position of OBR Segment in msg

      set PrimaryPos 4 ;# Position of Primary Dr

      set AttendPos 7 ;# Position of Attending Dr

      set RefferPos 8 ;# Position of Reffering Dr

      set ConsultPos 9 ;# Position of Consulting Dr

      set AdmitPos 17 ;# Posiiton of Admitting Dr

      set ORCOrderPos 12 ;# Position of Ordering Dr in ORC seg

      set OBROrderPos 16 ;# Position of Ordering Dr in OBR seg

      set PosList

    • ;# List of Position of Segments in msg  

       

       set table “Alls_EHR_Dr” ;# Table with the Dr. Number in it

       

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

      # Switch based on what mode the engine was in when it called the procedure

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

       

       

         keylget args MODE mode              

       

      #   set dispList {} ;# Nothing to return

         switch -exact — $mode {

             start { }

                 

             run {

       

                 set mh [keylget args MSGID] ;# Get message handle from args

                 set msg [msgget $mh] ;# Get a copy of the message

                 

                 set fldSep [string index $msg 3] ;# Field Seperator

            set subSep [string index $msg 4] ;# SubField Seperator

            set repSep [string index $msg 5] ;# Repeating Field Seperator

           

            set segList [split $msgr] ;# Split message into segList

           

            set disp “KILL” ;# Default disposition to KILL

           

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

      # Find Position of Segements that contain Dr ID Numbers

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

      lappend PosList [lsearch -regexp $segList {^PD1}]

      lappend PosList [lsearch -regexp $segList {^PV1}]

      lappend PosList [lsearch -regexp $segList {^ORC}]

      lappend PosList [lsearch -regexp $segList {^OBR}]

           

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

      # Process Each Segement that might contain a Dr ID Number

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

           

            foreach segPos $PosList { ;# For each Seg in List

            if { $segPos > 0 } { ;# If the segment was found

            ;# Split Seg into List of Fields

            set fldList [split [lindex $segList $segPos] $fldSep]

           

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

      # For each of the possible Dr Fields do the same thing

      # If the field exist

      # 1) Every Dr Field can have repitions

      # Split the field into a list of each repition

      # 2) Call the subroutine that checks the Dr ID number, in each repition,

      #

      #

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

       

        switch -exact [lindex $fldList 0] {

        PD1 {

      if { [llength $fldList] >= [expr $PrimaryPos + 1] } {

      set repList [split [lindex $fldList $PrimaryPos] $repSep]

      foreach rep $repList {

      set val_1st [split $rep $subSep]

      set value [lindex $val_1st 0]

      echo “value = $value”

      set PrimaryPosVal [tbllookup $table $value]

      if { $PrimaryPosVal eq “CONTINUE” } {

        set disp “CONTINUE”

      }

      }

      }

      }

       

       

       

       

        }

       

        }

       

      }

        msgset $mh [join $segList r]

       

        lappend dispList “$disp $mh”

       

        }

       

             time {

                 # Timer-based processing

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

             }

             

             shutdown {

         # Doing some clean-up work

      }

         }

       

         return $dispList

      }

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