[613] | 1 | XMVGROUP ;ISC-SF/GMB-Group creation/enrollment ;04/15/2003 12:50
|
---|
| 2 | ;;8.0;MailMan;**18**;Jun 28, 2002
|
---|
| 3 | ; Replaces JOIN, ENT^XMA7G & ^XMA7G1 (ISC-WASH/RJ/THM/CAP/JA)
|
---|
| 4 | ; Entry points used by MailMan options (not covered by DBIA):
|
---|
| 5 | ; EDITMG XMEDITMG - Mail Group Edit
|
---|
| 6 | ; ENROLL XMENROLL - Enroll in / Disenroll from a group
|
---|
| 7 | ; LCOORD XMMGR-MAIL-GRP-COORDINATOR
|
---|
| 8 | ; RCOORD XMMGR-MAIL-GRP-COORD-W/REMOTES
|
---|
| 9 | ; PERSONAL XMEDITPERSGROUP - Edit user's personal group.
|
---|
| 10 | ;
|
---|
| 11 | ; DBIAs:
|
---|
| 12 | ; 1544 - Use $$ISA^USRLM (Authorization/Subscription)
|
---|
| 13 | ENROLL ; Enroll in / Disenroll from a group
|
---|
| 14 | N DIC,Y,XMABORT,XMIEN,XMSELF,XMIA
|
---|
| 15 | S XMABORT=0
|
---|
| 16 | S:'$D(XMDUZ) XMDUZ=DUZ
|
---|
| 17 | S XMSELF=+$P($G(^XMB(1,1,2)),U,2) ; Is self-disenrollment allowed in a non-self enrolling mail group?
|
---|
| 18 | F D Q:XMABORT
|
---|
| 19 | . S DIC="^XMB(3.8,",DIC(0)="AEQMZ"
|
---|
| 20 | . S DIC("S")="I $S($P(^(0),U,2)=""PU"":1,$D(^XMB(3.8,+Y,1,""B"",XMDUZ)):1,1:0)"
|
---|
| 21 | . S DIC("W")="W:$D(^XMB(3.8,+Y,1,""B"",XMDUZ)) ?35,"""_$$EZBLD^DIALOG(38020)_""" I $P(^XMB(3.8,+Y,0),U,3)'=""y"" W ?43,"""_$$EZBLD^DIALOG(38021)_"""" ; Member / ...Self Enrollment Not Allowed.
|
---|
| 22 | . W !
|
---|
| 23 | . D ^DIC I Y<0 S XMABORT=1 Q
|
---|
| 24 | . S XMIEN=+Y
|
---|
| 25 | . I $D(^XMB(3.8,XMIEN,1,"B",XMDUZ)) D Q
|
---|
| 26 | . . I $P(^XMB(3.8,XMIEN,0),U,3)'="y",'XMSELF W !,$$EZBLD^DIALOG(38022.1) Q ;Self enrollment is not allowed for this mail group.
|
---|
| 27 | . . D DROP(XMIEN,XMDUZ)
|
---|
| 28 | . I $P(^XMB(3.8,XMIEN,0),U,3)'="y" W !,$$EZBLD^DIALOG(38022) Q ;Self enrollment is not allowed for this mail group.
|
---|
| 29 | . D JOIN(XMIEN,XMDUZ)
|
---|
| 30 | Q
|
---|
| 31 | JOIN(XMIEN,XMDUZ) ; Enroll in a group
|
---|
| 32 | N XMFDA
|
---|
| 33 | S XMFDA(3.81,"+1,"_XMIEN_",",.01)=XMDUZ
|
---|
| 34 | D UPDATE^DIE("","XMFDA")
|
---|
| 35 | W !,$$EZBLD^DIALOG(38023) ;You are now a member.
|
---|
| 36 | N DIR,X,Y
|
---|
| 37 | S DIR(0)="Y"
|
---|
| 38 | ; Do you want past messages to this group to be forwarded to you?
|
---|
| 39 | D BLD^DIALOG(38023.1,"","","DIR(""A"")")
|
---|
| 40 | S DIR("B")=$$EZBLD^DIALOG(39053) ; no
|
---|
| 41 | D BLD^DIALOG(38232,"","","DIR(""?"")")
|
---|
| 42 | ;Answer YES to forward past mail group messages.
|
---|
| 43 | ;You will be asked for a time frame to search,
|
---|
| 44 | ;and then MailMan will create a task to find and forward
|
---|
| 45 | ;existing mail group messages.
|
---|
| 46 | D ^DIR Q:$D(DIRUT)!'Y
|
---|
| 47 | N XMINSTR,XMTSK,XMABORT
|
---|
| 48 | I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV D INITAPI^XMVVITAE
|
---|
| 49 | S XMABORT=0,XMINSTR("FLAGS")="F"
|
---|
| 50 | D FWDBSKT(XMDUZ,.XMINSTR,.XMABORT) Q:XMABORT
|
---|
| 51 | D FWDDATES^XMVGRP(XMDUZ,.XMINSTR,.XMABORT) Q:XMABORT
|
---|
| 52 | D FAFMSGS^XMXGRP1(XMDUZ,$P($G(^XMB(3.8,XMIEN,0)),U,1),XMDUZ,.XMINSTR,.XMTSK)
|
---|
| 53 | D FWDTSK(XMTSK)
|
---|
| 54 | Q
|
---|
| 55 | FWDBSKT(XMDUZ,XMINSTR,XMABORT) ; Select basket to forward to
|
---|
| 56 | N XMDIC,XMK
|
---|
| 57 | S XMDIC("B")=$$EZBLD^DIALOG(37005) ;IN
|
---|
| 58 | D SELBSKT^XMJBU(XMDUZ,39022,"L",.XMDIC,.XMK) I XMK=U S XMABORT=1 Q
|
---|
| 59 | S XMINSTR("SELF BSKT")=XMK
|
---|
| 60 | Q
|
---|
| 61 | FWDTSK(XMTSK) ;
|
---|
| 62 | W !
|
---|
| 63 | ;Task #|1| will find and forward past messages.
|
---|
| 64 | N XMTEXT
|
---|
| 65 | D BLD^DIALOG(38023.9,XMTSK,"","XMTEXT","F")
|
---|
| 66 | D MSG^DIALOG("WM","",IOM,"","XMTEXT")
|
---|
| 67 | Q
|
---|
| 68 | DROP(XMIEN,XMDUZ) ; Disenroll from a group
|
---|
| 69 | N DIR,X,Y
|
---|
| 70 | S DIR(0)="Y"
|
---|
| 71 | I $P(^XMB(3.8,XMIEN,0),U,3)'="y" D
|
---|
| 72 | . ;You're a member. Self enrollment is not allowed for this mail group.
|
---|
| 73 | . ;If you drop out, you will not be able to re-join. (To re-join later,
|
---|
| 74 | . ;you will have to ask the group coordinator to re-enroll you.)
|
---|
| 75 | . ;You are a member. Do you want to drop out
|
---|
| 76 | . D BLD^DIALOG(38024.1,"","","DIR(""A"")")
|
---|
| 77 | E D ;You are a member. Do you want to drop out
|
---|
| 78 | . S DIR("A")=$$EZBLD^DIALOG(38024)
|
---|
| 79 | S DIR("B")=$$EZBLD^DIALOG(39053) ;No
|
---|
| 80 | ;Enter YES to remove yourself from the group; NO to remain a member.
|
---|
| 81 | D BLD^DIALOG(38025,"","","DIR(""?"")")
|
---|
| 82 | D ^DIR Q:$D(DIRUT)!'Y
|
---|
| 83 | K DIR,X,Y
|
---|
| 84 | N DA,DIK
|
---|
| 85 | S DA(1)=XMIEN,DA=$O(^XMB(3.8,XMIEN,1,"B",XMDUZ,0)),DIK="^XMB(3.8,"_XMIEN_",1,"
|
---|
| 86 | D ^DIK
|
---|
| 87 | W !,$$EZBLD^DIALOG(38026) ;You are no longer a member.
|
---|
| 88 | Q
|
---|
| 89 | PERSONAL ; Enter/Edit Personal Group
|
---|
| 90 | ; See entry EDIT for info on XMIA & XMTRKNEW
|
---|
| 91 | N DIC,DLAYGO,X,Y,XMABORT,XMIA,XMTRKNEW
|
---|
| 92 | S XMABORT=0,(XMIA,XMTRKNEW)=1
|
---|
| 93 | S DIC="^XMB(3.8,",DIC(0)="AEQMZL",DLAYGO=3.8
|
---|
| 94 | ; Group is private, and user is organizer
|
---|
| 95 | S DIC("S")="I $P(^(0),U,2)=""PR"",$P($G(^XMB(3.8,+Y,3)),U)=$G(XMDUZ,DUZ)"
|
---|
| 96 | F D Q:XMABORT
|
---|
| 97 | . W !
|
---|
| 98 | . D ^DIC I Y<0 S XMABORT=1 Q
|
---|
| 99 | . N XMDR,XMNEW
|
---|
| 100 | . S XMNEW=$P(Y,U,3)
|
---|
| 101 | . S:XMNEW XMDR="4////PR;5////"_$G(XMDUZ,DUZ)_";10////1;"
|
---|
| 102 | . S XMDR=$G(XMDR)_".01T;2;3" ; name, members, description
|
---|
| 103 | . S XMDR=XMDR_";10;12" ; restrictions, remote members
|
---|
| 104 | . D EDIT(+Y,XMDR,XMNEW)
|
---|
| 105 | Q
|
---|
| 106 | EDIT(XMG,DR,XMNEW) ; Edit mail group
|
---|
| 107 | ; XMIA is used for interaction on the REMOTE MEMBER input transform
|
---|
| 108 | ; to facilitate lookup. XMTRKNEW is used by the AC xref on the
|
---|
| 109 | ; .01 field of the LOCAL MEMBER multiple. If local members are added
|
---|
| 110 | ; to the group, XMNEWMBR is set by the AC xref.
|
---|
| 111 | N DIE,DIDEL,Y,DIC,DA,XMNEWMBR
|
---|
| 112 | S (DIDEL,DIE)=3.8,DA=XMG
|
---|
| 113 | S:$P(^XMB(1,1,0),U,19) DR=DR_";14;15" ; fax recipients, fax groups
|
---|
| 114 | D ^DIE
|
---|
| 115 | I 'XMNEW,$D(XMNEWMBR) D FWD(XMG,.XMNEWMBR)
|
---|
| 116 | Q
|
---|
| 117 | FWD(XMG,XMTO) ; Forward past mail group messages to new local members
|
---|
| 118 | N XMI
|
---|
| 119 | S XMI=""
|
---|
| 120 | F S XMI=$O(XMTO(XMI)) Q:'XMI K:'$D(^XMB(3.8,XMG,1,"B",XMI)) XMTO(XMI)
|
---|
| 121 | Q:'$D(XMTO)
|
---|
| 122 | I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV D INITAPI^XMVVITAE
|
---|
| 123 | D NOTIFY^XMXGRP1(XMG,.XMTO)
|
---|
| 124 | N XMINSTR,XMTSK,XMABORT
|
---|
| 125 | S XMABORT=0
|
---|
| 126 | D ENFWD^XMVGRP(XMDUZ,.XMINSTR,.XMABORT) Q:XMABORT
|
---|
| 127 | D FAFMSGS^XMXGRP1(XMDUZ,$P(^XMB(3.8,XMG,0),U,1),.XMTO,.XMINSTR,.XMTSK)
|
---|
| 128 | D FWDTSK(XMTSK)
|
---|
| 129 | Q
|
---|
| 130 | LAYGO(X) ; Prevent someone from adding a (private) group with the same name as a public one.
|
---|
| 131 | ; This function is invoked by the LAYGO field of ^XMB(3.8,.01)
|
---|
| 132 | ; Returns 1 if group X may be created; 0 if not.
|
---|
| 133 | N IEN,LAYGO
|
---|
| 134 | S IEN="",LAYGO=1
|
---|
| 135 | F S IEN=$O(^XMB(3.8,"B",X,IEN)) Q:IEN="" D Q:'LAYGO
|
---|
| 136 | . Q:$P(^XMB(3.8,IEN,0),U,2)="PR"
|
---|
| 137 | . S LAYGO=0 ;Can't add it because public group '|1|' already exists.
|
---|
| 138 | . D EN^DDIOL($$EZBLD^DIALOG(38027,X),"","!,$C(7)")
|
---|
| 139 | Q LAYGO
|
---|
| 140 | REMOTE(XMADDR,XMIA) ; Serves as input transform for 'remote member'
|
---|
| 141 | ; Allow remote addressees or local devices or local servers
|
---|
| 142 | N XMERROR,XMRESTR,XMINSTR,XMFULL,XMPREFIX,DIX,DO,XMFWDADD
|
---|
| 143 | S XMINSTR("ADDR FLAGS")="X" ; do not create ^TMP(, just check.
|
---|
| 144 | I XMADDR[":" D Q:'$D(XMADDR)
|
---|
| 145 | . D RTYPE^XMXADDR($P(XMADDR,":")) I $D(XMERROR) K XMADDR Q
|
---|
| 146 | . D PREFIX^XMXADDR(.XMADDR,.XMPREFIX) I $D(XMERROR) K XMADDR Q
|
---|
| 147 | I XMADDR'["@",".D.d.H.h.S.s."'[("."_$E(XMADDR,1,2)),'$D(XMPREFIX) K XMADDR Q
|
---|
| 148 | D ADDRESS^XMXADDR(DUZ,XMADDR,.XMFULL,.XMERROR)
|
---|
| 149 | I $D(XMERROR) K XMADDR Q
|
---|
| 150 | I XMFULL'["@" D
|
---|
| 151 | . I ".D.H.S."[("."_$E(XMFULL,1,2)) S XMFULL=XMFULL_"@"_^XMB("NETNAME") Q
|
---|
| 152 | . ;I $G(XMPREFIX)'="" S XMFULL=XMFULL_"@"_^XMB("NETNAME") Q
|
---|
| 153 | I XMFULL'["@" D Q
|
---|
| 154 | . K XMADDR
|
---|
| 155 | . D EN^DDIOL($$EZBLD^DIALOG(38028)) ;It can't be a local address, except for Device or Server.
|
---|
| 156 | . I $E(XMFULL,1,2)="G." D EN^DDIOL($$EZBLD^DIALOG(38029)) ;Put the group in the MEMBER GROUP multiple.
|
---|
| 157 | . E D EN^DDIOL($$EZBLD^DIALOG(38030)) ;Put the person in the MEMBER multiple.
|
---|
| 158 | . I $G(XMPREFIX)'="" D EN^DDIOL($$EZBLD^DIALOG(38031,XMPREFIX)) ;Put '|1|' in the TYPE field.
|
---|
| 159 | I $G(XMPREFIX)'="" S XMFULL=XMPREFIX_":"_XMFULL
|
---|
| 160 | S XMADDR=XMFULL
|
---|
| 161 | Q
|
---|
| 162 | EDITMG ; Mail Group Edit
|
---|
| 163 | ; See entry EDIT for info on XMIA & XMTRKNEW
|
---|
| 164 | N DIC,XMABORT,DLAYGO,X,Y,XMIA,XMTRKNEW,XMREC
|
---|
| 165 | S XMABORT=0,(XMIA,XMTRKNEW)=1,DLAYGO=3.8
|
---|
| 166 | S DIC(0)="AEQLM",DIC="^XMB(3.8,"
|
---|
| 167 | S DIC("S")=$$GRPSCR(0)
|
---|
| 168 | F D Q:XMABORT
|
---|
| 169 | . W !
|
---|
| 170 | . D ^DIC I Y<0 S XMABORT=1 Q
|
---|
| 171 | . N XMDR
|
---|
| 172 | . S XMDR=".01T;2;3" ; name, members, description
|
---|
| 173 | . ; type - if type is public, ask about self enrollment,
|
---|
| 174 | . ; else ask about restrictions.
|
---|
| 175 | . S XMDR=XMDR_";4;I X=""PU"" S Y=7;10;S Y=5;7"
|
---|
| 176 | . S XMDR=XMDR_";5:6.9" ; organizer, coordinator, authorized senders
|
---|
| 177 | . S XMDR=XMDR_";10.1:13.9" ; member groups, remote members, distr list
|
---|
| 178 | . D EDIT(+Y,XMDR,$P(Y,U,3))
|
---|
| 179 | Q
|
---|
| 180 | GRPSCR(XMCOORD) ; Who may edit a mail group?
|
---|
| 181 | N XMSCR,XMOK
|
---|
| 182 | S XMOK=0
|
---|
| 183 | I $T(ISA^USRLM)'="" S XMOK=$$ISA^USRLM(DUZ,"CLINICAL COORDINATOR")
|
---|
| 184 | I $D(^XUSEC("XMMGR",DUZ))!$D(^XUSEC("XM GROUP EDIT MASTER",DUZ))!XMOK D
|
---|
| 185 | . ; Screen whether group is public or (private and) unrestricted
|
---|
| 186 | . S XMSCR="N XMREC S XMREC=^(0) I $P(XMREC,U,2)=""PU""!'$P(XMREC,U,6)!"
|
---|
| 187 | E S XMSCR="I " ; Or, at the very minimum,
|
---|
| 188 | ; Screen whether user is organizer or coordinator.
|
---|
| 189 | Q XMSCR_"($P($G(^XMB(3.8,+Y,3)),U,1)=$G(XMDUZ,DUZ))"_$S($G(XMCOORD):"!$D(^XMB(3.8,""AC"",$G(XMDUZ,DUZ),+Y))",1:"")
|
---|
| 190 | ;
|
---|
| 191 | LCOORD ; Mail Group Coordinator edit w/o remote members
|
---|
| 192 | D COORD(0)
|
---|
| 193 | Q
|
---|
| 194 | RCOORD ; Mail Group Coordinator edit w/remote members
|
---|
| 195 | D COORD(1)
|
---|
| 196 | Q
|
---|
| 197 | COORD(XMREMOTE) ;
|
---|
| 198 | ; See entry EDIT for info on XMIA & XMTRKNEW
|
---|
| 199 | N DIC,XMABORT,DLAYGO,X,Y,XMIA,XMTRKNEW
|
---|
| 200 | S XMABORT=0,(XMIA,XMTRKNEW)=1
|
---|
| 201 | S DIC(0)="AEQM",DIC="^XMB(3.8,"
|
---|
| 202 | S DIC("S")=$$GRPSCR(1)
|
---|
| 203 | F D Q:XMABORT
|
---|
| 204 | . W !
|
---|
| 205 | . D ^DIC I Y<0 S XMABORT=1 Q
|
---|
| 206 | . ; edit local members, member groups, & perhaps, remote members
|
---|
| 207 | . D EDIT(+Y,"2;11"_$S(XMREMOTE:";12",1:""),0)
|
---|
| 208 | Q
|
---|