| 1 | FSCRPXM ;SLC/STAFF-NOIS RPC Menus ;1/13/98  16:51
 | 
|---|
| 2 |  ;;1.1;NOIS;;Sep 06, 1998
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | MENUS(USER,OUTLINE,INLINE) ; from FSCRPX
 | 
|---|
| 5 |  N CALL,CNT,INDEX,INLINE0,LINE,LIST,MAXMRE,MAXMRA,MAXMRU,NUM,TIME
 | 
|---|
| 6 |  S MAXMRE=10,MAXMRA=10,MAXMRU=12
 | 
|---|
| 7 |  S INLINE0=$G(^TMP("FSCRPC",$J,"INPUT",0))
 | 
|---|
| 8 |  I $P(INLINE,U,6)=0 S $P(OUTLINE,U,6)=$$ALERT(DUZ)
 | 
|---|
| 9 |  E  S $P(OUTLINE,U,6)=1
 | 
|---|
| 10 |  S $P(OUTLINE,U,7)=$$MRE(DUZ)
 | 
|---|
| 11 |  S $P(OUTLINE,U,8)=$$MRA(DUZ)
 | 
|---|
| 12 |  S $P(OUTLINE,U,9)=$$MRU(DUZ)
 | 
|---|
| 13 |  K ^TMP("FSCRPC",$J,"MENUS")
 | 
|---|
| 14 |  ;
 | 
|---|
| 15 |  I $P(OUTLINE,U,7)'=$P(INLINE0,U,7) D
 | 
|---|
| 16 |  .S CNT=0,TIME="" F  S TIME=$O(^FSCD("MRE","AUTC",USER,TIME)) Q:TIME=""  D  Q:CNT=MAXMRE
 | 
|---|
| 17 |  ..S CALL=0 F  S CALL=$O(^FSCD("MRE","AUTC",USER,TIME,CALL)) Q:CALL=""  D  Q:CNT=MAXMRE
 | 
|---|
| 18 |  ...S CNT=CNT+1
 | 
|---|
| 19 |  ...S ^TMP("FSCRPC",$J,"MENUS","MRE",CNT)=CALL_U_$$CALLID(CALL)
 | 
|---|
| 20 |  ;
 | 
|---|
| 21 |  I $P(OUTLINE,U,8)'=$P(INLINE0,U,8) D
 | 
|---|
| 22 |  .S CNT=0,TIME="" F  S TIME=$O(^FSCD("MRA","AUTC",USER,TIME)) Q:TIME=""  D  Q:CNT=MAXMRA
 | 
|---|
| 23 |  ..S CALL=0 F  S CALL=$O(^FSCD("MRA","AUTC",USER,TIME,CALL)) Q:CALL=""  D  Q:CNT=MAXMRA
 | 
|---|
| 24 |  ...S CNT=CNT+1
 | 
|---|
| 25 |  ...S ^TMP("FSCRPC",$J,"MENUS","MRA",CNT)=CALL_U_$$CALLID(CALL)
 | 
|---|
| 26 |  ;
 | 
|---|
| 27 |  I $P(OUTLINE,U,9)'=$P(INLINE0,U,9) D
 | 
|---|
| 28 |  .S CNT=0,TIME="" F  S TIME=$O(^FSCD("MRU","AUTL",USER,TIME)) Q:TIME=""  D  Q:CNT=MAXMRU
 | 
|---|
| 29 |  ..S LIST=0 F  S LIST=$O(^FSCD("MRU","AUTL",USER,TIME,LIST)) Q:LIST=""  D  Q:CNT=MAXMRU
 | 
|---|
| 30 |  ...S INDEX="" F  S INDEX=$O(^FSCD("MRU","AUTL",USER,TIME,LIST,INDEX)) Q:INDEX=""  D  Q:CNT=MAXMRU
 | 
|---|
| 31 |  ....S CNT=CNT+1
 | 
