HLCSRPT1 ;ISC-SF/RAH-TRANS LOG PENDING MSG LIST;03/01/2010  14:59 ;08/25/2010
 ;;1.6;HEALTH LEVEL SEVEN;**19,50,107,145,151**;Oct 13, 1995;Build 1
 ;Per VHA Directive 2004-038, this routine should not be modified.
 ;
 Q
 ;
EN ; Entry Point for Pending Message Search.
 D LNKSRCH Q:$D(STOP)
 I HLCSLS=1 D SEARCH1 Q
 D SEARCH2
 Q
 ;
 ;
SEARCH1 ;
 W !!," . . . PLEASE WAIT, THIS CAN TAKE AWHILE . . .",!
 S HLCSI=0,HLCSIO="" S HLCSLN=0
 F  S HLCSIO=$O(^HLMA("AC",HLCSIO)) Q:(HLCSIO="")  D
 . S HLCSN=HLCSI,HLCSJ=0
 . F  S HLCSJ=$O(^HLMA("AC",HLCSIO,HLCSLINK,HLCSJ)) Q:(HLCSJ="")  D
 .. I '$D(^HLMA(HLCSJ,0)) Q
 .. I '$D(^HLMA("AG",1,HLCSJ)) Q
 .. S HLCSX=^HLMA(HLCSJ,0),HLCSDTE=$P(HLCSX,U,1)
 .. S HLCSLNK="          "
 .. I $D(^HLCS(870,HLCSLINK,0)) S HLCSLNK=$P(^HLCS(870,HLCSLINK,0),U,1)
 .. ; patch HL*1.6*145 start
 .. ; S HLCSEVN1=$P(HLCSX,U,13) I HLCSEVN1'="",($D(^HL(771.2,HLCSEVN1,0))) S HLCSEVN1=$P(^HL(771.2,HLCSEVN1,0),U,1)
 .. ; S HLCSEVN2=$P(HLCSX,U,14) I HLCSEVN2'="",($D(^HL(779.001,HLCSEVN2,0))) S HLCSEVN2=$P(^HL(779.001,HLCSEVN2,0),U,1)
 .. N SEG
 .. D HEADSEG(HLCSJ,.SEG)
 .. S HLCSEVN1=$G(SEG("MESSAGE TYPE"))
 .. S HLCSEVN2=$G(SEG("EVENT TYPE"))
 .. ; patch HL*1.6*145 end
 .. I HLCSEVN1="" S HLCSEVN1="   "
 .. I HLCSEVN2="" S HLCSEVN2="   "
 .. I $L(HLCSEVN1)<3 S HLCSEVN1=HLCSEVN1_"   ",HLCSEVN1=$E(HLCSEVN1,1,3)
 .. I $L(HLCSEVN2)<3 S HLCSEVN2=HLCSEVN2_"   ",HLCSEVN2=$E(HLCSEVN2,1,3)
 .. S HLCSEVN=HLCSEVN1_":"_HLCSEVN2
 .. D FORMAT^HLCSRPT
 .. Q
 . Q
 I '$D(^TMP("TLOG",$J,1)) W !!,HLCSNREC,!! S DIR(0)="E" D ^DIR K DIR Q
 I VERS22'="YES" S HLCSTITL="IEN RECORD #   MESSAGE ID #         Log Link   Msg:Evn IO Sndg Apl Rcvr Apl HDR"
 E  S HLCSTITL="MESSAGE ID #         D/T Entered   Log Link   Msg:Evn IO Sndg Apl Rcvr Apl     "
 I VERS22'="YES" D FAKR
 D DISPLAY^HLCSRPT K ^TMP("TLOG",$J)
 Q
 ;
