| 1 | XMKP ;ISC-SF/GMB-Address and Post msg ;09/17/2002  12:52
 | 
|---|
| 2 |  ;;8.0;MailMan;**1**;Jun 28, 2002
 | 
|---|
| 3 |  ; Replaces ENT1^XMAD1,ENT^XMAD1,FINAL^XMAD1X (ISC-WASH/CAP)
 | 
|---|
| 4 | SEND(XMDUZ,XMZ,XMINSTR) ;
 | 
|---|
| 5 |  ; XMINSTR("SHARE DATE")  Delete date for mail addressed to SHARED,MAIL
 | 
|---|
| 6 |  ; XMINSTR("SHARE BSKT")  Basket for mail addressed to SHARED,MAIL
 | 
|---|
| 7 |  ; XMINSTR("SELF BSKT")   Basket to deliver to if recipient is the sender
 | 
|---|
| 8 |  N XMTOCNT,XMPRI,XMINST
 | 
|---|
| 9 |  S XMPRI=($G(XMINSTR("FLAGS"))["P")
 | 
|---|
| 10 |  D SADDRTO(XMDUZ,XMZ) ; Populate ADDRESSED TO multiple
 | 
|---|
| 11 |  D SRECIP(XMDUZ,XMZ,XMPRI,.XMTOCNT) ; Populate RECIPIENT multiple
 | 
|---|
| 12 |  I XMTOCNT!$$BRODCAST D SPOST(XMDUZ,XMZ,XMTOCNT,.XMINSTR)
 | 
|---|
| 13 |  S XMINST=""
 | 
|---|
| 14 |  F  S XMINST=$O(^XMB(3.9,XMZ,1,"AQUEUE",XMINST)) Q:'XMINST  D
 | 
|---|
| 15 |  . D REMOTE^XMKPR(XMZ,XMINST)
 | 
|---|
| 16 |  D:$D(^XMB(3.9,XMZ,1,"AFAX")) FAX^XMFAX(XMZ)
 | 
|---|
| 17 |  Q
 | 
|---|
| 18 | SPOST(XMDUZ,XMZ,XMTOCNT,XMINSTR) ;
 | 
|---|
| 19 |  N XMTSTAMP,XMPREC
 | 
|---|
| 20 |  S XMTSTAMP=$$TSTAMP^XMXUTIL1
 | 
|---|
| 21 |  S XMPREC=XMTOCNT
 | 
|---|
| 22 |  I $D(^TMP("XMY",$J,XMDUZ)) D
 | 
|---|
| 23 |  . S $P(XMPREC,U,2)=$G(XMINSTR("SELF BSKT"),1)
 | 
|---|
| 24 |  I $D(^TMP("XMY",$J,.6)) D
 | 
|---|
| 25 |  . S $P(XMPREC,U,3,4)=$G(XMINSTR("SHARE BSKT"),1)_U_$G(XMINSTR("SHARE DATE"),$$FMADD^XLFDT(DT,30))
 | 
|---|
| 26 |  I $$BRODCAST D
 | 
|---|
| 27 |  . S $P(XMPREC,U,1)=$P(^XMB(3.7,0),U,4)
 | 
|---|
| 28 |  . S $P(XMPREC,U,5)="*"
 | 
|---|
| 29 |  S ^XMBPOST("BOX",XMTSTAMP,"M",XMZ)=XMPREC
 | 
|---|
| 30 |  Q
 | 
|---|
| 31 | BRODCAST() ;
 | 
|---|
| 32 |  Q $D(^TMP("XMY",$J,$$EZBLD^DIALOG(39006))) ; * (Broadcast to all local users)
 | 
|---|
| 33 | SRECIP(XMDUZ,XMZ,XMPRI,XMTOCNT) ; "Send" to recipients
 | 
|---|
| 34 |  N XMTO,XMFDA,XMIEN,XMIENS,XMPREFIX,XMNOW
 | 
|---|
| 35 |  ; Put addressees into RECIPIENT multiple
 | 
|---|
| 36 |  S XMTO="",XMTOCNT=0
 | 
|---|
| 37 |  F  S XMTO=$O(^TMP("XMY",$J,XMTO)) Q:XMTO=""  D
 | 
|---|
| 38 |  . K XMPREFIX,XMIEN
 | 
|---|
| 39 |  . D NEW(XMZ,XMPRI,XMTO,$G(^TMP("XMY",$J,XMTO,1)),.XMFDA,.XMIENS)            ; New recipient
 | 
|---|
| 40 |  . I $D(^TMP("XMY",$J,XMTO,"F")) D
 | 
|---|
| 41 |  . . S:'$D(XMNOW) XMNOW=$$MMDT^XMXUTIL1($P(^XMB(3.9,XMZ,0),U,3))
 | 
|---|
| 42 |  . . D RCPTFWD^XMKP1("S",XMTO,.XMFDA,XMIENS,XMNOW)
 | 
|---|
| 43 |  . I +XMTO=XMTO S XMTOCNT=XMTOCNT+1
 | 
|---|
| 44 |  . E  D STATUS(XMTO,.XMFDA,XMIENS,.XMPREFIX)  ; Transmission Status
 | 
|---|
| 45 |  . D UPDATE^DIE("","XMFDA","XMIEN")
 | 
|---|
| 46 |  . S XMIENS=XMIEN(1)_","_XMZ_","
 | 
|---|
| 47 |  . I ".D.H.S."[("."_$G(XMPREFIX)_".") D OPOST(XMDUZ,XMZ,XMTO,XMIENS,XMPREFIX)
 | 
|---|
| 48 |  Q
 | 
|---|
| 49 | SADDRTO(XMDUZ,XMZ) ; Put addressees into ADDRESSED TO multiple
 | 
|---|
| 50 |  N XMTO
 | 
|---|
| 51 |  S XMTO=""
 | 
|---|
| 52 |  F  S XMTO=$O(^TMP("XMY0",$J,XMTO)) Q:XMTO=""  D ADDRTO(XMDUZ,XMZ,XMTO)
 | 
|---|
| 53 |  Q
 | 
|---|
| 54 | ADDRTO(XMDUZ,XMZ,XMTO) ;
 | 
|---|
| 55 |  N XMFDA,XMPREFIX,XMMULT
 | 
|---|
| 56 |  S XMPREFIX=$G(^TMP("XMY0",$J,XMTO,1))
 | 
|---|
| 57 |  I $D(^TMP("XMY0",$J,XMTO,"L")) D
 | 
|---|
| 58 |  . I XMTO=XMV("NAME") D  Q
 | 
|---|
| 59 |  . . D LTRADD^XMJMD(XMDUZ,XMZ,$G(^TMP("XMY0",$J,XMTO,"L")))
 | 
|---|
| 60 |  . . S XMMULT=3.911
 | 
|---|
| 61 |  . S XMMULT=3.914
 | 
|---|
| 62 |  . S XMFDA(3.914,"?+1,"_XMZ_",",2)=XMDUZ
 | 
|---|
| 63 |  . S XMFDA(3.914,"?+1,"_XMZ_",",3)=XMV("NAME")_$S(XMDUZ=DUZ:"",1:$$EZBLD^DIALOG(38008,XMV("DUZ NAME"))) ; " (Surrogate: _x_)"
 | 
|---|
| 64 |  . S XMFDA(3.914,"?+1,"_XMZ_",",4)=^TMP("XMY0",$J,XMTO,"L")
 | 
|---|
| 65 |  E  S XMMULT=3.911
 | 
|---|
| 66 |  S XMFDA(XMMULT,"?+1,"_XMZ_",",.01)=XMTO
 | 
|---|
| 67 |  S:XMPREFIX'="" XMFDA(XMMULT,"?+1,"_XMZ_",",1)=XMPREFIX
 | 
|---|
| 68 |  D UPDATE^DIE("","XMFDA")
 | 
|---|
| 69 |  Q
 | 
|---|
| 70 | NEW(XMZ,XMPRI,XMTO,XMTYPE,XMFDA,XMIENS) ;
 | 
|---|
| 71 |  S XMIENS="+1,"_XMZ_","
 | 
|---|
| 72 |  S XMFDA(3.91,XMIENS,.01)=XMTO
 | 
|---|
| 73 |  ; If addressee is also the creator of the msg, then I: or C: does not
 | 
|---|
| 74 |  ; apply.
 | 
|---|
| 75 |  I $G(XMTYPE)'="" S XMFDA(3.91,XMIENS,6.5)=XMTYPE
 | 
|---|
| 76 |  I XMPRI,XMTO=+XMTO,$P($G(^XMB(3.7,XMTO,0)),U,11) S XMFDA(3.91,XMIENS,10)=$P(^(0),U,11)   ; Priority response flag
 | 
|---|
| 77 |  Q
 | 
|---|
| 78 | STATUS(XMTO,XMFDA,XMIENS,XMPREFIX) ;
 | 
|---|
| 79 |  I $E(XMTO,1,2)="F.",$P(^XMB(1,1,0),U,19),$D(^AKF("FAXR")),$E(XMTO,3,99)=$P($G(^AKF("FAXR",^TMP("XMY",$J,XMTO),0)),U) D  Q
 | 
|---|
| 80 |  . S XMFDA(3.91,XMIENS,5)=$$EZBLD^DIALOG(39303.5) ; Awaiting Fax.
 | 
|---|
| 81 |  . S XMFDA(3.91,XMIENS,13)=^TMP("XMY",$J,XMTO)
 | 
|---|
| 82 |  I XMTO["@" D  Q
 | 
|---|
| 83 |  . S XMFDA(3.91,XMIENS,5)=$$EZBLD^DIALOG(39303.1) ; Awaiting transmission.
 | 
|---|
| 84 |  . S XMFDA(3.91,XMIENS,6)=^TMP("XMY",$J,XMTO) ; sets x-ref "AQUEUE"
 | 
|---|
| 85 |  I $E(XMTO,2,2)="." D
 | 
|---|
| 86 |  . S XMPREFIX=$E(XMTO,1,1) ; We know it is upper case
 | 
|---|
| 87 |  . Q:"SDH"'[XMPREFIX
 | 
|---|
| 88 |  . S XMFDA(3.91,XMIENS,5)=$$EZBLD^DIALOG($S(XMPREFIX="S":39303.2,XMPREFIX="D":39303.3,1:39303.4)) ; "Awaiting Server."/"Awaiting Device."/"Awaiting H.Device."
 | 
|---|
| 89 |  Q
 | 
|---|
| 90 | OPOST(XMDUZ,XMZ,XMTO,XMIENS,XMPREFIX) ;
 | 
|---|
| 91 |  I XMPREFIX="S" D SERVER^XMKPO(XMZ,XMTO,XMIENS) Q
 | 
|---|
| 92 |  I XMPREFIX="D" D DEVICE^XMKPO(XMDUZ,XMZ,XMTO,XMIENS,1) Q
 | 
|---|
| 93 |  I XMPREFIX="H" D DEVICE^XMKPO(XMDUZ,XMZ,XMTO,XMIENS,0) Q  ; Headerless
 | 
|---|
| 94 |  Q
 | 
|---|
| 95 | FWD(XMDUZ,XMZ,XMINSTR) ;
 | 
|---|
| 96 |  ; XMFWDTYP      fwding person recipient type:  I:, CC:
 | 
|---|
| 97 |  ; XMPRI         1=msg is priority msg; 0=not
 | 
|---|
| 98 |  ; XMINSTR("SHARE DATE")  Delete date for mail addressed to SHARED,MAIL
 | 
|---|
| 99 |  ; XMINSTR("SHARE BSKT")  Basket for mail addressed to SHARED,MAIL
 | 
|---|
| 100 |  ; XMINSTR("FWD BY")  String to replace standard 'Forwarded by'
 | 
|---|
| 101 |  ; XMTOLIST      Array of local recipients
 | 
|---|
| 102 |  ; XMTOCNT       Number of valid recipients
 | 
|---|
| 103 |  N XMTOLIST,XMPRI,XMFWDTYP,XMIEN,XMREMOTE,XMINST
 | 
|---|
| 104 |  S XMIEN=$O(^XMB(3.9,XMZ,1,"C",XMDUZ,0)) ; May have been fwd'd by a remote person
 | 
|---|
| 105 |  S XMFWDTYP=$S('XMIEN:"",1:$P($G(^XMB(3.9,XMZ,1,XMIEN,"T")),U))
 | 
|---|
| 106 |  S XMPRI=($P(^XMB(3.9,XMZ,0),U,7)["P")
 | 
|---|
| 107 |  D FADDRTO(XMDUZ,XMZ) ; Populate ADDRESSED TO multiple
 | 
|---|
| 108 |  D FRECIP(XMDUZ,XMZ,.XMINSTR,XMFWDTYP,XMPRI,.XMTOLIST,.XMREMOTE)
 | 
|---|
| 109 |  D:XMTOLIST(1)'=""!$$BRODCAST FPOST(XMDUZ,XMZ,.XMTOLIST,.XMINSTR)
 | 
|---|
| 110 |  S XMINST=""
 | 
|---|
| 111 |  F  S XMINST=$O(XMREMOTE(XMINST)) Q:'XMINST  D
 | 
|---|
| 112 |  . D REMOTE^XMKPR(XMZ,XMINST)
 | 
|---|
| 113 |  D:$D(^XMB(3.9,XMZ,1,"AFAX")) FAX^XMFAX(XMZ)
 | 
|---|
| 114 |  Q
 | 
|---|
| 115 | FADDRTO(XMDUZ,XMZ) ; Put addressees into ADDRESSED TO multiple
 | 
|---|
| 116 |  N XMTO
 | 
|---|
| 117 |  S XMTO=""
 | 
|---|
| 118 |  F  S XMTO=$O(^TMP("XMY0",$J,XMTO)) Q:XMTO=""  D
 | 
|---|
| 119 |  . I '$$FIND1^DIC(3.911,","_XMZ_",","QX",XMTO,"B") D  Q
 | 
|---|
| 120 |  . . D ADDRTO(XMDUZ,XMZ,XMTO)
 | 
|---|
| 121 |  . Q:'$D(^TMP("XMY0",$J,XMTO,"L"))
 | 
|---|
| 122 |  . I XMTO=XMV("NAME") D  Q
 | 
|---|
| 123 |  . . D LTRADD^XMJMD(XMDUZ,XMZ,$G(^TMP("XMY0",$J,XMTO,"L")))
 | 
|---|
| 124 |  . N XMFDA,XMIENS
 | 
|---|
| 125 |  . S XMIENS="?+1,"_XMZ_","
 | 
|---|
| 126 |  . S XMFDA(3.914,XMIENS,.01)=XMTO
 | 
|---|
| 127 |  . ; we ignore any 'prefix' because these addressees are already on the msg
 | 
|---|
| 128 |  . S XMFDA(3.914,XMIENS,2)=XMDUZ
 | 
|---|
| 129 |  . S XMFDA(3.914,XMIENS,3)=XMV("NAME")_$S(XMDUZ=DUZ:"",1:$$EZBLD^DIALOG(38008,XMV("DUZ NAME"))) ; " (Surrogate: _x_)"
 | 
|---|
| 130 |  . S XMFDA(3.914,XMIENS,4)=^TMP("XMY0",$J,XMTO,"L")
 | 
|---|
| 131 |  . D UPDATE^DIE("","XMFDA")
 | 
|---|
| 132 |  Q
 | 
|---|
| 133 | FPOST(XMDUZ,XMZ,XMTOLIST,XMINSTR) ; For local delivery
 | 
|---|
| 134 |  N XMTSTAMP,XMTOCNT,I,XMUID,XMPREC
 | 
|---|
| 135 |  S XMTSTAMP=$$TSTAMP^XMXUTIL1
 | 
|---|
| 136 |  I $D(^TMP("XMY",$J,XMDUZ)) D
 | 
|---|
| 137 |  . S $P(XMPREC,U,2)=$G(XMINSTR("SELF BSKT"),1)
 | 
|---|
| 138 |  I $D(^TMP("XMY",$J,.6)) D
 | 
|---|
| 139 |  . S $P(XMPREC,U,3,4)=$G(XMINSTR("SHARE BSKT"),1)_U_$G(XMINSTR("SHARE DATE"),$$FMADD^XLFDT(DT,30))
 | 
|---|
| 140 |  S XMUID=XMZ_U_$S(XMDUZ=.6:DUZ,1:XMDUZ)_U_$J
 | 
|---|
| 141 |  S (I,XMTOCNT)=0
 | 
|---|
| 142 |  I XMTOLIST(1)'="" F  S I=$O(XMTOLIST(I)) Q:I=""  D
 | 
|---|
| 143 |  . S XMTOCNT=XMTOCNT+$L(XMTOLIST(I),U)-1
 | 
|---|
| 144 |  . S ^XMBPOST("FWD",XMUID_U_XMTSTAMP,I)=$P(XMTOLIST(I),U,2,999)
 | 
|---|
| 145 |  I $$BRODCAST D
 | 
|---|
| 146 |  . S $P(XMPREC,U,1)=$P(^XMB(3.7,0),U,4)
 | 
|---|
| 147 |  . S $P(XMPREC,U,5)="*"
 | 
|---|
| 148 |  . I $P(^XMB(3.9,XMZ,0),U,12)'="y" S $P(^(0),U,12)="y" ; If not info only, make it so.
 | 
|---|
| 149 |  E  S $P(XMPREC,U,1)=XMTOCNT
 | 
|---|
| 150 |  S ^XMBPOST("BOX",XMTSTAMP,"M",XMUID)=XMPREC
 | 
|---|
| 151 |  Q
 | 
|---|
| 152 | FRECIP(XMDUZ,XMZ,XMINSTR,XMFWDTYP,XMPRI,XMTOLIST,XMREMOTE) ; "Forward" to recipients
 | 
|---|
| 153 |  ; XMFWDBY  Forwarded by:  name (surrogate)
 | 
|---|
| 154 |  N XMTO,XMX,XMIEN,XMFDA,XMIENS,XMPREFIX,XMFWDBY,XMNOW
 | 
|---|
| 155 |  S XMNOW=$$MMDT^XMXUTIL1($$NOW^XLFDT)
 | 
|---|
| 156 |  S XMFWDBY=$S($D(XMINSTR("FWD BY")):XMINSTR("FWD BY"),1:XMV("NAME")_$S(XMDUZ=DUZ:"",1:$$EZBLD^DIALOG(38008,XMV("DUZ NAME")))) ; " (Surrogate: _x_)"
 | 
|---|
| 157 |  ; Put addressees into RECIPIENT multiple
 | 
|---|
| 158 |  S XMTO="",XMX=1,XMTOLIST(XMX)=""
 | 
|---|
| 159 |  F  S XMTO=$O(^TMP("XMY",$J,XMTO)) Q:XMTO=""  D
 | 
|---|
| 160 |  . K XMPREFIX
 | 
|---|
| 161 |  . I +XMTO=XMTO D
 | 
|---|
| 162 |  . . S XMIEN=$O(^XMB(3.9,XMZ,1,"C",XMTO,0))
 | 
|---|
| 163 |  . E  S XMIEN=$$FIND1^DIC(3.91,","_XMZ_",",$S(XMTO["@":"O",1:"QX"),XMTO,"C")
 | 
|---|
| 164 |  . I +XMIEN=0 D  ; New recipient
 | 
|---|
| 165 |  . . N XMTYPE
 | 
|---|
| 166 |  . . ; If you are an info only recipient, then so is anyone you fwd to.
 | 
|---|
| 167 |  . . S XMTYPE=$S(XMFWDTYP'="":XMFWDTYP,1:$G(^TMP("XMY",$J,XMTO,1)))
 | 
|---|
| 168 |  . . D NEW(XMZ,XMPRI,XMTO,XMTYPE,.XMFDA,.XMIENS) ; New recipient
 | 
|---|
| 169 |  . E  D
 | 
|---|
| 170 |  . . S XMIENS=XMIEN_","_XMZ_","
 | 
|---|
| 171 |  . . S:$G(^XMB(3.9,XMZ,1,XMIEN,"D")) XMFDA(3.91,XMIENS,7)="@" ; Unterminate
 | 
|---|
| 172 |  . I +XMTO'=XMTO D
 | 
|---|
| 173 |  . . D STATUS(XMTO,.XMFDA,XMIENS,.XMPREFIX) ; Transmission Status
 | 
|---|
| 174 |  . . S:$D(XMFDA(3.91,XMIENS,6)) XMREMOTE(XMFDA(3.91,XMIENS,6))=""
 | 
|---|
| 175 |  . I $D(^TMP("XMY",$J,XMTO,"F")) D
 | 
|---|
| 176 |  . . D RCPTFWD^XMKP1("F",XMTO,.XMFDA,XMIENS,XMNOW,XMFWDBY)
 | 
|---|
| 177 |  . E  D
 | 
|---|
| 178 |  . . S XMFDA(3.91,XMIENS,8)=XMFWDBY_" "_XMNOW ; fwd by name date time
 | 
|---|
| 179 |  . . I '$D(XMINSTR("FWD BY"))!$D(XMINSTR("FWD BY XMDUZ")) S XMFDA(3.91,XMIENS,8.01)=XMDUZ  ; fwd by duz
 | 
|---|
| 180 |  . I '$D(XMFDA(3.91,XMIENS,8.02)) D  ; Filter-Forward or Regular-Forward
 | 
|---|
| 181 |  . . S XMFDA(3.91,XMIENS,8.02)=$S($G(XMINSTR("FWD BY XMDUZ"))="F":"F",1:"@")
 | 
|---|
| 182 |  . I XMIEN D
 | 
|---|
| 183 |  . . I '$D(XMFDA(3.91,XMIENS,8.03)) D
 | 
|---|
| 184 |  . . . S XMFDA(3.91,XMIENS,8.03)="@"
 | 
|---|
| 185 |  . . . S XMFDA(3.91,XMIENS,8.04)="@"
 | 
|---|
| 186 |  . . D FILE^DIE("","XMFDA")
 | 
|---|
| 187 |  . E  D
 | 
|---|
| 188 |  . . K XMIEN
 | 
|---|
| 189 |  . . D UPDATE^DIE("","XMFDA","XMIEN")
 | 
|---|
| 190 |  . . S XMIENS=XMIEN(1)_","_XMZ_","
 | 
|---|
| 191 |  . D:"^D^H^S^"[(U_$G(XMPREFIX)_U) OPOST(XMDUZ,XMZ,XMTO,XMIENS,XMPREFIX)
 | 
|---|
| 192 |  . Q:+XMTO'=XMTO  ; Quit if addressee not local
 | 
|---|
| 193 |  . I $L(XMTOLIST(XMX))+$L(XMTO)>244 S XMX=XMX+1,XMTOLIST(XMX)=""
 | 
|---|
| 194 |  . S XMTOLIST(XMX)=XMTOLIST(XMX)_U_XMTO
 | 
|---|
| 195 |  Q
 | 
|---|
| 196 | RPOST(XMDUZ,XMZ,XMZR) ;
 | 
|---|
| 197 |  N XMFDA
 | 
|---|
| 198 | RADD ; Add response to response multiple in original msg
 | 
|---|
| 199 |  S XMFDA(3.9001,"+1,"_XMZ_",",.01)=XMZR
 | 
|---|
| 200 |  D UPDATE^DIE("","XMFDA")
 | 
|---|
| 201 |  I $D(DIERR),$P(^XMB(3.9,XMZ,0),U,1)="" D  G RADD
 | 
|---|
| 202 |  . S $P(^XMB(3.9,XMZ,0),U,1)=$$EZBLD^DIALOG(34012) ; * No Subject *
 | 
|---|
| 203 |  . S ^XMB(3.9,"B",$$EZBLD^DIALOG(34012),XMZ)=""
 | 
|---|
| 204 |  ; Now put the message in the post box to be delivered.
 | 
|---|
| 205 |  ; (If this is not a locally generated reply, then XMDUZ is "NR".)
 | 
|---|
| 206 |  S ^XMBPOST("BOX",$$TSTAMP^XMXUTIL1,"R",XMZ_U_XMZR)=$P(^XMB(3.9,XMZ,1,0),U,4)_U_$S(XMDUZ=.6:DUZ,1:XMDUZ)
 | 
|---|
| 207 |  Q
 | 
|---|