|---|
| 32 |  ....S ^TMP("FSCRPC",$J,"MENUS","MRU",CNT)=LIST_U_INDEX_U_$P($G(^FSC("LIST",+LIST,0)),U)_$S(INDEX:" "_$$INDXVAL(LIST,INDEX),1:"")_U_$P($G(^FSC("LIST",+LIST,0)),U,8,9)
 | 
|---|
| 33 |  ....I 'INDEX Q
 | 
|---|
| 34 |  ....; append index external value
 | 
|---|
| 35 |  ;
 | 
|---|
| 36 |  I '$L($O(^TMP("FSCRPC",$J,"MENUS",""))) Q
 | 
|---|
| 37 |  K ^TMP("FSCRPC",$J,"MENUS","TEMP")
 | 
|---|
| 38 |  M ^TMP("FSCRPC",$J,"MENUS","TEMP")=^TMP("FSCRPC",$J,"OUTPUT")
 | 
|---|
| 39 |  K ^TMP("FSCRPC",$J,"OUTPUT")
 | 
|---|
| 40 |  S CNT=0
 | 
|---|
| 41 |  ;
 | 
|---|
| 42 |  I $O(^TMP("FSCRPC",$J,"MENUS","MRE",0)) D
 | 
|---|
| 43 |  .S CNT=CNT+1
 | 
|---|
| 44 |  .S ^TMP("FSCRPC",$J,"OUTPUT",CNT)="{MRE}"
 | 
|---|
| 45 |  .S NUM=0 F  S NUM=$O(^TMP("FSCRPC",$J,"MENUS","MRE",NUM)) Q:NUM<1  S LINE=^(NUM) D
 | 
|---|
| 46 |  ..S CNT=CNT+1
 | 
|---|
| 47 |  ..S ^TMP("FSCRPC",$J,"OUTPUT",CNT)=LINE
 | 
|---|
| 48 |  .S CNT=CNT+1
 | 
|---|
| 49 |  .S ^TMP("FSCRPC",$J,"OUTPUT",CNT)="^^^"
 | 
|---|
| 50 |  ;
 | 
|---|
| 51 |  I $O(^TMP("FSCRPC",$J,"MENUS","MRA",0)) D
 | 
|---|
| 52 |  .S CNT=CNT+1
 | 
|---|
| 53 |  .S ^TMP("FSCRPC",$J,"OUTPUT",CNT)="{MRA}"
 | 
|---|
| 54 |  .S NUM=0 F  S NUM=$O(^TMP("FSCRPC",$J,"MENUS","MRA",NUM)) Q:NUM<1  S LINE=^(NUM) D
 | 
|---|
| 55 |  ..S CNT=CNT+1
 | 
|---|
| 56 |  ..S ^TMP("FSCRPC",$J,"OUTPUT",CNT)=LINE
 | 
|---|
| 57 |  .S CNT=CNT+1
 | 
|---|
| 58 |  .S ^TMP("FSCRPC",$J,"OUTPUT",CNT)="^^^"
 | 
|---|
| 59 |  ;
 | 
|---|
| 60 |  I $O(^TMP("FSCRPC",$J,"MENUS","MRU",0)) D
 | 
|---|
| 61 |  .S CNT=CNT+1
 | 
|---|
| 62 |  .S ^TMP("FSCRPC",$J,"OUTPUT",CNT)="{MRU}"
 | 
|---|
| 63 |  .S NUM=0 F  S NUM=$O(^TMP("FSCRPC",$J,"MENUS","MRU",NUM)) Q:NUM<1  S LINE=^(NUM) D
 | 
|---|
| 64 |  ..S CNT=CNT+1
 | 
|---|
| 65 |  ..S ^TMP("FSCRPC",$J,"OUTPUT",CNT)=LINE
 | 
|---|
| 66 |  .S CNT=CNT+1
 | 
|---|
| 67 |  .S ^TMP("FSCRPC",$J,"OUTPUT",CNT)="^^^"
 | 
