| 1 | FSCAFFIL ;SLC/STAFF-NOIS Affiliation ;1/17/98  16:50
 | 
|---|
| 2 |  ;;1.1;NOIS;;Sep 06, 1998
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | AFFIL(CALL) ; from FSCTASKA
 | 
|---|
| 5 |  N ADD,REMOVE K ADD,REMOVE
 | 
|---|
| 6 |  D CLEAN(CALL,.REMOVE,.ADD)
 | 
|---|
| 7 |  I $O(REMOVE(0)) D DEL(.REMOVE)
 | 
|---|
| 8 |  I $O(ADD(0)) D NEW(CALL,.ADD)
 | 
|---|
| 9 |  K ADD,REMOVE
 | 
|---|
| 10 |  Q
 | 
|---|
| 11 |  ;
 | 
|---|
| 12 | CLEAN(CALL,REMOVE,ADD) ;
 | 
|---|
| 13 |  N EVENT,METHOD,MISC,NEVENT,NMETHOD,NOTNUM,PACK,PACKGP,RTD,SPEC,USER
 | 
|---|
| 14 |  D CINFO(CALL,.PACK,.PACKGP,.MISC,.RTD,.SPEC)
 | 
|---|
| 15 |  S USER=0 F  S USER=$O(^FSCD("NOTIFY","ACUSER",CALL,USER)) Q:USER'>0  S NOTNUM=+^(USER) I NOTNUM D
 | 
|---|
| 16 |  .I $P($G(^FSCD("NOTIFY",NOTNUM,0)),U,7) Q
 | 
|---|
| 17 |  .I '$D(^FSC("SPEC",USER,0)) Q  ; ** should not be processing non spec
 | 
|---|
| 18 |  .D SINFO(USER,.METHOD,.EVENT)
 | 
|---|
| 19 |  .I '$L(METHOD) S REMOVE(USER)=NOTNUM Q
 | 
|---|
| 20 |  .I '$L(EVENT) S REMOVE(USER)=NOTNUM Q
 | 
|---|
| 21 |  .I USER'=SPEC D
 | 
|---|
| 22 |  ..I '$$CHECK(USER,PACK,PACKGP) S REMOVE(USER)=NOTNUM Q
 | 
|---|
| 23 |  ..I MISC,$D(^FSC("SPEC","AF",1,USER)) S REMOVE(USER)=NOTNUM
 | 
|---|
| 24 |  .I $D(REMOVE(USER)) Q
 | 
|---|
| 25 |  .D NINFO(NOTNUM,.NMETHOD,.NEVENT)
 | 
|---|
| 26 |  .I NMETHOD'=METHOD S $P(^FSCD("NOTIFY",NOTNUM,0),U,5)=METHOD
 | 
|---|
| 27 |  .I NEVENT'=EVENT S $P(^FSCD("NOTIFY",NOTNUM,0),U,6)=EVENT
 | 
|---|
| 28 |  I SPEC,'$D(^FSCD("NOTIFY","ACUSER",CALL,SPEC)) D CHKADD(SPEC,.ADD)
 | 
|---|
| 29 |  I PACK S USER=0 F  S USER=$O(^FSC("SPEC","AP",PACK,USER)) Q:USER'>0  D
 | 
|---|
| 30 |  .I $D(REMOVE(USER)) Q
 | 
|---|
| 31 |  .I $D(ADD(USER)) Q
 | 
|---|
| 32 |  .I $D(^FSCD("NOTIFY","ACUSER",CALL,USER)) Q
 | 
|---|
| 33 |  .I RTD,$D(^FSC("SPEC","AF",2,USER)) D CHKADD(USER,.ADD)
 | 
|---|
| 34 |  .I 'MISC,$D(^FSC("SPEC","AF",1,USER)) D CHKADD(USER,.ADD)
 | 
|---|
| 35 |  I PACKGP S USER=0 F  S USER=$O(^FSC("SPEC","AG",PACKGP,USER)) Q:USER'>0  D
 | 
|---|
| 36 |  .I $D(REMOVE(USER)) Q
 | 
|---|
| 37 |  .I $D(ADD(USER)) Q
 | 
|---|
| 38 |  .I $D(^FSCD("NOTIFY","ACUSER",CALL,USER)) Q
 | 
|---|
| 39 |  .I '$P($G(^FSC("SPEC",USER,20,+$O(^FSC("SPEC","AG",PACKGP,USER,0)),0)),U,3) Q
 | 
