| 1 | FSCRPCN ;SLC/STAFF-NOIS RPC Notifications ;1/13/98  16:01
 | 
|---|
| 2 |  ;;1.1;NOIS;;Sep 06, 1998
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | SIGNUP(IN,OUT) ; from FSCRPX (RPBSignupNotify)
 | 
|---|
| 5 |  N CALL,EVENT,LINE,METHOD,USER
 | 
|---|
| 6 |  S LINE=$G(^TMP("FSCRPC",$J,"INPUT",1))
 | 
|---|
| 7 |  S CALL=$P(LINE,U),METHOD=$P(LINE,U,2),EVENT=$P(LINE,U,3),USER=$P(LINE,U,4)
 | 
|---|
| 8 |  Q:'CALL  Q:'$L(METHOD)  Q:'$L(EVENT)  Q:'USER
 | 
|---|
| 9 |  D SETUP^FSCNOT(CALL,,,USER_U_1,METHOD,EVENT)
 | 
|---|
| 10 |  Q
 | 
|---|
| 11 |  ;
 | 
|---|
| 12 | BE(IN,OUT) ; from FSCRPX (RPCBeNotified)
 | 
|---|
| 13 |  N CALL,EVENT,LINE,METHOD,NUM
 | 
|---|
| 14 |  S LINE=$G(^TMP("FSCRPC",$J,"INPUT",1))
 | 
|---|
| 15 |  S METHOD=$P(LINE,U,2),EVENT=$P(LINE,U,3)
 | 
|---|
| 16 |  Q:'$L(METHOD)  Q:'$L(EVENT)
 | 
|---|
| 17 |  I $P(LINE,U) D
 | 
|---|
| 18 |  .S CALL=0 F  S CALL=$O(^TMP("FSC CURRENT LIST",$J,"C",CALL)) Q:CALL<1  D CALLSET(CALL,METHOD,EVENT)
 | 
|---|
| 19 |  E  D
 | 
|---|
| 20 |  .S NUM=1 F  S NUM=$O(^TMP("FSCRPC",$J,"INPUT",NUM)) Q:NUM<1  S CALL=+^(NUM) I CALL D CALLSET(CALL,METHOD,EVENT)
 | 
|---|
| 21 |  Q
 | 
|---|
| 22 |  ;
 | 
|---|
| 23 | CALLSET(CALL,METHOD,EVENT) ;
 | 
|---|
| 24 |  N NUM
 | 
|---|
| 25 |  I $D(^FSCD("NOTIFY","ACUSER",CALL,DUZ)) S NUM=+^(DUZ) D  Q
 | 
|---|
| 26 |  .S $P(^FSCD("NOTIFY",NUM,0),U,5,7)=METHOD_U_EVENT_U_1
 | 
|---|
| 27 |  D SETUP^FSCNOT(CALL,,,DUZ_U_1,METHOD,EVENT)
 | 
|---|
| 28 |  Q
 | 
|---|
| 29 |  ;
 | 
|---|
| 30 | FIND(IN,OUT) ; from FSCRPX (RPCFindNotification)
 | 
|---|
| 31 |  N LINE,USER
 | 
|---|
| 32 |  S LINE=$G(^TMP("FSCRPC",$J,"INPUT",1))
 | 
|---|
| 33 |  S USER=$P(LINE,U,2)
 | 
|---|
| 34 |  I 'USER Q
 | 
|---|
| 35 |  I $P(LINE,U) D ALL(USER)
 | 
|---|
| 36 |  E  D ONLY(USER)
 | 
|---|
| 37 |  Q
 | 
|---|
| 38 |  ;
 | 
|---|
| 39 | ALL(USER) ;
 | 
|---|
| 40 |  N CALL,LNUM
 | 
|---|
| 41 |  K ^TMP("FSC LIST",$J),^TMP("FSC CURRENT LIST",$J)
 | 
|---|
| 42 |  D ALL^FSCLMPNF(USER)
 | 
|---|
| 43 |  S LNUM=0
 | 
|---|
| 44 |  S CALL="A" F  S CALL=$O(^TMP("FSC LIST",$J,CALL),-1) Q:CALL<1  D
 | 
|---|
| 45 |  .S LNUM=LNUM+1
 | 
|---|
| 46 |  .S (^TMP("FSCRPC",$J,"OUTPUT",LNUM),^TMP("FSC CURRENT LIST",$J,LNUM+1000))=CALL_U_$$SHORT^FSCRPXUS(CALL,DUZ)
 | 
|---|
| 47 |  .S ^TMP("FSC CURRENT LIST",$J,"C",CALL)=LNUM+1000
 | 
|---|
| 48 |  K ^TMP("FSC LIST",$J)
 | 
|---|
| 49 |  Q
 | 
|---|
| 50 |  ;
 | 
|---|
| 51 | ONLY(USER) ;
 | 
|---|
| 52 |  N CALL,DONE,LNUM
 | 
|---|
| 53 |  K ^TMP("FSC LIST",$J)
 | 