|---|
| 68 |  ;
 | 
|---|
| 69 |  S NUM=0 F  S NUM=$O(^TMP("FSCRPC",$J,"MENUS","TEMP",NUM)) Q:NUM<1  S LINE=^(NUM) D
 | 
|---|
| 70 |  .S CNT=CNT+1
 | 
|---|
| 71 |  .S ^TMP("FSCRPC",$J,"OUTPUT",CNT)=LINE
 | 
|---|
| 72 |  S ^TMP("FSCRPC",$J,"OUTPUT")=CNT
 | 
|---|
| 73 |  K ^TMP("FSCRPC",$J,"MENUS")
 | 
|---|
| 74 |  Q
 | 
|---|
| 75 |  ;
 | 
|---|
| 76 | CALLID(CALL) ; $$(call) -> call text for menu
 | 
|---|
| 77 |  N CALLID
 | 
|---|
| 78 |  S CALLID=$P($G(^FSCD("CALL",+CALL,0)),U)_" "_$$MODINI^FSCUF($P(^(0),U,8))_U_$$REPLACE^FSCRU($$SHORT^FSCRPXUS(CALL,DUZ),U,"   ")
 | 
|---|
| 79 |  Q CALLID
 | 
|---|
| 80 |  ;
 | 
|---|
| 81 | ALERT(USER) ; $$(user) -> 1 or 0 if alerts available
 | 
|---|
| 82 |  I $D(^FSCD("ALERT","ALERT",USER)) Q 1
 | 
|---|
| 83 |  Q $$XQA(USER,"FSC-")
 | 
|---|
| 84 |  ;
 | 
|---|
| 85 | XQA(USER,TEXT) ; $$(user,text) -> 1 or 0 if alerts contains text in ID ** non documented access
 | 
|---|
| 86 |  N OK,TIME
 | 
|---|
| 87 |  I '$O(^XTV(8992,USER,"XQA",0)) Q 0
 | 
|---|
| 88 |  S (OK,TIME)=0 F  S TIME=$O(^XTV(8992,USER,"XQA",TIME)) Q:TIME<1  I $P($G(^(TIME,0)),U,2)[TEXT S OK=1 Q
 | 
|---|
| 89 |  Q OK
 | 
|---|
| 90 |  ;
 | 
|---|
| 91 | MRE(USER) ; $$(user) -> timestamp of user's MRE list
 | 
|---|
| 92 |  Q +$P($G(^FSCD("MRE","AUT",+USER)),".",2)
 | 
|---|
| 93 |  ;
 | 
|---|
| 94 | MRA(USER) ; $$(user) -> timestamp of user's MRA list
 | 
|---|
| 95 |  Q +$P($G(^FSCD("MRA","AUT",+USER)),".",2)
 | 
|---|
| 96 |  ;
 | 
|---|
| 97 | MRU(USER) ; $$(user) -> timestamp of user's MRU lists
 | 
|---|
| 98 |  Q +$P($G(^FSCD("MRU","AUT",+USER)),".",2)
 | 
|---|
| 99 |  ;
 | 
|---|
| 100 | INDXVAL(LIST,INDEX) ; $$(list, index) -> external value of index
 | 
|---|
| 101 |  N FIELD,OFFSET,TYPE
 | 
|---|
| 102 |  S FIELD=+$P($G(^FSC("LIST",+LIST,0)),U,5)
 | 
|---|
| 103 |  I 'FIELD Q ""
 | 
|---|
| 104 |  S TYPE=+$P($P($G(^FSC("FLD",FIELD,0)),U,3),"P",2),OFFSET=$P($G(^(0)),U,6)
 | 
|---|
| 105 |  I TYPE=7105.2 S TYPE=200
 | 
|---|
| 106 |  I TYPE Q $$POINTER^FSCDD(INDEX,TYPE,OFFSET)
 | 
|---|
| 107 |  Q ""
 | 
|---|