|---|
| 40 |  .I RTD,$D(^FSC("SPEC","AF",2,USER)) D CHKADD(USER,.ADD)
 | 
|---|
| 41 |  .I 'MISC,$D(^FSC("SPEC","AF",1,USER)) D CHKADD(USER,.ADD)
 | 
|---|
| 42 |  Q
 | 
|---|
| 43 |  ;
 | 
|---|
| 44 | CHECK(USER,PACK,PACKGP) ; $$(user,package,package group) -> 0 or 1 if ok to tag for notify
 | 
|---|
| 45 |  I '$P($G(^FSC("SPEC",USER,0)),U,22) Q 0
 | 
|---|
| 46 |  I PACKGP,$P($G(^FSC("SPEC",USER,20,+$O(^FSC("SPEC","AG",PACKGP,USER,0)),0)),U,3) Q 1
 | 
|---|
| 47 |  I PACK,$O(^FSC("SPEC","AP",PACK,USER,0)) Q 1
 | 
|---|
| 48 |  Q 0
 | 
|---|
| 49 |  ;
 | 
|---|
| 50 | CHKADD(USER,ADD) ;
 | 
|---|
| 51 |  N EVENT,METHOD
 | 
|---|
| 52 |  D SINFO(USER,.METHOD,.EVENT)
 | 
|---|
| 53 |  I '$L(METHOD) Q
 | 
|---|
| 54 |  I '$L(EVENT) Q
 | 
|---|
| 55 |  S ADD(USER)=METHOD_U_EVENT
 | 
|---|
| 56 |  Q
 | 
|---|
| 57 |  ;
 | 
|---|
| 58 | CINFO(CALL,PACK,PACKGP,MISC,RTD,SPEC) ;
 | 
|---|
| 59 |  N ZERO,ONETW
 | 
|---|
| 60 |  S ZERO=$G(^FSCD("CALL",+CALL,0)),ONETW=$G(^(120))
 | 
|---|
| 61 |  S PACK=$P(ONETW,U,9)
 | 
|---|
| 62 |  S PACKGP=$P(ONETW,U,13)
 | 
|---|
| 63 |  S MISC=$S($P(ZERO,U,10)=5:1,1:"")
 | 
|---|
| 64 |  S RTD=$S($P(ZERO,U,17):1,1:"")
 | 
|---|
| 65 |  S SPEC=$P(ZERO,U,9)
 | 
|---|
| 66 |  Q
 | 
|---|
| 67 |  ;
 | 
|---|
| 68 | SINFO(SPEC,METHOD,EVENT) ;
 | 
|---|
| 69 |  S METHOD=$P($G(^FSC("SPEC",+SPEC,0)),U,14),EVENT=$P($G(^(0)),U,15)
 | 
|---|
| 70 |  Q
 | 
|---|
| 71 |  ;
 | 
|---|
| 72 | NINFO(NUM,METHOD,EVENT) ;
 | 
|---|
| 73 |  S METHOD=$P($G(^FSCD("NOTIFY",+NUM,0)),U,5),EVENT=$P($G(^(0)),U,6)
 | 
|---|
| 74 |  Q
 | 
|---|
| 75 |  ;
 | 
|---|
| 76 | DEL(REMOVE) ;
 | 
|---|
| 77 |  N USER
 | 
|---|
| 78 |  S USER=0 F  S USER=$O(REMOVE(USER)) Q:USER'>0  D
 | 
|---|
| 79 |  .I REMOVE(USER) D DEL^FSCUCD("^FSCD(""NOTIFY"",",REMOVE(USER))
 | 
|---|
| 80 |  Q
 | 
|---|
| 81 |  ;
 | 
|---|
| 82 | NEW(CALL,ADD) ;
 | 
|---|
| 83 |  N USER
 | 
|---|
| 84 |  S USER=0 F  S USER=$O(ADD(USER)) Q:USER'>0  D
 | 
|---|
| 85 |  .D SETUP^FSCNOT(CALL,,,USER,$P(ADD(USER),U),$P(ADD(USER),U,2))
 | 
|---|
| 86 |  Q
 | 
|---|
| 87 |  ;
 | 
|---|
| 88 | TEST ; run in debug
 | 
|---|
| 89 |  N CALL
 | 
|---|
| 90 |  S CALL=999 F  S CALL=$O(^FSCD("CALL",CALL)) Q:CALL<1  Q:CALL>10000  W !,CALL D AFFIL(CALL)
 | 
|---|
| 91 |  Q
 | 
|---|