| [613] | 1 | XMJMP ;ISC-SF/GMB-Print,Backup messages ;12/04/2002  10:53
 | 
|---|
 | 2 |  ;;8.0;MailMan;**9**;Jun 28, 2002
 | 
|---|
 | 3 |  ; PRINT  Replaces ENTPRT^XMA0,^XMA02,ENTPRT^XMAP,QE2^XMA5
 | 
|---|
 | 4 |  ; BACKUP Replaces E^XMA1,ENT8^XMAH,ENTR^XMAP,ENTBCK^XMAP
 | 
|---|
 | 5 |  ; (ISC-WASH/CAP/THM)
 | 
|---|
 | 6 | PRINT(XMDUZ,XMK,XMZ,XMPRTHDR,XMBROWSE) ; Print
 | 
|---|
 | 7 |  ; XMPRTHDR 1=Print header
 | 
|---|
 | 8 |  ;          0=don't (headerless print)
 | 
|---|
 | 9 |  ; XMRECIPS 0=Don't print recipients
 | 
|---|
 | 10 |  ;          1=Print summary recipients
 | 
|---|
 | 11 |  ;          2=Print detail recipients
 | 
|---|
 | 12 |  ; XMBROWSE 0=Print normally
 | 
|---|
 | 13 |  ;          1=Direct the print to the VA FileMan Browser
 | 
|---|
 | 14 |  N XMWHICH,XMRESPS,XMABORT,XMRECIPS,XMSAVE,ZTSK
 | 
|---|
 | 15 |  S XMABORT=0
 | 
|---|
 | 16 |  I $G(XMBROWSE) S XMRECIPS=0
 | 
|---|
 | 17 |  E  D QRECIP(.XMRECIPS,.XMABORT) Q:XMABORT
 | 
|---|
 | 18 |  S XMRESPS=$$RESP^XMXUTIL2(XMZ)
 | 
|---|
 | 19 |  I XMRESPS D  Q:XMABORT
 | 
|---|
 | 20 |  . S XMWHICH="0-"_XMRESPS
 | 
|---|
 | 21 |  . D WHICH(XMZ,XMRESPS,$$EZBLD^DIALOG(34500),.XMWHICH,.XMABORT) ; Print
 | 
|---|
 | 22 |  . ; If responses includes from x through the end, then set it so that
 | 
|---|
 | 23 |  . ; if the user queues for later printing, any new add'l responses
 | 
|---|
 | 24 |  . ; will be printed, too.
 | 