SEARCH2 ;
 W !!," . . . PLEASE WAIT, THIS CAN TAKE AWHILE . . .",!
 S HLCSI=0,HLCSIO="" S HLCSLN=0
 F  S HLCSIO=$O(^HLMA("AC",HLCSIO)) Q:(HLCSIO="")  D
 . S HLCSN=HLCSI,HLCSJ=0,HLCSLINK=0
 . F  S HLCSLINK=$O(^HLMA("AC",HLCSIO,HLCSLINK)) Q:(HLCSLINK="")  D
 .. F  S HLCSJ=$O(^HLMA("AC",HLCSIO,HLCSLINK,HLCSJ)) Q:(HLCSJ="")  D
 ... I '$D(^HLMA(HLCSJ,0)) Q
 ... I '$D(^HLMA("AG",1,HLCSJ)) Q
 ... S HLCSX=^HLMA(HLCSJ,0),HLCSDTE=$P(HLCSX,U,1)
 ... S HLCSLNK="          "
 ... I $D(^HLCS(870,HLCSLINK,0)) S HLCSLNK=$P(^HLCS(870,HLCSLINK,0),U,1)
 ... ; patch HL*1.6*145 start
 ... ; S HLCSEVN1=$P(HLCSX,U,13) I HLCSEVN1'="",($D(^HL(771.2,HLCSEVN1,0))) S HLCSEVN1=$P(^HL(771.2,HLCSEVN1,0),U,1)
 ... ; S HLCSEVN2=$P(HLCSX,U,14) I HLCSEVN2'="",($D(^HL(779.001,HLCSEVN2,0))) S HLCSEVN2=$P(^HL(779.001,HLCSEVN2,0),U,1)
 ... N SEG
 ... D HEADSEG(HLCSJ,.SEG)
 ... S HLCSEVN1=$G(SEG("MESSAGE TYPE"))
 ... S HLCSEVN2=$G(SEG("EVENT TYPE"))
 ... ; patch HL*1.6*145 end
 ... I HLCSEVN1="" S HLCSEVN1="   "
 ... I HLCSEVN2="" S HLCSEVN2="   "
 ... I $L(HLCSEVN1)<3 S HLCSEVN1=HLCSEVN1_"   ",HLCSEVN1=$E(HLCSEVN1,1,3)
 ... I $L(HLCSEVN2)<3 S HLCSEVN2=HLCSEVN2_"   ",HLCSEVN2=$E(HLCSEVN2,1,3)
 ... S HLCSEVN=HLCSEVN1_":"_HLCSEVN2
 ... D FORMAT^HLCSRPT
 ... Q
 .. Q
 . Q
 I '$D(^TMP("TLOG",$J,1)) W !!,HLCSNREC,!! S DIR(0)="E" D ^DIR K DIR Q
 I VERS22'="YES" S HLCSTITL="IEN RECORD #   MESSAGE ID #         Log Link   Msg:Evn IO Sndg Apl Rcvr Apl HDR"
 E  S HLCSTITL="MESSAGE ID #         D/T Entered   Log Link   Msg:Evn IO Sndg Apl Rcvr Apl     "
 I VERS22'="YES" D FAKR
 D DISPLAY^HLCSRPT K ^TMP("TLOG",$J)
 Q
 ;
LNKSRCH ; Report pending messages on A logical link.
 W @IOF,! S HLCSHDR="Logical Link Selection" D HLCSBAR
 S DIR(0)="PAO^870:AEO",DIR("A")="Select Logical Link:  ALL//"
 D ^DIR S:($D(DTOUT)!($D(DUOUT))) STOP=1 Q:$D(STOP)
 I X="" S HLCSLS="" K DIR,X,Y Q
 I Y=-1 W !,X_" NOT VALID " K X,Y G LNKSRCH
 S HLCSLINK=$P(Y,U,1),HLCSLNK=$P(Y,U,2) K DIR,X,Y
 S HLCSLS=1
 Q
 ;
FAKR ; Build fake record to pass FM21 Browser edits.
 S HLCSJ=^TMP("TLOG",$J,1)
 S HLCSJ=+$P(HLCSJ," ",1)
 S ^TMP($J,"MESSAGE",HLCSJ,0)="^^1^1"
 S ^TMP($J,"MESSAGE",HLCSJ,1,0)=" Fake Record to pass Browser edits. "
 S HLCSRNO=HLCSJ
 Q
 ;