|---|
| 54 |  S CALL=0 F  S CALL=$O(^TMP("FSC CURRENT LIST",$J,"C",CALL)) Q:CALL<1  D
 | 
|---|
| 55 |  .I $D(^FSCD("NOTIFY","ACUSER",CALL,USER)) S ^TMP("FSC LIST",$J,CALL)="" Q
 | 
|---|
| 56 |  .S (DONE,LNUM)=0 F  S LNUM=$O(^FSCD("NOTIFY","ACLIST",CALL,LNUM)) Q:LNUM<1  D  Q:DONE
 | 
|---|
| 57 |  ..I $D(^FSC("LIST","C",USER,LNUM)) S ^TMP("FSC LIST",$J,CALL)="",DONE=1
 | 
|---|
| 58 |  K ^TMP("FSC CURRENT LIST",$J)
 | 
|---|
| 59 |  S LNUM=0
 | 
|---|
| 60 |  S CALL="A" F  S CALL=$O(^TMP("FSC LIST",$J,CALL),-1) Q:CALL<1  D
 | 
|---|
| 61 |  .S LNUM=LNUM+1
 | 
|---|
| 62 |  .S (^TMP("FSCRPC",$J,"OUTPUT",LNUM),^TMP("FSC CURRENT LIST",$J,LNUM+1000))=CALL_U_$$SHORT^FSCRPXUS(CALL,DUZ)
 | 
|---|
| 63 |  .S ^TMP("FSC CURRENT LIST",$J,"C",CALL)=LNUM+1000
 | 
|---|
| 64 |  K ^TMP("FSC LIST",$J)
 | 
|---|
| 65 |  Q
 | 
|---|
| 66 | REMOVE(IN,OUT) ; from FSCRPX (RPCRemoveNotification)
 | 
|---|
| 67 |  N LINE
 | 
|---|
| 68 |  S LINE=$G(^TMP("FSCRPC",$J,"INPUT",1))
 | 
|---|
| 69 |  I '$L(LINE) Q
 | 
|---|
| 70 |  I +LINE=1 D REMLIST
 | 
|---|
| 71 |  E  D REMCALLS
 | 
|---|
| 72 |  Q
 | 
|---|
| 73 | REMLIST ;
 | 
|---|
| 74 |  N CALL,DA,DIK
 | 
|---|
| 75 |  S DIK="^FSCD(""NOTIFY"","
 | 
|---|
| 76 |  S CALL=0 F  S CALL=$O(^TMP("FSC CURRENT LIST",$J,"C",CALL)) Q:CALL<1  D
 | 
|---|
| 77 |  .K ^TMP("FSC NOTIFY",$J)
 | 
|---|
| 78 |  .D NOTINFO^FSCNOT(CALL,DUZ)
 | 
|---|
| 79 |  .S DA=0 F  S DA=$O(^TMP("FSC NOTIFY",$J,DA)) Q:DA<1  D ^DIK
 | 
|---|
| 80 |  K ^TMP("FSC NOTIFY",$J)
 | 
|---|
| 81 |  Q
 | 
|---|
| 82 |  ;
 | 
|---|
| 83 | REMCALLS ;
 | 
|---|
| 84 |  N CALL,DA,DIK,NUM
 | 
|---|
| 85 |  S DIK="^FSCD(""NOTIFY"","
 | 
|---|
| 86 |  S NUM=0 F  S NUM=$O(^TMP("FSCRPC",$J,"INPUT",NUM)) Q:NUM<1  S CALL=+^(NUM) I CALL D
 | 
|---|
| 87 |  .K ^TMP("FSC NOTIFY",$J)
 | 
|---|
| 88 |  .D NOTINFO^FSCNOT(CALL,DUZ)
 | 
|---|
| 89 |  .S DA=0 F  S DA=$O(^TMP("FSC NOTIFY",$J,DA)) Q:DA<1  D ^DIK
 | 
|---|
| 90 |  K ^TMP("FSC NOTIFY",$J)
 | 
|---|
| 91 |  Q
 | 
|---|
| 92 |  ;
 | 
|---|
| 93 | NOTIFY(IN,OUT) ; from FSCRPX (RPCNotify)
 | 
|---|
| 94 |  N CALLFLAG,DELIVERY,LINE,METHOD,MSG,RECIP,YOURSELF K RECIP
 | 
|---|
| 95 |  S LINE=$G(^TMP("FSCRPC",$J,"INPUT",1))
 | 
|---|
| 96 |  S CALLFLAG=$P(LINE,U),METHOD=$P(LINE,U,2),YOURSELF=$P(LINE,U,3),DELIVERY=$P(LINE,U,4),MSG=$P(LINE,U,5,99)
 | 
|---|
| 97 |  I '$L(METHOD) Q
 | 
|---|
| 98 |  D RECIP(.RECIP)
 | 
|---|
| 99 |  I 'YOURSELF S DELIVERY=""
 | 
|---|
| 100 |  E  S RECIP(DUZ)=""
 | 
|---|
| 101 |  I METHOD="ALERT" D ALERT(CALLFLAG,DELIVERY,MSG,.RECIP)
 | 