|---|
 | 25 |  . I XMWHICH["-",$P(XMWHICH,"-",$L(XMWHICH,"-"))=XMRESPS S XMWHICH=$P(XMWHICH,"-",1,$L(XMWHICH,"-")-1)_"-"
 | 
|---|
 | 26 |  E  S XMWHICH="0-"
 | 
|---|
 | 27 |  S:$G(XMPRTHDR)="" XMPRTHDR=1  ; default is to print with headers
 | 
|---|
 | 28 |  F I="DUZ","XMDUZ","XMV(","XMK","XMZ","XMWHICH","XMRECIPS","XMPRTHDR" S XMSAVE(I)=""
 | 
|---|
 | 29 |  I $D(XMSECURE) F I="XMPAKMAN","XMSECURE","XMSECURE(" S XMSAVE(I)=""
 | 
|---|
 | 30 |  I $G(XMBROWSE) N IOP,DDBDMSG S IOP="BROWSER",DDBDMSG=$$EZBLD^DIALOG(34537,XMZ)_" "_$$ZSUBJ^XMXUTIL2(XMZ) ; (Instead of "VA FileMan Browser")
 | 
|---|
 | 31 |  D EN^XUTMDEVQ("PRTMSGX^XMJMP",$$EZBLD^DIALOG(34501),.XMSAVE,,1) ; MailMan: Print
 | 
|---|
 | 32 |  I $D(ZTSK) W !,$$EZBLD^DIALOG(34501.1,ZTSK) ; Request queued.  Task number: |1|
 | 
|---|
 | 33 |  Q
 | 
|---|
 | 34 | PRTMSG(XMDUZ,XMK,XMZ,XMWHICH,XMRECIPS,XMPRTHDR) ;
 | 
|---|
 | 35 | PRTMSGX ;
 | 
|---|
 | 36 | PRINTMSG ;
 | 
|---|
 | 37 |  N XMKN,XMRESPS,XMZREC,XMPTR
 | 
|---|
 | 38 |  S XMZREC=$G(^XMB(3.9,XMZ,0)) Q:XMZREC=""
 | 
|---|
 | 39 |  D BSKT^XMJMP1(XMDUZ,XMZ,.XMK,.XMKN)
 | 
|---|
 | 40 |  D RESPONSE(XMDUZ,XMZ,.XMRESPS,.XMPTR)
 | 
|---|
 | 41 |  W:$E($G(IOST),1,2)="C-" @IOF
 | 
|---|
 | 42 |  D:XMPRTHDR IDHDR(XMDUZ)
 | 
|---|
 | 43 |  D PRINTIT^XMJMP1(XMDUZ,XMK,XMKN,XMZ,XMZREC,XMRESPS,XMPTR,XMWHICH,XMRECIPS,0,XMPRTHDR)
 | 
|---|
 | 44 |  I $D(ZTQUEUED) S ZTREQ="@" D ^%ZISC ; This close device is needed to preserve the temp global used by p-message.
 | 
|---|
 | 45 |  Q
 | 
|---|
 | 46 | IDHDR(XMDUZ) ; Header: "MailMan msg for..."
 | 
|---|
 | 47 |  N XMREC,XMPARM
 | 
|---|
 | 48 |  S XMREC=$G(^VA(200,XMDUZ,0))
 | 
|---|
 | 49 |  W $C(13),$$EZBLD^DIALOG(34502,XMV("NAME")) ; MailMan message for
 | 
|---|
 | 50 |  I $P(XMREC,U,9)'="",$D(^DIC(3.1,+$P(XMREC,U,9),0)) W "  ",$P(^(0),U,1) ; VA TITLE
 | 
|---|
 | 51 |  S XMPARM(1)=^XMB("NETNAME"),XMPARM(2)=$$MMDT^XMXUTIL1($$NOW^XLFDT)
 | 
|---|
 | 52 |  W !,$$EZBLD^DIALOG(34503,.XMPARM),! ; Printed at site  date
 | 
|---|
 | 53 |  Q
 | 
|---|
 | 54 | QRECIP(XMRECIPS,XMABORT) ;
 | 
|---|
 | 55 |  N DIR,DIRUT,Y,XMSUMRY
 | 
|---|
 | 56 |  S DIR(0)="Y"
 | 
|---|
 | 57 |  S DIR("A")=$$EZBLD^DIALOG(34504) ; Print recipient list
 | 
|---|
 | 58 |  S DIR("B")=$$EZBLD^DIALOG(39053) ; No
 | 
|---|
 | 59 |  D BLD^DIALOG(34505,"","","DIR(""?"")")
 | 
|---|
 | 60 |  D ^DIR I $D(DIRUT) S XMABORT=1 Q
 | 
|---|
 | 61 |  I Y=0 S XMRECIPS=0 Q
 | 
|---|
 | 62 |  S XMSUMRY=$$EZBLD^DIALOG(34507)
 | 
|---|
 | 63 |  S DIR(0)="SM^"_$$EZBLD^DIALOG(34506)_";"_XMSUMRY
 | 
|---|
 | 64 |  S DIR("A")=$$EZBLD^DIALOG(34508) ; Print Detail or Summary recipient chain
 | 
|---|
 | 65 |  S DIR("B")=$P(XMSUMRY,":",2,99) ; Summary
 | 
|---|
 | 66 |  D ^DIR I $D(DIRUT) S XMABORT=1 Q
 | 
|---|
 | 67 |  S XMRECIPS=$S(Y=$P(XMSUMRY,":",1):1,1:2)
 | 
|---|
 | 68 |  Q
 | 
|---|
 | 69 | DISPMSG(XMDUZ,XMK,XMKN,XMZ,XMSECBAD,XMNOBACK) ; Display message
 | 
|---|
 | 70 |  N XMRESPS,XMRESP,XMPTR,XMZREC,XMBACKUP
 | 
|---|
 | 71 |  S XMZREC=^XMB(3.9,XMZ,0)
 | 
|---|
 | 72 |  S XMPAKMAN=$$PAKMAN^XMXSEC1(XMZ,XMZREC)
 | 
|---|
 | 73 |  D RESPONSE(XMDUZ,XMZ,.XMRESPS,.XMPTR,.XMRESP)
 | 
|---|
 | 74 |  I XMRESP'="",XMRESPS S XMRESP=XMRESP+1 I XMRESP>XMRESPS,'$G(XMNOBACK) S XMBACKUP=1
 | 
|---|
 | 75 |  I XMDUZ=.5,XMK>999 S XMRESP=XMRESPS+1 K:$D(XMBACKUP) XMBACKUP
 | 
|---|
 | 76 |  E  I $D(^XMB(3.9,XMZ,"K")),'$D(XMSECURE),'$$KEYOK^XMJMCODE(XMZ,$P(XMZREC,U,10)) S XMSECBAD=1 Q
 | 
|---|
 | 77 |  W @IOF
 | 
|---|
 | 78 |  D PRINTIT^XMJMP1(XMDUZ,XMK,XMKN,XMZ,XMZREC,XMRESPS,XMPTR,+XMRESP_"-",0,1,1)
 | 
|---|
 | 79 |  I $G(XMBACKUP) W !!,$$EZBLD^DIALOG(34509) ; You are at the end of this message.  Enter 'B' to Backup and review it.
 | 
|---|
 | 80 |  Q
 | 
|---|
 | 81 | RESPONSE(XMDUZ,XMZ,XMRESPS,XMPTR,XMRESP) ;
 | 
|---|
 | 82 |  ; XMRESP="" if the user hasn't read the message at all
 | 
|---|
 | 83 |  ;        0  if the user has read the original message only
 | 
|---|
 | 84 |  ;        n  if the user has read thru response n
 | 
|---|
 | 85 |  S XMRESPS=+$P($G(^XMB(3.9,XMZ,3,0)),U,4)
 | 
|---|
 | 86 |  ;S XMPTR=+$O(^XMB(3.9,XMZ,1,"C",$S(XMDUZ=.6:DUZ,1:XMDUZ),0))
 | 
|---|
 | 87 |  S XMPTR=+$O(^XMB(3.9,XMZ,1,"C",XMDUZ,0))
 | 
|---|
 | 88 |  S XMRESP=$P($G(^XMB(3.9,XMZ,1,XMPTR,0)),U,2)
 | 
|---|
 | 89 |  Q
 | 
|---|
 | 90 | CHKRESP(XMDUZ,XMZO,XMRESPSO,XMRESP) ;
 | 
|---|
 | 91 |  N XMRESPS
 | 
|---|
 | 92 |  S XMRESPS=+$P($G(^XMB(3.9,XMZO,3,0)),U,4)
 | 
|---|
 | 93 |  Q:XMRESPS=+XMRESP  ; No new responses
 | 
|---|
 | 94 |  I XMRESPSO>XMRESP D  Q:XMRESPSO=XMRESPS
 | 
|---|
 | 95 |  . I XMRESPSO-1>XMRESP D
 | 
|---|
 | 96 |  . . ; >> You haven't read responses |1|-|2|.  You may backup to see them. <<
 | 
|---|
 | 97 |  . . N XMPARM
 | 
|---|
 | 98 |  . . S XMPARM(1)=XMRESP+1,XMPARM(2)=XMRESPSO
 | 
|---|
 | 99 |  . . W !,$$EZBLD^DIALOG(34510,.XMPARM)
 | 
|---|
 | 100 |  . E  W !,$$EZBLD^DIALOG(34511,XMRESP+1) ; >> You haven't read response |1|.  You may backup to see it. <<
 | 
|---|
 | 101 |  . S XMRESP=XMRESPSO
 | 
|---|
 | 102 |  N XMZ
 | 
|---|
 | 103 |  F  S XMRESP=$O(^XMB(3.9,XMZO,3,XMRESP)) Q:'XMRESP  S XMZ=$P($G(^(XMRESP,0)),U,1) I XMZ,$P($G(^XMB(3.9,XMZ,0)),U,2)'=XMDUZ Q
 | 
|---|
 | 104 |  Q:'XMRESP
 | 
|---|
 | 105 |  W !,$$EZBLD^DIALOG(34512,XMRESP) ; >> Response |1| has arrived - you may backup to see it. <<
 | 
|---|
 | 106 |  Q
 | 
|---|
 | 107 | BACKUP(XMDUZ,XMK,XMKN,XMZ) ; Backup
 | 
|---|
 | 108 |  N XMWHICH,XMRESPS,XMABORT,XMZREC,XMPTR
 | 
|---|
 | 109 |  S XMZREC=^XMB(3.9,XMZ,0)
 | 
|---|
 | 110 |  I $D(^XMB(3.9,XMZ,"K")),'$D(XMSECURE) Q:'$$KEYOK^XMJMCODE(XMZ,$P(XMZREC,U,10))
 | 
|---|
 | 111 |  S XMABORT=0
 | 
|---|
 | 112 |  D RESPONSE(XMDUZ,XMZ,.XMRESPS,.XMPTR,.XMWHICH)
 | 
|---|
 | 113 |  I XMRESPS D HOWMUCH^XMJMP1(XMZ,XMRESPS,.XMWHICH,.XMABORT) Q:XMABORT
 | 
|---|
 | 114 |  W @IOF
 | 
|---|
 | 115 |  D PRINTIT^XMJMP1(XMDUZ,XMK,XMKN,XMZ,XMZREC,XMRESPS,XMPTR,XMWHICH,0,1,1)
 | 
|---|
 | 116 |  Q
 | 
|---|
 | 117 | WHICH(XMZ,XMRESPS,XMVERB,XMWHICH,XMABORT) ;
 | 
|---|
 | 118 |  N DIR,DIRUT,Y,XMTEXT
 | 
|---|
 | 119 |  ; There is 1 response. / There are X responses. Response 0 is the original message.  (?? shows index)
 | 
|---|
 | 120 |  D BLD^DIALOG($S(XMRESPS=1:34514,1:34515),XMRESPS,"","XMTEXT")
 | 
|---|
 | 121 |  M DIR("A")=XMTEXT
 | 
|---|
 | 122 |  S DIR("A")=$$EZBLD^DIALOG(34516,XMVERB) ; Select the responses to |1|:
 | 
|---|
 | 123 |  S:$D(XMWHICH) DIR("B")=XMWHICH
 | 
|---|
 | 124 |  S DIR("PRE")="I X?.E1N1""-"" S X=X_XMRESPS W XMRESPS"
 | 
|---|
 | 125 |  S DIR(0)="LACO^0:"_XMRESPS
 | 
|---|
 | 126 |  S DIR("??")="^D HELPRESP^XMJMP1(XMZ,XMRESPS)"
 | 
|---|
 | 127 |  D ^DIR I $D(DTOUT)!$D(DUOUT) S XMABORT=1 Q
 | 
|---|
 | 128 |  S:X'="" XMWHICH=$E(Y,1,$L(Y)-1)
 | 
|---|
 | 129 |  Q
 | 
|---|
 | 130 | PONE(XMDUZ,XMK,XMZ,XMPRTHDR,XMABORT) ;
 | 
|---|
 | 131 | PONEX ; Print one message.  Check it to see if
 | 
|---|
 | 132 |  ; the user is allowed to see it.  (confidential, scrambled)
 | 
|---|
 | 133 |  ; If not, print an error message.
 | 
|---|
 | 134 |  N XMZREC
 | 
|---|
 | 135 |  I $G(XMK)="" S XMK=$$BSKT^XMXUTIL2(XMDUZ,XMZ)
 | 
|---|
 | 136 |  I '$D(^XMB(3.9,XMZ,0)),XMK D ZAPIT^XMJBM(XMDUZ,XMK,XMZ) S XMABORT=1 Q
 | 
|---|
 | 137 |  S XMZREC=^XMB(3.9,XMZ,0)
 | 
|---|
 | 138 |  I XMDUZ'=DUZ,'$$SURRACC^XMXSEC(XMDUZ,"",XMZ,XMZREC) D  Q  ; "access"
 | 
|---|
 | 139 |  . D SHOW^XMJERR
 | 
|---|
 | 140 |  . S XMABORT=1
 | 
|---|
 | 141 |  N XMSECURE,XMPAKMAN ; Important 'new' - part of scramble and packman handling
 | 
|---|
 | 142 |  S XMPAKMAN=$$PAKMAN^XMXSEC1(XMZ,XMZREC)
 | 
|---|
 | 143 |  I $D(^XMB(3.9,XMZ,"K")),'$$KEYOK^XMJMCODE(XMZ,$P(XMZREC,U,10)) S XMABORT=1 Q
 | 
|---|
 | 144 |  N XMRECIPS,XMRESPS,XMWHICH
 | 
|---|
 | 145 |  D QRECIP(.XMRECIPS,.XMABORT) Q:XMABORT
 | 
|---|
 | 146 |  D RESPONSE(XMDUZ,XMZ,.XMRESPS,"",.XMWHICH)
 | 
|---|
 | 147 |  I XMRESPS D  Q:XMABORT
 | 
|---|
 | 148 |  . N XMRESP
 | 
|---|
 | 149 |  . S XMRESP=XMWHICH
 | 
|---|
 | 150 |  . I $D(^XMB(3.7,XMDUZ,"N0",XMK,XMZ)),XMRESP S:XMRESP'=XMRESPS XMRESP=XMRESP+1
 | 
|---|
 | 151 |  . E  S XMRESP=0
 | 
|---|
 | 152 |  . I XMRESP=XMRESPS S XMWHICH=XMRESP
 | 
|---|
 | 153 |  . E  S XMWHICH=XMRESP_"-"_XMRESPS
 | 
|---|
 | 154 |  . D WHICH(XMZ,XMRESPS,$$EZBLD^DIALOG(34500),.XMWHICH,.XMABORT) ; Print
 | 
|---|
 | 155 |  E  S XMWHICH=0
 | 
|---|
 | 156 |  F I="DUZ","XMDUZ","XMV(","XMK","XMZ","XMWHICH","XMRECIPS","XMPRTHDR" S XMSAVE(I)=""
 | 
|---|
 | 157 |  I $D(XMSECURE) F I="XMPAKMAN","XMSECURE","XMSECURE(" S XMSAVE(I)=""
 | 
|---|
 | 158 |  D EN^XUTMDEVQ("PRTMSGX^XMJMP",$$EZBLD^DIALOG(34501),.XMSAVE) ; MailMan: Print
 | 
|---|
 | 159 |  I $G(POP) S XMABORT=1
 | 
|---|
 | 160 |  Q
 | 
|---|
 | 161 |  ;PLIST(XMDUZ,XMZLIST,XMRECIPS,XMPRTHDR,XMMSG)
 | 
|---|
 | 162 | PLISTX ;
 | 
|---|
 | 163 |  ; Print a list of messages.
 | 
|---|
 | 164 |  ; Check each message as we come to it to see if
 | 
|---|
 | 165 |  ; the user is allowed to see it.  (confidential, scrambled)
 | 
|---|
 | 166 |  ; If not, print an error message.
 | 
|---|
 | 167 |  N I,J,XMK,XMKN,XMZ,XMFIRST,XMCNT,XMABORT
 | 
|---|
 | 168 |  S XMFIRST=1,(XMCNT,XMABORT,I)=0
 | 
|---|
 | 169 |  F  S I=$O(XMZLIST(I)) Q:'I  D  Q:XMABORT
 | 
|---|
 | 170 |  . F J=1:1:$L(XMZLIST(I),",") D  Q:XMABORT
 | 
|---|
 | 171 |  . . S XMZ=$P(XMZLIST(I),",",J)
 | 
|---|
 | 172 |  . . Q:'$D(^XMB(3.9,XMZ,0))
 | 
|---|
 | 173 |  . . D BSKT^XMJMP1(XMDUZ,XMZ,.XMK,.XMKN)
 | 
|---|
 | 174 |  . . D PRTMULT(XMDUZ,XMK,XMKN,XMZ,XMRECIPS,XMPRTHDR,.XMFIRST,.XMCNT,.XMABORT)
 | 
|---|
 | 175 |  Q:$D(ZTQUEUED)
 | 
|---|
 | 176 |  S XMMSG=$$EZBLD^DIALOG($S(XMCNT=1:34318.1,1:34318),XMCNT)
 | 
|---|
 | 177 |  Q
 | 
|---|
 | 178 | PRTMULT(XMDUZ,XMK,XMKN,XMZ,XMRECIPS,XMPRTHDR,XMFIRST,XMCNT,XMABORT) ; Multiple message print
 | 
|---|
 | 179 |  N XMNOGO,XMZREC,XMRESPS,XMRESP,XMPTR,XMSECURE,XMPAKMAN
 | 
|---|
 | 180 |  I $D(ZTQUEUED) S ZTREQ="@"
 | 
|---|
 | 181 |  S XMNOGO=0
 | 
|---|
 | 182 |  S XMZREC=$G(^XMB(3.9,XMZ,0))
 | 
|---|
 | 183 |  I XMZREC="" D ZAPIT^XMXMSGS2(XMDUZ,XMK,XMZ) Q
 | 
|---|
 | 184 |  S XMPAKMAN=$$PAKMAN^XMXSEC1(XMZ,XMZREC)
 | 
|---|
 | 185 |  D CHECK^XMJMP2(XMDUZ,XMZ,XMZREC,.XMNOGO)  Q:XMNOGO&'$D(ZTQUEUED)
 | 
|---|
 | 186 |  I $E(IOST,1,2)="C-"!'XMFIRST W @IOF
 | 
|---|
 | 187 |  S XMFIRST=0
 | 
|---|
 | 188 |  D:XMPRTHDR IDHDR(XMDUZ)
 | 
|---|
 | 189 |  I XMNOGO D NOGOMSG^XMJMP2(XMDUZ,XMZ,XMZREC,.XMNOGO) Q
 | 
|---|
 | 190 |  D RESPONSE(XMDUZ,XMZ,.XMRESPS,.XMPTR,.XMRESP)
 | 
|---|
 | 191 |  I $D(^XMB(3.7,XMDUZ,"N0",XMK,XMZ)),XMRESP S:XMRESP'=XMRESPS XMRESP=XMRESP+1
 | 
|---|
 | 192 |  E  S XMRESP=0
 | 
|---|
 | 193 |  D PRINTIT^XMJMP1(XMDUZ,XMK,XMKN,XMZ,XMZREC,XMRESPS,XMPTR,XMRESP_"-",XMRECIPS,0,XMPRTHDR,1,.XMABORT)
 | 
|---|
 | 194 |  S XMCNT=XMCNT+1
 | 
|---|
 | 195 |  ;Q:XMABORT
 | 
|---|
 | 196 |  ;I $E(IOST,1,2)="C-" D PAGE^XMXUTIL(.XMABORT)
 | 
|---|
 | 197 |  Q
 | 
|---|