SHOWMSG(XXY,XXZ) ;
 ; Each node, ^tmp($j,"message",record_ien), invokes this code
 ; to compile a 'virtual w-p document' when a message is browsed.
 I $D(^HLMA(XXY,"MSH",0)) D
 . S ^TMP($J,"MESSAGE",XXY,0)=^HLMA(XXY,"MSH",0)
 . S YY1=$P(^HLMA(XXY,"MSH",0),U,3),YY2=$P(^HLMA(XXY,"MSH",0),U,4)
 E  S ^TMP($J,"MESSAGE",XXY,0)="1^1"
 S XLINE=^HLMA(XXY,0)
 S LINE="Record #: "_XXY_"                    ",LINE=$E(LINE,1,30)
 S LINE=LINE_"Message #: "_$P(XLINE,U,2)
 S ^TMP($J,"MESSAGE",XXY,1,0)=LINE
 S DTE=$P(XLINE,U,1) I $P($G(^HL(772,DTE,0)),U,1)'="" S DTE=$P(^HL(772,DTE,0),U,1),DTE=$E(DTE,4,7)_$E(DTE,2,3)_"."_$P(DTE,".",2)_"      "
 I $D(^HLMA(XXY,"S")),$P(^HLMA(XXY,"S"),U,1)'="" S DTP=$P(^HLMA(XXY,"S"),U,1) S DTP=$E(DTP,4,7)_$E(DTP,2,3)_"."_$P(DTP,".",2)
 E  S DTP=" "
 S LINE="D/T Entered: "_DTE,LINE=$E(LINE,1,30)_"D/T Processed: "_DTP
 S ^TMP($J,"MESSAGE",XXY,2,0)=LINE K DTE,DTP
 S LINE="Logical Link: " I $P(XLINE,U,7)'="",($D(^HLCS(870,$P(XLINE,U,7),0))) S LINE=LINE_$P(^HLCS(870,$P(XLINE,U,7),0),U,1)
 S LINE=LINE_"                ",LINE=$E(LINE,1,30)
 S LINE=LINE_"Ack To MSG#: " I $P(XLINE,U,6)'="",($D(^HLMA($P(XLINE,U,6),0))) S LINE=LINE_$P(^HLMA($P(XLINE,U,6),0),U,2)
 S ^TMP($J,"MESSAGE",XXY,3,0)=LINE
 S DTS="" I $P($G(^HLMA(XXY,"P")),U,2)'="" S DTS=$P(^HLMA(XXY,"P"),U,2),DTS=$E(DTS,4,7)_$E(DTS,2,3)_"."_$P(DTS,".",2)
 S LINE="D/T STATUS: "_DTS_"                  ",LINE=$E(LINE,1,30),LINE=LINE_"STATUS: "
 I $P(^HLMA(XXY,"P"),U,1)'="" S LINE=LINE_$P(^HL(771.6,+$P(^HLMA(XXY,"P"),U,1),0),U,1)
 S ^TMP($J,"MESSAGE",XXY,4,0)=LINE K DTS
 S LINE="ERR MSG: " I $P(^HLMA(XXY,"P"),U,3)'="" S LINE=LINE_$E($P(^HLMA(XXY,"P"),U,3),1,20)
 S LINE=LINE_"                      ",LINE=$E(LINE,1,30)_"ERR TYPE: "
 I $P(^HLMA(XXY,"P"),U,4)'="" S LINE=LINE_$P(^HL(771.7,+$P(^HLMA(XXY,"P"),U,4),0),U,1)
 S ^TMP($J,"MESSAGE",XXY,5,0)=LINE
 S LINE="Sending Appl: " I $P(XLINE,U,11)'="",($D(^HL(771,$P(XLINE,U,11),0))) S LINE=LINE_$P(^HL(771,$P(XLINE,U,11),0),U,1)
 S ^TMP($J,"MESSAGE",XXY,6,0)=LINE
 S LINE="Receiving Appl: " I $P(XLINE,U,12)'="",($D(^HL(771,$P(XLINE,U,12),0))) S LINE=LINE_$P(^HL(771,$P(XLINE,U,12),0),U,1)
 S ^TMP($J,"MESSAGE",XXY,7,0)=LINE
 ; patch HL*1.6*145 start
 ; S LINE="Message Type: " I $P(XLINE,U,13)'="",($D(^HL(771.2,$P(XLINE,U,13),0))) S LINE=LINE_$P(^HL(771.2,$P(XLINE,U,13),0),U,1)
 N SEG
 D HEADSEG(XXY,.SEG)
 S LINE="Message Type: "_$G(SEG("MESSAGE TYPE"))
 S LINE=LINE_"                    ",LINE=$E(LINE,1,30)_"Event Type: "
 ; I $P(XLINE,U,14)'="",($D(^HL(779.001,$P(XLINE,U,14),0))) S LINE=LINE_$P(^HL(779.001,$P(XLINE,U,14),0),U,1)
 S LINE=LINE_$G(SEG("EVENT TYPE"))
 ; patch HL*1.6*145 end
 S ^TMP($J,"MESSAGE",XXY,8,0)=LINE K LINE,XLINE
 S ^TMP($J,"MESSAGE",XXY,9,0)="MESSAGE HEADER: "
 S LN1=.5,LN2=10
 I $D(^HLMA(XXY,"MSH",0)) D
 . F  S LN1=$O(^HLMA(XXY,"MSH",LN1)) Q:LN1=""  D
 .. S ^TMP($J,"MESSAGE",XXY,LN2,0)=^HLMA(XXY,"MSH",LN1,0)
 .. ;HL*1.6*107 start:  to fix the multiple lines per segment
 .. ;S LN2=LN2+1,LN1=LN1+1
 .. S LN2=LN2+1
 .. ;HL*1.6*107 end
 ..Q
 S LN1=.5
 S ^TMP($J,"MESSAGE",XXY,LN2,0)="MESSAGE TEXT: ",LN2=LN2+1
 I $D(^HL(772,XXZ,"IN",0)) D
 . F  S LN1=$O(^HL(772,XXZ,"IN",LN1)) Q:(LN1="")  D
 .. S ^TMP($J,"MESSAGE",XXY,LN2,0)=^HL(772,XXZ,"IN",LN1,0)
 .. ;HL*1.6*107 start: to fix the multiple lines per segment
 .. ;S LN2=LN2+1,LN1=LN1+1
 .. S LN2=LN2+1
 .. ;HL*1.6*107 end
 ..Q
 S (YY1,YY2)=LN2-1
 S Y1Y2=YY1_"^"_YY2
 S $P(^TMP($J,"MESSAGE",XXY,0),U,3,4)=Y1Y2
 K LN1,LN2,Y1Y2,YY1,YY2
 Q
 ;
HLCSBAR ; Center Title on Top Line of Screen
 W RVON,?(80-$L(HLCSHDR)\2),HLCSHDR,$E(SPACE,$X,77),RVOFF,!
 Q
 ;