|---|
| 102 |  I METHOD="MAIL" D MAIL(MSG,.RECIP)
 | 
|---|
| 103 |  Q
 | 
|---|
| 104 |  ;
 | 
|---|
| 105 | MAIL(XMSUB,XMY) ;
 | 
|---|
| 106 |  Q:'$D(XMSUB)  I XMSUB[U S XMSUB=$$REPLACE^FSCRU(XMSUB,U,"~U~")
 | 
|---|
| 107 |  N CNT,LINE,NUM,XMTEXT,XMZ K ^TMP("FSC MAIL",$J)
 | 
|---|
| 108 |  S ^TMP("FSC MAIL",$J,1,0)=" "
 | 
|---|
| 109 |  S ^TMP("FSC MAIL",$J,2,0)="     *** NOIS INFORMATION ***"
 | 
|---|
| 110 |  S CNT=2
 | 
|---|
| 111 |  S NUM=1 F  S NUM=$O(^TMP("FSCRPC",$J,"INPUT",NUM)) Q:NUM<1  I ^(NUM)="{Info}" Q
 | 
|---|
| 112 |  I NUM<1 Q
 | 
|---|
| 113 |  F  S NUM=$O(^TMP("FSCRPC",$J,"INPUT",NUM)) Q:NUM<1  S LINE=^(NUM) Q:LINE="<<<>>>"  S CNT=CNT+1,^TMP("FSC MAIL",$J,CNT,0)=LINE
 | 
|---|
| 114 |  S XMTEXT="^TMP(""FSC MAIL"",$J,"
 | 
|---|
| 115 |  S XMY(DUZ)=""
 | 
|---|
| 116 |  D ^XMD I $G(XMZ) ; W !,"Message #",XMZ," sent." H 2
 | 
|---|
| 117 |  D KILL^XM K ^TMP("FSC MAIL",$J)
 | 
|---|
| 118 |  Q
 | 
|---|
| 119 |  ;
 | 
|---|
| 120 | ALERT(CALLFLAG,DELIVERY,XQAMSG,XQA) ;
 | 
|---|
| 121 |  N ALERT,CALL,NUM,XQADATA,XQAID,XQAROU
 | 
|---|
| 122 |  I $L(DELIVERY) S XQAMSG=XQAMSG_" from: Yourself, sent: "_$$FMTE^XLFDT(DT)
 | 
|---|
| 123 |  E  S XQAMSG=XQAMSG_" from: "_$$VALUE^FSCGET(DUZ,7100,2.1)
 | 
|---|
| 124 |  I DELIVERY=DT S DELIVERY=""
 | 
|---|
| 125 |  D NEWALERT^FSCNOTS(DUZ,,XQAMSG,.ALERT,DELIVERY)
 | 
|---|
| 126 |  I CALLFLAG S CALL=0 F  S CALL=$O(^TMP("FSC CURRENT LIST",$J,"C",CALL)) Q:CALL<1  D NEWSEND^FSCNAS(ALERT,CALL)
 | 
|---|
| 127 |  I 'CALLFLAG D
 | 
|---|
| 128 |  .S NUM=1 F  S NUM=$O(^TMP("FSCRPC",$J,"INPUT",NUM)) Q:NUM<1  I ^(NUM)="{Info}" Q
 | 
|---|
| 129 |  .I NUM<1 Q
 | 
|---|
| 130 |  .F  S NUM=$O(^TMP("FSCRPC",$J,"INPUT",NUM)) Q:NUM<1  S CALL=+^(NUM) I CALL D NEWSEND^FSCNAS(ALERT,CALL)
 | 
|---|
| 131 |  I DELIVERY Q
 | 
|---|
| 132 |  S XQADATA=ALERT,XQAROU="ALERT^FSCNAR",XQAID="FSC-M"
 | 
|---|
| 133 |  D SETUP^XQALERT
 | 
|---|
| 134 |  Q
 | 
|---|
| 135 |  ;
 | 
|---|
| 136 | RECIP(RECIP) ;
 | 
|---|
| 137 |  N LINE,NUM,OK
 | 
|---|
| 138 |  S NUM=1 F  S NUM=$O(^TMP("FSCRPC",$J,"INPUT",NUM)) Q:NUM<1  I ^(NUM)="{SendTo}" Q
 | 
|---|
| 139 |  I NUM<1 Q
 | 
|---|
| 140 |  F  S NUM=$O(^TMP("FSCRPC",$J,"INPUT",NUM)) Q:NUM<1  S LINE=^(NUM) Q:LINE="<<<>>>"  Q:'$L(LINE)  D
 | 
|---|
| 141 |  .I $L(LINE)>4,$E(LINE,1,2)="G." S OK=1
 | 
|---|
| 142 |  .E  S LINE=+LINE S OK=1 I 'LINE S OK=0
 | 
|---|
| 143 |  .I OK S RECIP(LINE)=""
 | 
|---|
| 144 |  Q
 | 
|---|
| 145 |  ;
 | 
|---|