Ignore:
Timestamp:
Dec 4, 2009, 12:11:15 AM (14 years ago)
Author:
George Lilly
Message:

revised back to 6/30/08 version

File:
1 edited

Legend:

Unmodified
Added
Removed
  • WorldVistAEHR/trunk/r/HEALTH_LEVEL_SEVEN-HL/HLOUSR1.m

    r613 r623  
    1 HLOUSR1 ;ALB/CJM -ListManager Screen for viewing messages;12 JUN 1997 10:00 am ;07/25/2007
    2         ;;1.6;HEALTH LEVEL SEVEN;**126,134,137**;Oct 13, 1995;Build 21
    3         ;Per VHA Directive 2004-038, this routine should not be modified.
    4         ;
    5 EN      ;
    6         N MSGIEN
    7         S MSGIEN=$$PICKMSG
    8         I 'MSGIEN S VALMBCK="R" Q
    9         D EN^VALM("HLO SINGLE MESSAGE DISPLAY")
    10         Q
    11         ;
    12 HDR     ;
    13         Q
    14         ;
    15 BLANK   ;
    16         S VALMCNT=0
    17         D EXIT
    18         Q
    19 DISPLAY ;
    20         K @VALMAR
    21         S VALMBCK="R"
    22         N MSG
    23         S VALMBG=1
    24         Q:'MSGIEN
    25         D SHOWMSG($P(MSGIEN,"^"),$P(MSGIEN,"^",2))
    26         Q
    27         ;
    28 PICKMSG()       ;
    29         ;ask the user to select a message & return its ien
    30         N MSGIEN,DIR,COUNT,LIST
    31         D FULL^VALM1
    32         S DIR(0)="F3:30"
    33         S DIR("A")="Message ID"
    34         S DIR("?")="Enter the full Message Control ID or Batch Control ID of the message, or '^' to exit."
    35 PICK    D ^DIR
    36         I $D(DIRUT)!(Y="") Q 0
    37         I $G(@VALMAR@("INDEX",Y)) Q $G(@VALMAR@("INDEX",Y))
    38         S COUNT=$$FINDMSG^HLOMSG1(Y,.LIST)
    39         I COUNT="0" W !!,"That message can not be found! Try Again",! G PICK
    40         I COUNT=1 Q LIST(1)
    41         I COUNT>1 D
    42         .N ITEM
    43         .W !,"There is more than one message with that ID! You must choose one to display.",1
    44         .S ITEM=0
    45         .F  S ITEM=$O(LIST(ITEM)) Q:'ITEM  D
    46         ..N MSG
    47         ..Q:'$$GETMSG^HLOMSG(+LIST(ITEM),.MSG)
    48         ..W !,"[",ITEM,"]","  DT/TM: ",$$FMTE^XLFDT(MSG("DT/TM CREATED"),2),"   STATUS: ",MSG("STATUS")
    49         .S DIR(0)="NO^1:"_COUNT,DIR("A")="Choose",DIR("?")="Choose one message from the list"
    50         .D ^DIR
    51         .I Y S Y=LIST(Y)
    52         Q Y
    53         ;
    54 HELP    ;Help code
    55         S X="?" D DISP^XQORM1 W !!
    56         Q
    57         ;
    58 EXIT    ;Exit code
    59         D CLEAN^VALM10
    60         D CLEAR^VALM1
    61         S VALMBCK="R"
    62         ;
    63         Q
    64         ;
    65 EXPND   ;Expand code
    66         Q
    67         ;
    68 CJ(STRING,LEN)  ;
    69         Q $$CJ^XLFSTR(STRING,LEN)
    70 LJ(STRING,LEN)  ;
    71         Q $$LJ^XLFSTR(STRING,LEN)
    72 SP(LEN,CHAR)    ;
    73         ;return padding - " " is the default pad character
    74         N STR
    75         S:$G(CHAR)="" CHAR=" "
    76         S $P(STR,CHAR,LEN)=CHAR
    77         Q STR
    78         ;
    79 SHOWMSG(MSGIEN,SUBIEN)  ;
    80         ;Description:
    81         ;
    82         ;Input:
    83         ;Output:
    84         ;
    85         N MSG,I,TEMP,LINE
    86         S VALMCNT=0
    87         S SUBIEN=+$G(SUBIEN)
    88         I '$$GETMSG^HLOMSG(MSGIEN,.MSG) W !,"UNABLE TO DISPLAY THE MESSAGE",!! Q
    89         I SUBIEN D GETMSGB^HLOMSG1(.MSG,SUBIEN,.MSG)
    90         ;
    91         S I=0
    92         ;** administrative information **
    93         S @VALMAR@($$I,0)=$$CJ("Administrative Information",80)
    94         D CNTRL^VALM10(VALMCNT,26,30,IORVON,IORVOFF)
    95         S LINE="MsgID: "_$$LJ(MSG("ID"),18)
    96         S LINE=LINE_"Status: "_$$LJ(MSG("STATUS"),5)
    97         S:MSG("ACK TO")]"" LINE=LINE_$$LJ(" Ack To:",14)_MSG("ACK TO")
    98         S:MSG("ACK BY")]"" LINE=LINE_$$LJ(" Ack'd By:",14)_MSG("ACK BY")
    99         S @VALMAR@($$I,0)=LINE
    100         I MSG("STATUS","ERROR TEXT")]"" S @VALMAR@($$I,0)="Error: "_"** "_MSG("STATUS","ERROR TEXT")_" **"
    101         S @VALMAR@($$I,0)="Dir:   "_$$LJ($S(MSG("DIRECTION")="IN":"INCOMING",1:"OUTGOING"),10)_$$LJ("  Trans Dt/Tm: ",12)_$$FMTE^XLFDT(MSG("DT/TM"),2)_$$LJ("  Purge DT/TM: ",8)_$$FMTE^XLFDT(MSG("STATUS","PURGE"),2)
    102         S @VALMAR@($$I,0)="Link:  "_$$LJ(MSG("STATUS","LINK NAME"),29)_"   "_$$LJ("Queue: ",13)_MSG("STATUS","QUEUE")
    103         I $L($G(MSG("STATUS","SEQUENCE QUEUE"))) D
    104         .S @VALMAR@($$I,0)="Sequence Queue: "_MSG("STATUS","SEQUENCE QUEUE")_"    Moved: "_$S(MSG("STATUS","MOVED TO OUT QUEUE"):"YES",1:"NO")
    105         I MSG("STATUS","ACCEPT ACK'D") D
    106         .S @VALMAR@($$I,0)="Accept Ack: "_$$LJ(MSG("STATUS","ACCEPT ACK ID"),26)_$$LJ(" DT/TM Ack'd: ",14)_$$FMTE^XLFDT(MSG("STATUS","ACCEPT ACK DT/TM"),2)
    107         .S @VALMAR@($$I,0)="   "_MSG("STATUS","ACCEPT ACK MSA")
    108         I MSG("DIRECTION")="IN" D
    109         .S LINE="App Response Rtn: "
    110         .I $L($G(MSG("STATUS","APP ACK RESPONSE"))) S LINE=$$LJ(LINE_MSG("STATUS","APP ACK RESPONSE"),38)_" Executed: "_$S(MSG("STATUS","APP HANDOFF"):"   YES",1:"   NO")
    111         .S @VALMAR@($$I,0)=LINE
    112         I MSG("DIRECTION")="OUT",(MSG("STATUS","APP ACK'D")!MSG("STATUS","ACCEPT ACK'D")) D
    113         .S LINE=""
    114         .I MSG("STATUS","ACCEPT ACK'D") D
    115         ..I MSG("STATUS","ACCEPT ACK RESPONSE")="" S MSG("STATUS","ACCEPT ACK RESPONSE")="n/a"
    116         ..S LINE="Accept Ack Rtn: "_MSG("STATUS","ACCEPT ACK RESPONSE")
    117         .S LINE=$$LJ(LINE,39)
    118         .I MSG("STATUS","APP ACK'D") D
    119         ..I MSG("STATUS","APP ACK RESPONSE")="" S MSG("STATUS","APP ACK RESPONSE")="n/a"
    120         ..S LINE=LINE_"App Ack Rtn: "_MSG("STATUS","APP ACK RESPONSE")
    121         .S @VALMAR@($$I,0)=LINE
    122         ;
    123         ;** the message text **
    124         S @VALMAR@($$I,0)=""
    125         I '$G(SUBIEN) D
    126         .S @VALMAR@($$I,0)=$$CJ("Message Text",80)
    127         .D CNTRL^VALM10(VALMCNT,33,16,IORVON,IORVOFF)
    128         E  D
    129         .S @VALMAR@($$I,0)=$$CJ("Individual Message Text (Batched)",80)
    130         .D CNTRL^VALM10(VALMCNT,23,35,IORVON,IORVOFF)
    131         D SHOWBODY(.MSG,$G(SUBIEN))
    132         ;
    133         ;** display its application acknowledgment **
    134         I MSG("ACK BY")]"",$$FINDMSG^HLOMSG1(MSG("ACK BY"),.TEMP)=1 S MSGIEN=TEMP(1) D
    135         .N MSG
    136         .Q:'$$GETMSG^HLOMSG(+MSGIEN,.MSG)
    137         .I $P(MSGIEN,"^",2) D GETMSGB^HLOMSG1(.MSG,$P(MSGIEN,"^",2),.MSG)
    138         .S @VALMAR@($$I,0)=""
    139         .S @VALMAR@($$I,0)=$$CJ("Application Acknowledgment",80)
    140         .D CNTRL^VALM10(VALMCNT,26,30,IORVON,IORVOFF)
    141         .D SHOWBODY(.MSG,$P(MSGIEN,"^",2))
    142         ;
    143         ;** display the original message **
    144         I MSG("ACK TO")]"",$$FINDMSG^HLOMSG1(MSG("ACK TO"),.TEMP)=1 S MSGIEN=TEMP(1) D
    145         .N MSG
    146         .Q:'$$GETMSG^HLOMSG(+MSGIEN,.MSG)
    147         .I $P(MSGIEN,"^",2) D GETMSGB^HLOMSG1(.MSG,$P(MSGIEN,"^",2),.MSG)
    148         .S @VALMAR@($$I,0)=""
    149         .S @VALMAR@($$I,0)=$$CJ("Original Message",80)
    150         .D CNTRL^VALM10(VALMCNT,26,30,IORVON,IORVOFF)
    151         .D SHOWBODY(.MSG,$P(MSGIEN,"^",2))
    152         Q
    153         ;
    154 SHOWBODY(MSG,SUBIEN)    ;
    155         N NODE,I,SEG,QUIT
    156         S QUIT=0
    157         M SEG=MSG("HDR")
    158         D ADD(.SEG)
    159         S MSG("BATCH","CURRENT MESSAGE")=0
    160         I MSG("BATCH") D
    161         .I $G(SUBIEN) D  Q
    162         ..S MSG("BATCH","CURRENT MESSAGE")=SUBIEN
    163         ..F  Q:'$$HLNEXT^HLOMSG(.MSG,.SEG)  D ADD(.SEG)
    164         .S MSG("BATCH","CURRENT MESSAGE")=0
    165         .N LAST S LAST=0
    166         .F  Q:'$$NEXTMSG^HLOMSG(.MSG,.SEG)  D  Q:QUIT
    167         ..D ADD(.SEG)
    168         ..S LAST=MSG("BATCH","CURRENT MESSAGE")
    169         ..F  Q:'$$HLNEXT^HLOMSG(.MSG,.SEG)  D ADD(.SEG)
    170         .I MSG("DIRECTION")="OUT" K SEG S SEG(1)="BTS"_$E($G(NODE(1)),4)_LAST D ADD(.SEG)
    171         E  D
    172         .F  Q:'$$HLNEXT^HLOMSG(.MSG,.SEG)  D  Q:QUIT
    173         ..D ADD(.SEG)
    174         Q
    175 I()     ;
    176         S VALMCNT=VALMCNT+1
    177         Q VALMCNT
    178 ADD(SEG)        ;
    179         N QUIT,I,J,LINE
    180         S QUIT=0
    181         S (I,J)=1
    182         S LINE(1)=$E(SEG(1),1,80),SEG(1)=$E(SEG(1),81,9999)
    183         I SEG(1)="" K SEG(1)
    184         D SHIFT(.I,.J)
    185         S @VALMAR@($$I,0)=LINE(1)
    186         S I=1
    187         F  S I=$O(LINE(I)) Q:'I  D
    188         .S @VALMAR@($$I,0)=LINE(I)
    189         .D CNTRL^VALM10(VALMCNT,1,1,IORVON,IORVOFF)
    190         Q
    191         ;
    192 SHIFT(I,J)      ;
    193         I '$D(SEG(I)) S I=$O(SEG(0)) Q:'I
    194         I $L(LINE(J))<80 D
    195         .N LEN
    196         .S LEN=$L(LINE(J))
    197         .S LINE(J)=LINE(J)_$E(SEG(I),1,80-LEN)
    198         .S SEG(I)=$E(SEG(I),81-LEN,9999)
    199         .I SEG(I)="" K SEG(I)
    200         E  D
    201         .S J=J+1
    202         .S LINE(J)="-"
    203         D SHIFT(.I,.J)
    204         Q
    205         ;
    206 SCRLMODE        ;scroll mode
    207         Q:'$L(HLRFRSH)
    208         N QUIT,IOTM,IOBM,DX,DY,LINE,IOTM,IOBM
    209         W !!,IOINHI,"Hit any key to escape scroll mode...",IOINORM
    210         S IOTM=3,IOBM=23
    211         S QUIT=0
    212         S LINE=$S(VALMCNT<17:1,1:17)
    213         W @IOSTBM
    214         S DX=1,DY=$S(VALMCNT<17:VALMCNT+1,1:17) X IOXY
    215         F I=1:1 D  Q:QUIT
    216         .;every 10 seconds refresh the data
    217         .I I>42 D @HLRFRSH S I=0
    218         .I LINE+1>VALMCNT D
    219         ..S TEMP=$G(@VALMAR@(LINE,0))
    220         ..W !,IOUON,TEMP_$$SP(80-$L(TEMP)),IOUOFF
    221         .E  W !,$G(@VALMAR@(LINE,0))
    222         .S LINE=LINE+1
    223         .I LINE>VALMCNT S LINE=1
    224         .I (I=22)!(I=43) R *C:5 I $T S QUIT=1 Q
    225         S VALMBG=LINE-23 I VALMBG<0 S VALMBG=1
    226         S VALMBCK="R"
    227         Q
    228 HLP     ;
    229         Q
    230         ;
    231 IFOPEN(LINK)    ;
    232         ;returns 1 if the link can be opened, otherwise 0
    233         ;
    234         ;Inputs:
    235         ;  LINK - name of the link (required), optionally post-fixed with ":"_<port #>, will default to that defined for link
    236         ;
    237         N LINKNAME,LINKARY,POP,IO,IOF,IOST,OPEN,PORT
    238         S OPEN=0
    239         S LINKNAME=$P(LINK,":")
    240         S PORT=$P(LINK,":",2)
    241         Q:LINKNAME="" 0
    242         Q:'$$GETLINK^HLOTLNK(LINKNAME,.LINKARY) 0
    243         S:PORT LINKARY("PORT")=PORT
    244         Q:'$G(LINKARY("PORT")) 0
    245         I LINKARY("IP")="",LINKARY("DOMAIN")="",LINKARY("LLP")="TCP",LINKARY("SERVER") D
    246         .N DATA
    247         .S LINKARY("DOMAIN")=$P($G(^HLD(779.1,1,0)),"^")
    248         .Q:LINKARY("DOMAIN")=""
    249         .S DATA(.08)=LINKARY("DOMAIN")
    250         .Q:$$UPD^HLOASUB1(870,LINKARY("IEN"),.DATA)
    251         D:$G(LINKARY("IP"))'=""
    252         .D CALL^%ZISTCP(LINKARY("IP"),LINKARY("PORT"),15)
    253         .S OPEN='POP
    254         I 'OPEN,LINKARY("DOMAIN")'="",$G(^HLTMP("DNS LAST",LINKARY("IEN")))<$$DT^XLFDT D
    255         .N IP
    256         .S ^HLTMP("DNS LAST",LINKARY("IEN"))=$$DT^XLFDT
    257         .S IP=$$DNS^HLOTCP(LINKARY("DOMAIN"))
    258         .I IP'="",IP'=LINKARY("IP") D
    259         ..N DATA
    260         ..S DATA(400.01)=IP,LINKARY("IP")=IP
    261         ..Q:$$UPD^HLOASUB1(870,LINKARY("IEN"),.DATA)
    262         ..D CALL^%ZISTCP(LINKARY("IP"),LINKARY("PORT"),15)
    263         ..S OPEN='POP
    264         C:OPEN IO
    265         ;D CLOSE^%ZISTCP
    266         Q OPEN
     1HLOUSR1 ;ALB/CJM -ListManager Screen for viewing messages;12 JUN 1997 10:00 am ;03/19/2007
     2 ;;1.6;HEALTH LEVEL SEVEN;**126,134**;Oct 13, 1995;Build 30
     3 ;Per VHA Directive 2004-038, this routine should not be modified.
     4 ;
     5EN ;
     6 N MSGIEN
     7 S MSGIEN=$$PICKMSG
     8 I 'MSGIEN S VALMBCK="R" Q
     9 D EN^VALM("HLO SINGLE MESSAGE DISPLAY")
     10 Q
     11 ;
     12HDR ;
     13 Q
     14 ;
     15BLANK ;
     16 S VALMCNT=0
     17 D EXIT
     18 Q
     19DISPLAY ;
     20 K @VALMAR
     21 S VALMBCK="R"
     22 N MSG
     23 S VALMBG=1
     24 Q:'MSGIEN
     25 D SHOWMSG($P(MSGIEN,"^"),$P(MSGIEN,"^",2))
     26 Q
     27 ;
     28PICKMSG() ;
     29 ;ask the user to select a message & return its ien
     30 N MSGIEN,DIR,COUNT,LIST
     31 D FULL^VALM1
     32 S DIR(0)="F3:30"
     33 S DIR("A")="Message ID"
     34 S DIR("?")="Enter the full Message Control ID or Batch Control ID of the message, or '^' to exit."
     35PICK D ^DIR
     36 I $D(DIRUT)!(Y="") Q 0
     37 I $G(@VALMAR@("INDEX",Y)) Q $G(@VALMAR@("INDEX",Y))
     38 S COUNT=$$FINDMSG^HLOMSG1(Y,.LIST)
     39 I COUNT="0" W !!,"That message can not be found! Try Again",! G PICK
     40 I COUNT=1 Q LIST(1)
     41 I COUNT>1 D
     42 .N ITEM
     43 .W !,"There is more than one message with that ID! You must choose one to display.",1
     44 .S ITEM=0
     45 .F  S ITEM=$O(LIST(ITEM)) Q:'ITEM  D
     46 ..N MSG
     47 ..Q:'$$GETMSG^HLOMSG(+LIST(ITEM),.MSG)
     48 ..W !,"[",ITEM,"]","  DT/TM: ",$$FMTE^XLFDT(MSG("DT/TM CREATED"),2),"   STATUS: ",MSG("STATUS")
     49 .S DIR(0)="NO^1:"_COUNT,DIR("A")="Choose",DIR("?")="Choose one message from the list"
     50 .D ^DIR
     51 .I Y S Y=LIST(Y)
     52 Q Y
     53 ;
     54HELP ;Help code
     55 S X="?" D DISP^XQORM1 W !!
     56 Q
     57 ;
     58EXIT ;Exit code
     59 D CLEAN^VALM10
     60 D CLEAR^VALM1
     61 S VALMBCK="R"
     62 ;
     63 Q
     64 ;
     65EXPND ;Expand code
     66 Q
     67 ;
     68CJ(STRING,LEN) ;
     69 Q $$CJ^XLFSTR(STRING,LEN)
     70LJ(STRING,LEN) ;
     71 Q $$LJ^XLFSTR(STRING,LEN)
     72SP(LEN,CHAR) ;
     73 ;return padding - " " is the default pad character
     74 N STR
     75 S:$G(CHAR)="" CHAR=" "
     76 S $P(STR,CHAR,LEN)=CHAR
     77 Q STR
     78 ;
     79SHOWMSG(MSGIEN,SUBIEN) ;
     80 ;Description:
     81 ;
     82 ;Input:
     83 ;Output:
     84 ;
     85 N MSG,I,TEMP,LINE
     86 S VALMCNT=0
     87 S SUBIEN=+$G(SUBIEN)
     88 I '$$GETMSG^HLOMSG(MSGIEN,.MSG) W !,"UNABLE TO DISPLAY THE MESSAGE",!! Q
     89 I SUBIEN D GETMSGB^HLOMSG1(.MSG,SUBIEN,.MSG)
     90 ;
     91 S I=0
     92 ;** administrative information **
     93 S @VALMAR@($$I,0)=$$CJ("Administrative Information",80)
     94 D CNTRL^VALM10(VALMCNT,26,30,IORVON,IORVOFF)
     95 S LINE="MsgID: "_$$LJ(MSG("ID"),18)
     96 S LINE=LINE_"Status: "_$$LJ(MSG("STATUS"),5)
     97 S:MSG("ACK TO")]"" LINE=LINE_$$LJ(" Ack To:",14)_MSG("ACK TO")
     98 S:MSG("ACK BY")]"" LINE=LINE_$$LJ(" Ack'd By:",14)_MSG("ACK BY")
     99 S @VALMAR@($$I,0)=LINE
     100 I MSG("STATUS","ERROR TEXT")]"" S @VALMAR@($$I,0)="Error: "_"** "_MSG("STATUS","ERROR TEXT")_" **"
     101 S @VALMAR@($$I,0)="Dir:   "_$$LJ($S(MSG("DIRECTION")="IN":"INCOMING",1:"OUTGOING"),10)_$$LJ("  Trans Dt/Tm: ",12)_$$FMTE^XLFDT(MSG("DT/TM"),2)_$$LJ("  Purge DT/TM: ",8)_$$FMTE^XLFDT(MSG("STATUS","PURGE"),2)
     102 S @VALMAR@($$I,0)="Link:  "_$$LJ(MSG("STATUS","LINK NAME"),29)_"   "_$$LJ("Queue: ",13)_MSG("STATUS","QUEUE")
     103 I MSG("STATUS","ACCEPT ACK'D") D
     104 .S @VALMAR@($$I,0)="Accept Ack: "_$$LJ(MSG("STATUS","ACCEPT ACK ID"),26)_$$LJ(" At: ",14)_$$FMTE^XLFDT(MSG("STATUS","ACCEPT ACK DT/TM"),2)
     105 .S @VALMAR@($$I,0)="   "_MSG("STATUS","ACCEPT ACK MSA")
     106 I MSG("DIRECTION")="IN" D
     107 .S LINE="App Response Rtn: "
     108 .I $L($G(MSG("STATUS","APP ACK RESPONSE"))) S LINE=$$LJ(LINE_MSG("STATUS","APP ACK RESPONSE"),38)_" Executed: "_$S(MSG("STATUS","APP HANDOFF"):"   YES",1:"   NO")
     109 .S @VALMAR@($$I,0)=LINE
     110 I MSG("DIRECTION")="OUT",(MSG("STATUS","APP ACK'D")!MSG("STATUS","ACCEPT ACK'D")) D
     111 .S LINE=""
     112 .I MSG("STATUS","ACCEPT ACK'D") D
     113 ..I MSG("STATUS","ACCEPT ACK RESPONSE")="" S MSG("STATUS","ACCEPT ACK RESPONSE")="n/a"
     114 ..S LINE="Accept Ack Rtn: "_MSG("STATUS","ACCEPT ACK RESPONSE")
     115 .S LINE=$$LJ(LINE,39)
     116 .I MSG("STATUS","APP ACK'D") D
     117 ..I MSG("STATUS","APP ACK RESPONSE")="" S MSG("STATUS","APP ACK RESPONSE")="n/a"
     118 ..S LINE=LINE_"App Ack Rtn: "_MSG("STATUS","APP ACK RESPONSE")
     119 .S @VALMAR@($$I,0)=LINE
     120 ;
     121 ;** the message text **
     122 S @VALMAR@($$I,0)=""
     123 I '$G(SUBIEN) D
     124 .S @VALMAR@($$I,0)=$$CJ("Message Text",80)
     125 .D CNTRL^VALM10(VALMCNT,33,16,IORVON,IORVOFF)
     126 E  D
     127 .S @VALMAR@($$I,0)=$$CJ("Individual Message Text (Batched)",80)
     128 .D CNTRL^VALM10(VALMCNT,23,35,IORVON,IORVOFF)
     129 D SHOWBODY(.MSG,$G(SUBIEN))
     130 ;
     131 ;** display its application acknowledgment **
     132 I MSG("ACK BY")]"",$$FINDMSG^HLOMSG1(MSG("ACK BY"),.TEMP)=1 S MSGIEN=TEMP(1) D
     133 .N MSG
     134 .Q:'$$GETMSG^HLOMSG(+MSGIEN,.MSG)
     135 .I $P(MSGIEN,"^",2) D GETMSGB^HLOMSG1(.MSG,$P(MSGIEN,"^",2),.MSG)
     136 .S @VALMAR@($$I,0)=""
     137 .S @VALMAR@($$I,0)=$$CJ("Application Acknowledgment",80)
     138 .D CNTRL^VALM10(VALMCNT,26,30,IORVON,IORVOFF)
     139 .D SHOWBODY(.MSG,$P(MSGIEN,"^",2))
     140 ;
     141 ;** display the original message **
     142 I MSG("ACK TO")]"",$$FINDMSG^HLOMSG1(MSG("ACK TO"),.TEMP)=1 S MSGIEN=TEMP(1) D
     143 .N MSG
     144 .Q:'$$GETMSG^HLOMSG(+MSGIEN,.MSG)
     145 .I $P(MSGIEN,"^",2) D GETMSGB^HLOMSG1(.MSG,$P(MSGIEN,"^",2),.MSG)
     146 .S @VALMAR@($$I,0)=""
     147 .S @VALMAR@($$I,0)=$$CJ("Original Message",80)
     148 .D CNTRL^VALM10(VALMCNT,26,30,IORVON,IORVOFF)
     149 .D SHOWBODY(.MSG,$P(MSGIEN,"^",2))
     150 Q
     151 ;
     152SHOWBODY(MSG,SUBIEN) ;
     153 N NODE,I,SEG,QUIT
     154 S QUIT=0
     155 M SEG=MSG("HDR")
     156 D ADD(.SEG)
     157 S MSG("BATCH","CURRENT MESSAGE")=0
     158 I MSG("BATCH") D
     159 .I $G(SUBIEN) D  Q
     160 ..S MSG("BATCH","CURRENT MESSAGE")=SUBIEN
     161 ..F  Q:'$$HLNEXT^HLOMSG(.MSG,.SEG)  D ADD(.SEG)
     162 .S MSG("BATCH","CURRENT MESSAGE")=0
     163 .N LAST S LAST=0
     164 .F  Q:'$$NEXTMSG^HLOMSG(.MSG,.SEG)  D  Q:QUIT
     165 ..D ADD(.SEG)
     166 ..S LAST=MSG("BATCH","CURRENT MESSAGE")
     167 ..F  Q:'$$HLNEXT^HLOMSG(.MSG,.SEG)  D ADD(.SEG)
     168 .I MSG("DIRECTION")="OUT" K SEG S SEG(1)="BTS"_$E($G(NODE(1)),4)_LAST D ADD(.SEG)
     169 E  D
     170 .F  Q:'$$HLNEXT^HLOMSG(.MSG,.SEG)  D  Q:QUIT
     171 ..D ADD(.SEG)
     172 Q
     173I() ;
     174 S VALMCNT=VALMCNT+1
     175 Q VALMCNT
     176ADD(SEG) ;
     177 N QUIT,I,J,LINE
     178 S QUIT=0
     179 S (I,J)=1
     180 S LINE(1)=$E(SEG(1),1,80),SEG(1)=$E(SEG(1),81,9999)
     181 I SEG(1)="" K SEG(1)
     182 D SHIFT(.I,.J)
     183 S @VALMAR@($$I,0)=LINE(1)
     184 S I=1
     185 F  S I=$O(LINE(I)) Q:'I  D
     186 .S @VALMAR@($$I,0)=LINE(I)
     187 .D CNTRL^VALM10(VALMCNT,1,1,IORVON,IORVOFF)
     188 Q
     189 ;
     190SHIFT(I,J) ;
     191 I '$D(SEG(I)) S I=$O(SEG(0)) Q:'I
     192 I $L(LINE(J))<80 D
     193 .N LEN
     194 .S LEN=$L(LINE(J))
     195 .S LINE(J)=LINE(J)_$E(SEG(I),1,80-LEN)
     196 .S SEG(I)=$E(SEG(I),81-LEN,9999)
     197 .I SEG(I)="" K SEG(I)
     198 E  D
     199 .S J=J+1
     200 .S LINE(J)="-"
     201 D SHIFT(.I,.J)
     202 Q
     203 ;
     204SCRLMODE ;scroll mode
     205 Q:'$L(HLRFRSH)
     206 N QUIT,IOTM,IOBM,DX,DY,LINE,IOTM,IOBM
     207 W !!,IOINHI,"Hit any key to escape scroll mode...",IOINORM
     208 S IOTM=3,IOBM=23
     209 S QUIT=0
     210 S LINE=$S(VALMCNT<17:1,1:17)
     211 W @IOSTBM
     212 S DX=1,DY=$S(VALMCNT<17:VALMCNT+1,1:17) X IOXY
     213 F I=1:1 D  Q:QUIT
     214 .;every 10 seconds refresh the data
     215 .I I>42 D @HLRFRSH S I=0
     216 .I LINE+1>VALMCNT D
     217 ..S TEMP=$G(@VALMAR@(LINE,0))
     218 ..W !,IOUON,TEMP_$$SP(80-$L(TEMP)),IOUOFF
     219 .E  W !,$G(@VALMAR@(LINE,0))
     220 .S LINE=LINE+1
     221 .I LINE>VALMCNT S LINE=1
     222 .I (I=22)!(I=43) R *C:5 I $T S QUIT=1 Q
     223 S VALMBG=LINE-23 I VALMBG<0 S VALMBG=1
     224 S VALMBCK="R"
     225 Q
     226HLP ;
     227 Q
     228 ;
     229IFOPEN(LINK) ;
     230 ;returns 1 if the link can be opened, otherwise 0
     231 ;
     232 ;Inputs:
     233 ;  LINK - name of the link (required), optionally post-fixed with ":"_<port #>, will default to that defined for link
     234 ;
     235 N LINKNAME,LINKARY,POP,IO,IOF,IOST,OPEN,PORT
     236 S OPEN=0
     237 S LINKNAME=$P(LINK,":")
     238 S PORT=$P(LINK,":",2)
     239 Q:LINKNAME="" 0
     240 Q:'$$GETLINK^HLOTLNK(LINKNAME,.LINKARY) 0
     241 S:PORT LINKARY("PORT")=PORT
     242 Q:'$G(LINKARY("PORT")) 0
     243 I LINKARY("IP")="",LINKARY("DOMAIN")="",LINKARY("LLP")="TCP",LINKARY("SERVER") D
     244 .N DATA
     245 .S LINKARY("DOMAIN")=$P($G(^HLD(779.1,1,0)),"^")
     246 .Q:LINKARY("DOMAIN")=""
     247 .S DATA(.08)=LINKARY("DOMAIN")
     248 .Q:$$UPD^HLOASUB1(870,LINKARY("IEN"),.DATA)
     249 D:$G(LINKARY("IP"))'=""
     250 .D CALL^%ZISTCP(LINKARY("IP"),LINKARY("PORT"),15)
     251 .S OPEN='POP
     252 I 'OPEN,LINKARY("DOMAIN")'="",$G(^HLTMP("DNS LAST",LINKARY("IEN")))<$$DT^XLFDT D
     253 .N IP
     254 .S ^HLTMP("DNS LAST",LINKARY("IEN"))=$$DT^XLFDT
     255 .S IP=$$DNS^HLOTCP(LINKARY("DOMAIN"))
     256 .I IP'="",IP'=LINKARY("IP") D
     257 ..N DATA
     258 ..S DATA(400.01)=IP,LINKARY("IP")=IP
     259 ..Q:$$UPD^HLOASUB1(870,LINKARY("IEN"),.DATA)
     260 ..D CALL^%ZISTCP(LINKARY("IP"),LINKARY("PORT"),15)
     261 ..S OPEN='POP
     262 C:OPEN IO
     263 ;D CLOSE^%ZISTCP
     264 Q OPEN
Note: See TracChangeset for help on using the changeset viewer.