HEADSEG(IEN,SEG) ;
 ; patch HL*1.6*145
 ; input:
 ;    IEN: ien of message in file #773
 ;    SEG: passing by reference
 ; output:
 ;    SEG
 ;
 Q:'$G(IEN)
 K SEG
 S SEG=$G(^HLMA(IEN,"MSH",1,0))_$G(^HLMA(IEN,"MSH",2,0))
 Q:SEG']""
 S SEG("CODE")=$E(SEG,1,3)
 Q:$L(SEG("CODE"))'=3
 S SEG("FIELD")=$E(SEG,4)
 Q:SEG("FIELD")=""
 S SEG("COMPONENT")=$E(SEG,5)
 Q:SEG("COMPONENT")=""
 S SEG("SUB-COMPONENT")=$E(SEG,8)
 S SEG("ECH-2")=$E(SEG,6)
 ;
 S SEG("MESSAGE TYPE")=""
 S SEG("EVENT TYPE")=""
 ;
 I SEG("CODE")="MSH" D
 . S SEG("SEG-9")=$P(SEG,SEG("FIELD"),9)
 . S SEG("MESSAGE TYPE")=$P(SEG("SEG-9"),SEG("COMPONENT"))
 . S SEG("EVENT TYPE")=$P(SEG("SEG-9"),SEG("COMPONENT"),2)
 ;
 I SEG("CODE")="BHS" D
 . S SEG("SEG-9")=$P(SEG,SEG("FIELD"),9)
 . I SEG("SEG-9")]"" D
 .. S SEG("SEG-9-2")=$P(SEG("SEG-9"),SEG("COMPONENT"),3)
 .. S SEG("MESSAGE TYPE")=SEG("SEG-9-2")
 .. I SEG("SEG-9-2")]"",$L(SEG("ECH-2")),(SEG("SEG-9-2")[SEG("ECH-2")) D
 ... S SEG("MESSAGE TYPE")=$P(SEG("SEG-9-2"),SEG("ECH-2"))
 ... S SEG("EVENT TYPE")=$P(SEG("SEG-9-2"),SEG("ECH-2"),2)
 .. ;
 .. Q:SEG("SUB-COMPONENT")=""
 .. I SEG("SEG-9-2")]"",(SEG("SEG-9-2")[SEG("SUB-COMPONENT")) D
 ... S SEG("MESSAGE TYPE")=$P(SEG("SEG-9-2"),SEG("SUB-COMPONENT"))
 ... S SEG("EVENT TYPE")=$P(SEG("SEG-9-2"),SEG("SUB-COMPONENT"),2)
 Q
 ;
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HHLCSRPT1   9100     printed  Sep 23, 2025@19:33:03                                                                                                                                                                                                    Page 2
HLCSRPT1  ;ISC-SF/RAH-TRANS LOG PENDING MSG LIST;03/01/2010  14:59 ;08/25/2010
 +1       ;;1.6;HEALTH LEVEL SEVEN;**19,50,107,145,151**;Oct 13, 1995;Build 1
 +2       ;Per VHA Directive 2004-038, this routine should not be modified.
 +3       ;
 +4        QUIT 
 +5       ;
EN        ; Entry Point for Pending Message Search.
 +1        DO LNKSRCH
           if $DATA(STOP)
               QUIT 
 +2        IF HLCSLS=1
               DO SEARCH1
               QUIT 
 +3        DO SEARCH2
 +4        QUIT 
 +5       ;
 +6       ;
SEARCH1   ;
 +1        WRITE !!," . . . PLEASE WAIT, THIS CAN TAKE AWHILE . . .",!
 +2        SET HLCSI=0
           SET HLCSIO=""
           SET HLCSLN=0
 +3        FOR 
               SET HLCSIO=$ORDER(^HLMA("AC",HLCSIO))
               if (HLCSIO="")
                   QUIT 
               Begin DoDot:1
 +4                SET HLCSN=HLCSI
                   SET HLCSJ=0
 +5                FOR 
                       SET HLCSJ=$ORDER(^HLMA("AC",HLCSIO,HLCSLINK,HLCSJ))
                       if (HLCSJ="")
                           QUIT 
                       Begin DoDot:2
 +6                        IF '$DATA(^HLMA(HLCSJ,0))
                               QUIT 
 +7                        IF '$DATA(^HLMA("AG",1,HLCSJ))
                               QUIT 
 +8                        SET HLCSX=^HLMA(HLCSJ,0)
                           SET HLCSDTE=$PIECE(HLCSX,U,1)
 +9                        SET HLCSLNK="          "
 +10                       IF $DATA(^HLCS(870,HLCSLINK,0))
                               SET HLCSLNK=$PIECE(^HLCS(870,HLCSLINK,0),U,1)
 +11      ; patch HL*1.6*145 start
 +12      ; S HLCSEVN1=$P(HLCSX,U,13) I HLCSEVN1'="",($D(^HL(771.2,HLCSEVN1,0))) S HLCSEVN1=$P(^HL(771.2,HLCSEVN1,0),U,1)
 +13      ; S HLCSEVN2=$P(HLCSX,U,14) I HLCSEVN2'="",($D(^HL(779.001,HLCSEVN2,0))) S HLCSEVN2=$P(^HL(779.001,HLCSEVN2,0),U,1)
 +14                       NEW SEG
 +15                       DO HEADSEG(HLCSJ,.SEG)
 +16                       SET HLCSEVN1=$GET(SEG("MESSAGE TYPE"))
 +17                       SET HLCSEVN2=$GET(SEG("EVENT TYPE"))
 +18      ; patch HL*1.6*145 end
 +19                       IF HLCSEVN1=""
                               SET HLCSEVN1="   "
 +20                       IF HLCSEVN2=""
                               SET HLCSEVN2="   "
 +21                       IF $LENGTH(HLCSEVN1)<3
                               SET HLCSEVN1=HLCSEVN1_"   "
                               SET HLCSEVN1=$EXTRACT(HLCSEVN1,1,3)
 +22                       IF $LENGTH(HLCSEVN2)<3
                               SET HLCSEVN2=HLCSEVN2_"   "
                               SET HLCSEVN2=$EXTRACT(HLCSEVN2,1,3)
 +23                       SET HLCSEVN=HLCSEVN1_":"_HLCSEVN2
 +24                       DO FORMAT^HLCSRPT
 +25                       QUIT 
                       End DoDot:2
 +26               QUIT 
               End DoDot:1
 +27       IF '$DATA(^TMP("TLOG",$JOB,1))
               WRITE !!,HLCSNREC,!!
               SET DIR(0)="E"
               DO ^DIR
               KILL DIR
               QUIT 
 +28       IF VERS22'="YES"
               SET HLCSTITL="IEN RECORD #   MESSAGE ID #         Log Link   Msg:Evn IO Sndg Apl Rcvr Apl HDR"
 +29      IF '$TEST
               SET HLCSTITL="MESSAGE ID #         D/T Entered   Log Link   Msg:Evn IO Sndg Apl Rcvr Apl     "
 +30       IF VERS22'="YES"
               DO FAKR
 +31       DO DISPLAY^HLCSRPT
           KILL ^TMP("TLOG",$JOB)
 +32       QUIT 
 +33      ;
SEARCH2   ;
 +1        WRITE !!," . . . PLEASE WAIT, THIS CAN TAKE AWHILE . . .",!
 +2        SET HLCSI=0
           SET HLCSIO=""
           SET HLCSLN=0
 +3        FOR 
               SET HLCSIO=$ORDER(^HLMA("AC",HLCSIO))
               if (HLCSIO="")
                   QUIT 
               Begin DoDot:1
 +4                SET HLCSN=HLCSI
                   SET HLCSJ=0
                   SET HLCSLINK=0
 +5                FOR 
                       SET HLCSLINK=$ORDER(^HLMA("AC",HLCSIO,HLCSLINK))
                       if (HLCSLINK="")
                           QUIT 
                       Begin DoDot:2
 +6                        FOR 
                               SET HLCSJ=$ORDER(^HLMA("AC",HLCSIO,HLCSLINK,HLCSJ))
                               if (HLCSJ="")
                                   QUIT 
                               Begin DoDot:3
 +7                                IF '$DATA(^HLMA(HLCSJ,0))
                                       QUIT 
 +8                                IF '$DATA(^HLMA("AG",1,HLCSJ))
                                       QUIT 
 +9                                SET HLCSX=^HLMA(HLCSJ,0)
                                   SET HLCSDTE=$PIECE(HLCSX,U,1)
 +10                               SET HLCSLNK="          "
 +11                               IF $DATA(^HLCS(870,HLCSLINK,0))
                                       SET HLCSLNK=$PIECE(^HLCS(870,HLCSLINK,0),U,1)
 +12      ; patch HL*1.6*145 start
 +13      ; S HLCSEVN1=$P(HLCSX,U,13) I HLCSEVN1'="",($D(^HL(771.2,HLCSEVN1,0))) S HLCSEVN1=$P(^HL(771.2,HLCSEVN1,0),U,1)
 +14      ; S HLCSEVN2=$P(HLCSX,U,14) I HLCSEVN2'="",($D(^HL(779.001,HLCSEVN2,0))) S HLCSEVN2=$P(^HL(779.001,HLCSEVN2,0),U,1)
 +15                               NEW SEG
 +16                               DO HEADSEG(HLCSJ,.SEG)
 +17                               SET HLCSEVN1=$GET(SEG("MESSAGE TYPE"))
 +18                               SET HLCSEVN2=$GET(SEG("EVENT TYPE"))
 +19      ; patch HL*1.6*145 end
 +20                               IF HLCSEVN1=""
                                       SET HLCSEVN1="   "
 +21                               IF HLCSEVN2=""
                                       SET HLCSEVN2="   "
 +22                               IF $LENGTH(HLCSEVN1)<3
                                       SET HLCSEVN1=HLCSEVN1_"   "
                                       SET HLCSEVN1=$EXTRACT(HLCSEVN1,1,3)
 +23                               IF $LENGTH(HLCSEVN2)<3
                                       SET HLCSEVN2=HLCSEVN2_"   "
                                       SET HLCSEVN2=$EXTRACT(HLCSEVN2,1,3)
 +24                               SET HLCSEVN=HLCSEVN1_":"_HLCSEVN2
 +25                               DO FORMAT^HLCSRPT
 +26                               QUIT 
                               End DoDot:3
 +27                       QUIT 
                       End DoDot:2
 +28               QUIT 
               End DoDot:1
 +29       IF '$DATA(^TMP("TLOG",$JOB,1))
               WRITE !!,HLCSNREC,!!
               SET DIR(0)="E"
               DO ^DIR
               KILL DIR
               QUIT 
 +30       IF VERS22'="YES"
               SET HLCSTITL="IEN RECORD #   MESSAGE ID #         Log Link   Msg:Evn IO Sndg Apl Rcvr Apl HDR"
 +31      IF '$TEST
               SET HLCSTITL="MESSAGE ID #         D/T Entered   Log Link   Msg:Evn IO Sndg Apl Rcvr Apl     "
 +32       IF VERS22'="YES"
               DO FAKR
 +33       DO DISPLAY^HLCSRPT
           KILL ^TMP("TLOG",$JOB)
 +34       QUIT 
 +35      ;
LNKSRCH   ; Report pending messages on A logical link.
 +1        WRITE @IOF,!
           SET HLCSHDR="Logical Link Selection"
           DO HLCSBAR
 +2        SET DIR(0)="PAO^870:AEO"
           SET DIR("A")="Select Logical Link:  ALL//"
 +3        DO ^DIR
           if ($DATA(DTOUT)!($DATA(DUOUT)))
               SET STOP=1
           if $DATA(STOP)
               QUIT 
 +4        IF X=""
               SET HLCSLS=""
               KILL DIR,X,Y
               QUIT 
 +5        IF Y=-1
               WRITE !,X_" NOT VALID "
               KILL X,Y
               GOTO LNKSRCH
 +6        SET HLCSLINK=$PIECE(Y,U,1)
           SET HLCSLNK=$PIECE(Y,U,2)
           KILL DIR,X,Y
 +7        SET HLCSLS=1
 +8        QUIT 
 +9       ;
FAKR      ; Build fake record to pass FM21 Browser edits.
 +1        SET HLCSJ=^TMP("TLOG",$JOB,1)
 +2        SET HLCSJ=+$PIECE(HLCSJ," ",1)
 +3        SET ^TMP($JOB,"MESSAGE",HLCSJ,0)="^^1^1"
 +4        SET ^TMP($JOB,"MESSAGE",HLCSJ,1,0)=" Fake Record to pass Browser edits. "
 +5        SET HLCSRNO=HLCSJ
 +6        QUIT 
 +7       ;
SHOWMSG(XXY,XXZ) ;
 +1       ; Each node, ^tmp($j,"message",record_ien), invokes this code
 +2       ; to compile a 'virtual w-p document' when a message is browsed.
 +3        IF $DATA(^HLMA(XXY,"MSH",0))
               Begin DoDot:1
 +4                SET ^TMP($JOB,"MESSAGE",XXY,0)=^HLMA(XXY,"MSH",0)
 +5                SET YY1=$PIECE(^HLMA(XXY,"MSH",0),U,3)
                   SET YY2=$PIECE(^HLMA(XXY,"MSH",0),U,4)
               End DoDot:1
 +6       IF '$TEST
               SET ^TMP($JOB,"MESSAGE",XXY,0)="1^1"
 +7        SET XLINE=^HLMA(XXY,0)
 +8        SET LINE="Record #: "_XXY_"                    "
           SET LINE=$EXTRACT(LINE,1,30)
 +9        SET LINE=LINE_"Message #: "_$PIECE(XLINE,U,2)
 +10       SET ^TMP($JOB,"MESSAGE",XXY,1,0)=LINE
 +11       SET DTE=$PIECE(XLINE,U,1)
           IF $PIECE($GET(^HL(772,DTE,0)),U,1)'=""
               SET DTE=$PIECE(^HL(772,DTE,0),U,1)
               SET DTE=$EXTRACT(DTE,4,7)_$EXTRACT(DTE,2,3)_"."_$PIECE(DTE,".",2)_"      "
 +12       IF $DATA(^HLMA(XXY,"S"))
               IF $PIECE(^HLMA(XXY,"S"),U,1)'=""
                   SET DTP=$PIECE(^HLMA(XXY,"S"),U,1)
                   SET DTP=$EXTRACT(DTP,4,7)_$EXTRACT(DTP,2,3)_"."_$PIECE(DTP,".",2)
 +13      IF '$TEST
               SET DTP=" "
 +14       SET LINE="D/T Entered: "_DTE
           SET LINE=$EXTRACT(LINE,1,30)_"D/T Processed: "_DTP
 +15       SET ^TMP($JOB,"MESSAGE",XXY,2,0)=LINE
           KILL DTE,DTP
 +16       SET LINE="Logical Link: "
           IF $PIECE(XLINE,U,7)'=""
               IF ($DATA(^HLCS(870,$PIECE(XLINE,U,7),0)))
                   SET LINE=LINE_$PIECE(^HLCS(870,$PIECE(XLINE,U,7),0),U,1)
 +17       SET LINE=LINE_"                "
           SET LINE=$EXTRACT(LINE,1,30)
 +18       SET LINE=LINE_"Ack To MSG#: "
           IF $PIECE(XLINE,U,6)'=""
               IF ($DATA(^HLMA($PIECE(XLINE,U,6),0)))
                   SET LINE=LINE_$PIECE(^HLMA($PIECE(XLINE,U,6),0),U,2)
 +19       SET ^TMP($JOB,"MESSAGE",XXY,3,0)=LINE
 +20       SET DTS=""
           IF $PIECE($GET(^HLMA(XXY,"P")),U,2)'=""
               SET DTS=$PIECE(^HLMA(XXY,"P"),U,2)
               SET DTS=$EXTRACT(DTS,4,7)_$EXTRACT(DTS,2,3)_"."_$PIECE(DTS,".",2)
 +21       SET LINE="D/T STATUS: "_DTS_"                  "
           SET LINE=$EXTRACT(LINE,1,30)
           SET LINE=LINE_"STATUS: "
 +22       IF $PIECE(^HLMA(XXY,"P"),U,1)'=""
               SET LINE=LINE_$PIECE(^HL(771.6,+$PIECE(^HLMA(XXY,"P"),U,1),0),U,1)
 +23       SET ^TMP($JOB,"MESSAGE",XXY,4,0)=LINE
           KILL DTS
 +24       SET LINE="ERR MSG: "
           IF $PIECE(^HLMA(XXY,"P"),U,3)'=""
               SET LINE=LINE_$EXTRACT($PIECE(^HLMA(XXY,"P"),U,3),1,20)
 +25       SET LINE=LINE_"                      "
           SET LINE=$EXTRACT(LINE,1,30)_"ERR TYPE: "
 +26       IF $PIECE(^HLMA(XXY,"P"),U,4)'=""
               SET LINE=LINE_$PIECE(^HL(771.7,+$PIECE(^HLMA(XXY,"P"),U,4),0),U,1)
 +27       SET ^TMP($JOB,"MESSAGE",XXY,5,0)=LINE
 +28       SET LINE="Sending Appl: "
           IF $PIECE(XLINE,U,11)'=""
               IF ($DATA(^HL(771,$PIECE(XLINE,U,11),0)))
                   SET LINE=LINE_$PIECE(^HL(771,$PIECE(XLINE,U,11),0),U,1)
 +29       SET ^TMP($JOB,"MESSAGE",XXY,6,0)=LINE
 +30       SET LINE="Receiving Appl: "
           IF $PIECE(XLINE,U,12)'=""
               IF ($DATA(^HL(771,$PIECE(XLINE,U,12),0)))
                   SET LINE=LINE_$PIECE(^HL(771,$PIECE(XLINE,U,12),0),U,1)
 +31       SET ^TMP($JOB,"MESSAGE",XXY,7,0)=LINE
 +32      ; patch HL*1.6*145 start
 +33      ; S LINE="Message Type: " I $P(XLINE,U,13)'="",($D(^HL(771.2,$P(XLINE,U,13),0))) S LINE=LINE_$P(^HL(771.2,$P(XLINE,U,13),0),U,1)
 +34       NEW SEG
 +35       DO HEADSEG(XXY,.SEG)
 +36       SET LINE="Message Type: "_$GET(SEG("MESSAGE TYPE"))
 +37       SET LINE=LINE_"                    "
           SET LINE=$EXTRACT(LINE,1,30)_"Event Type: "
 +38      ; I $P(XLINE,U,14)'="",($D(^HL(779.001,$P(XLINE,U,14),0))) S LINE=LINE_$P(^HL(779.001,$P(XLINE,U,14),0),U,1)
 +39       SET LINE=LINE_$GET(SEG("EVENT TYPE"))
 +40      ; patch HL*1.6*145 end
 +41       SET ^TMP($JOB,"MESSAGE",XXY,8,0)=LINE
           KILL LINE,XLINE
 +42       SET ^TMP($JOB,"MESSAGE",XXY,9,0)="MESSAGE HEADER: "
 +43       SET LN1=.5
           SET LN2=10
 +44       IF $DATA(^HLMA(XXY,"MSH",0))
               Begin DoDot:1
 +45               FOR 
                       SET LN1=$ORDER(^HLMA(XXY,"MSH",LN1))
                       if LN1=""
                           QUIT 
                       Begin DoDot:2
 +46                       SET ^TMP($JOB,"MESSAGE",XXY,LN2,0)=^HLMA(XXY,"MSH",LN1,0)
 +47      ;HL*1.6*107 start:  to fix the multiple lines per segment
 +48      ;S LN2=LN2+1,LN1=LN1+1
 +49                       SET LN2=LN2+1
 +50      ;HL*1.6*107 end
 +51                       QUIT 
                       End DoDot:2
               End DoDot:1
 +52       SET LN1=.5
 +53       SET ^TMP($JOB,"MESSAGE",XXY,LN2,0)="MESSAGE TEXT: "
           SET LN2=LN2+1
 +54       IF $DATA(^HL(772,XXZ,"IN",0))
               Begin DoDot:1
 +55               FOR 
                       SET LN1=$ORDER(^HL(772,XXZ,"IN",LN1))
                       if (LN1="")
                           QUIT 
                       Begin DoDot:2
 +56                       SET ^TMP($JOB,"MESSAGE",XXY,LN2,0)=^HL(772,XXZ,"IN",LN1,0)
 +57      ;HL*1.6*107 start: to fix the multiple lines per segment
 +58      ;S LN2=LN2+1,LN1=LN1+1
 +59                       SET LN2=LN2+1
 +60      ;HL*1.6*107 end
 +61                       QUIT 
                       End DoDot:2
               End DoDot:1
 +62       SET (YY1,YY2)=LN2-1
 +63       SET Y1Y2=YY1_"^"_YY2
 +64       SET $PIECE(^TMP($JOB,"MESSAGE",XXY,0),U,3,4)=Y1Y2
 +65       KILL LN1,LN2,Y1Y2,YY1,YY2
 +66       QUIT 
 +67      ;
HLCSBAR   ; Center Title on Top Line of Screen
 +1        WRITE RVON,?(80-$LENGTH(HLCSHDR)\2),HLCSHDR,$EXTRACT(SPACE,$X,77),RVOFF,!
 +2        QUIT 
 +3       ;
HEADSEG(IEN,SEG) ;
 +1       ; patch HL*1.6*145
 +2       ; input:
 +3       ;    IEN: ien of message in file #773
 +4       ;    SEG: passing by reference
 +5       ; output:
 +6       ;    SEG
 +7       ;
 +8        if '$GET(IEN)
               QUIT 
 +9        KILL SEG
 +10       SET SEG=$GET(^HLMA(IEN,"MSH",1,0))_$GET(^HLMA(IEN,"MSH",2,0))
 +11       if SEG']""
               QUIT 
 +12       SET SEG("CODE")=$EXTRACT(SEG,1,3)
 +13       if $LENGTH(SEG("CODE"))'=3
               QUIT 
 +14       SET SEG("FIELD")=$EXTRACT(SEG,4)
 +15       if SEG("FIELD")=""
               QUIT 
 +16       SET SEG("COMPONENT")=$EXTRACT(SEG,5)
 +17       if SEG("COMPONENT")=""
               QUIT 
 +18       SET SEG("SUB-COMPONENT")=$EXTRACT(SEG,8)
 +19       SET SEG("ECH-2")=$EXTRACT(SEG,6)
 +20      ;
 +21       SET SEG("MESSAGE TYPE")=""
 +22       SET SEG("EVENT TYPE")=""
 +23      ;
 +24       IF SEG("CODE")="MSH"
               Begin DoDot:1
 +25               SET SEG("SEG-9")=$PIECE(SEG,SEG("FIELD"),9)
 +26               SET SEG("MESSAGE TYPE")=$PIECE(SEG("SEG-9"),SEG("COMPONENT"))
 +27               SET SEG("EVENT TYPE")=$PIECE(SEG("SEG-9"),SEG("COMPONENT"),2)
               End DoDot:1
 +28      ;
 +29       IF SEG("CODE")="BHS"
               Begin DoDot:1
 +30               SET SEG("SEG-9")=$PIECE(SEG,SEG("FIELD"),9)
 +31               IF SEG("SEG-9")]""
                       Begin DoDot:2
 +32                       SET SEG("SEG-9-2")=$PIECE(SEG("SEG-9"),SEG("COMPONENT"),3)
 +33                       SET SEG("MESSAGE TYPE")=SEG("SEG-9-2")
 +34                       IF SEG("SEG-9-2")]""
                               IF $LENGTH(SEG("ECH-2"))
                                   IF (SEG("SEG-9-2")[SEG("ECH-2"))
                                       Begin DoDot:3
 +35                                       SET SEG("MESSAGE TYPE")=$PIECE(SEG("SEG-9-2"),SEG("ECH-2"))
 +36                                       SET SEG("EVENT TYPE")=$PIECE(SEG("SEG-9-2"),SEG("ECH-2"),2)
                                       End DoDot:3
 +37      ;
 +38                       if SEG("SUB-COMPONENT")=""
                               QUIT 
 +39                       IF SEG("SEG-9-2")]""
                               IF (SEG("SEG-9-2")[SEG("SUB-COMPONENT"))
                                   Begin DoDot:3
 +40                                   SET SEG("MESSAGE TYPE")=$PIECE(SEG("SEG-9-2"),SEG("SUB-COMPONENT"))
 +41                                   SET SEG("EVENT TYPE")=$PIECE(SEG("SEG-9-2"),SEG("SUB-COMPONENT"),2)
                                   End DoDot:3
                       End DoDot:2
               End DoDot:1
 +42       QUIT 
 +43      ;