| 1 | FSCRPCF ;SLC/STAFF-NOIS RPC Format ;6/15/98  14:28
 | 
|---|
| 2 |  ;;1.1;NOIS;;Sep 06, 1998
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | CALL(IN,OUT) ; from FSCRPX (RPCCallFormat)
 | 
|---|
| 5 |  N CALL,FLDS,FMT,NODE,TYPE K FMT
 | 
|---|
| 6 |  S CALL=+$G(^TMP("FSCRPC",$J,"INPUT",1)),FMT=$P($G(^(1)),U,2),FLDS=$P($G(^(1)),U,3)
 | 
|---|
| 7 |  I 'CALL Q
 | 
|---|
| 8 |  D INFO(.FMT,FLDS,.NODE,.TYPE)
 | 
|---|
| 9 |  D BUILD(1,CALL,NODE,.FMT,TYPE,0)
 | 
|---|
| 10 |  Q
 | 
|---|
| 11 |  ;
 | 
|---|
| 12 | LIST(IN,OUT) ; from FSCRPX (RPCListFormat)
 | 
|---|
| 13 |  N CALL,COLLATE,FLDS,FMT,LASTNUM,LISTNUM,LISTFLAG,LNUM,NODE,SNUM,TYPE K FMT,^TMP("FSC SELECT",$J),^TMP("FSC STATS",$J)
 | 
|---|
| 14 |  S LISTFLAG=+$G(^TMP("FSCRPC",$J,"INPUT",1)),FMT=$P($G(^(1)),U,2),FLDS=$P($G(^(1)),U,3),COLLATE=$P($G(^(1)),U,4)
 | 
|---|
| 15 |  I COLLATE S FMT("COLLATE")=COLLATE
 | 
|---|
| 16 |  D INFO(.FMT,FLDS,.NODE,.TYPE)
 | 
|---|
| 17 |  S (LASTNUM,LISTNUM)=0
 | 
|---|
| 18 |  I LISTFLAG D
 | 
|---|
| 19 |  .I FMT="STAT" D
 | 
|---|
| 20 |  ..S SNUM=0,CALL=0 F  S CALL=$O(^TMP("FSC CURRENT LIST",$J,"C",CALL)) Q:CALL<1  S SNUM=SNUM+1,^TMP("FSC SELECT",$J,"VVALUES",SNUM)=""
 | 
|---|
| 21 |  .S CALL=0 F  S CALL=$O(^TMP("FSC CURRENT LIST",$J,"C",CALL)) Q:CALL<1  D
 | 
|---|
| 22 |  ..S LISTNUM=LISTNUM+1
 | 
|---|
| 23 |  ..D BUILD(LISTNUM,CALL,NODE,.FMT,TYPE,.LASTNUM)
 | 
|---|
| 24 |  E  D
 | 
|---|
| 25 |  .I FMT="STAT" D
 | 
|---|
| 26 |  ..S SNUM=0,LNUM=1 F  S LNUM=$O(^TMP("FSCRPC",$J,"INPUT",LNUM)) Q:LNUM<1  S CALL=+^(LNUM),SNUM=SNUM+1,^TMP("FSC SELECT",$J,"VVALUES",SNUM)=""
 | 
|---|
| 27 |  .S LNUM=1 F  S LNUM=$O(^TMP("FSCRPC",$J,"INPUT",LNUM)) Q:LNUM<1  S CALL=+^(LNUM) D
 | 
|---|
| 28 |  ..S LISTNUM=LISTNUM+1
 | 
|---|
| 29 |  ..D BUILD(LISTNUM,CALL,NODE,.FMT,TYPE,.LASTNUM)
 | 
|---|
| 30 |  K ^TMP("FSC SELECT",$J),^TMP(NODE,$J)
 | 
|---|
| 31 |  Q
 | 
|---|
| 32 |  ;
 | 
|---|
| 33 | TABLE(IN,OUT) ; from FSCRPX (RPCListTable)
 | 
|---|
| 34 |  N CALL,COL,COLNUM,FLDS,FMT,LASTNUM,LISTNUM,LISTFLAG,LNUM,NODE,ROWNUM,TYPE
 | 
|---|
| 35 |  S LISTFLAG=+$G(^TMP("FSCRPC",$J,"INPUT",1)),FLDS=$P($G(^(1)),U,2)
 | 
|---|
| 36 |  S FMT="CUSTOM"
 | 
|---|
| 37 |  D INFO(.FMT,FLDS,.NODE,.TYPE)
 | 
|---|
| 38 |  S LASTNUM=1,LISTNUM=0,COLNUM=0
 | 
|---|
| 39 |  S COL=0 F  S COL=$O(FMT(COL)) Q:COL<1  D
 | 
|---|
| 40 |  .S COLNUM=COLNUM+1
 | 
|---|
| 41 |  .S LASTNUM=LASTNUM+1
 | 
|---|
| 42 |  .S ^TMP("FSCRPC",$J,"OUTPUT",LASTNUM)="0^"_COLNUM_U_$P(FMT(COL),U,2)
 | 
|---|
| 43 |  S ROWNUM=1
 | 
|---|
| 44 |  I LISTFLAG D
 | 
|---|
| 45 |  .S LNUM=0 F  S LNUM=$O(^TMP("FSC CURRENT LIST",$J,LNUM)) Q:LNUM<1  S CALL=+^(LNUM) D
 | 
|---|
| 46 |  ..S ROWNUM=ROWNUM+1
 | 
|---|
| 47 |  ..S LASTNUM=LASTNUM+1
 | 
|---|
| 48 |  ..S LISTNUM=LISTNUM+1
 | 
|---|
| 49 |  ..S ^TMP("FSCRPC",$J,"OUTPUT",LASTNUM)=LISTNUM_"^0^"_$P(^FSCD("CALL",CALL,0),U)
 | 
|---|
| 50 |  ..N FIELD K FIELD
 | 
|---|
| 51 |  ..S COL=0 F  S COL=$O(FMT(COL)) Q:COL<1  D
 | 
|---|
| 52 |  ...I '$L($P(FMT(COL),U,7)) S $P(FMT(COL),U,7)=" "
 | 
|---|
| 53 |  ...S FIELD($P(FMT(COL),U,7))=""
 | 
|---|
| 54 |  ..D GET^FSCGET("CUSTOM",CALL,.FIELD)
 | 
|---|
| 55 |  ..S COL=0 F  S COL=$O(FMT(COL)) Q:COL<1  D
 | 
|---|
| 56 |  ...S LASTNUM=LASTNUM+1
 | 
|---|
| 57 |  ...I $P(FMT(COL),U,7)="SUBJECT" D
 | 
|---|
| 58 |  ....S ^TMP("FSCRPC",$J,"OUTPUT",LASTNUM)=LISTNUM_U_COL_U_FIELD($P(FMT(COL),U,7))
 | 
|---|
| 59 |  ...E  D
 | 
|---|
| 60 |  ....S ^TMP("FSCRPC",$J,"OUTPUT",LASTNUM)=LISTNUM_U_COL_U_$P(FIELD($P(FMT(COL),U,7)),U,2)
 | 
|---|
| 61 |  .S ^TMP("FSCRPC",$J,"OUTPUT",1)=ROWNUM_";"_(1+COLNUM)
 | 
|---|
| 62 |  E  D
 | 
|---|
| 63 |  .S LNUM=1 F  S LNUM=$O(^TMP("FSCRPC",$J,"INPUT",LNUM)) Q:LNUM<1  S CALL=+^(LNUM) D
 | 
|---|
| 64 |  ..S ROWNUM=ROWNUM+1
 | 
|---|
| 65 |  ..S LASTNUM=LASTNUM+1
 | 
|---|
| 66 |  ..S LISTNUM=LISTNUM+1
 | 
|---|
| 67 |  ..S ^TMP("FSCRPC",$J,"OUTPUT",LASTNUM)=LISTNUM_"^0^"_$P(^FSCD("CALL",CALL,0),U)
 | 
|---|
| 68 |  ..N FIELD K FIELD
 | 
|---|
| 69 |  ..S COL=0 F  S COL=$O(FMT(COL)) Q:COL<1  D
 | 
|---|
| 70 |  ...I '$L($P(FMT(COL),U,7)) S $P(FMT(COL),U,7)=" "
 | 
|---|
| 71 |  ...S FIELD($P(FMT(COL),U,7))=""
 | 
|---|
| 72 |  ..D GET^FSCGET("CUSTOM",CALL,.FIELD)
 | 
|---|
| 73 |  ..S COL=0 F  S COL=$O(FMT(COL)) Q:COL<1  D
 | 
|---|
| 74 |  ...S LASTNUM=LASTNUM+1
 | 
|---|
| 75 |  ...I $P(FMT(COL),U,7)="SUBJECT" D
 | 
|---|
| 76 |  ....S ^TMP("FSCRPC",$J,"OUTPUT",LASTNUM)=LISTNUM_U_COL_U_FIELD($P(FMT(COL),U,7))
 | 
|---|
| 77 |  ...E  D
 | 
|---|
| 78 |  ....S ^TMP("FSCRPC",$J,"OUTPUT",LASTNUM)=LISTNUM_U_COL_U_$P(FIELD($P(FMT(COL),U,7)),U,2)
 | 
|---|
| 79 |  .S ^TMP("FSCRPC",$J,"OUTPUT",1)=ROWNUM_";"_(1+COLNUM)
 | 
|---|
| 80 |  Q
 | 
|---|
| 81 |  ;
 | 
|---|
| 82 | INFO(FMT,FLDS,NODE,TYPE) ;
 | 
|---|
| 83 |  N CNT,FIELD,FORMAT,NUM,PIECE
 | 
|---|
| 84 |  I FMT="BRIEF" S NODE="FSC MULT BRIEF",TYPE="FSC MULT " Q
 | 
|---|
| 85 |  I FMT="CUSTOM"!(FMT="STAT") D
 | 
|---|
| 86 |  .S TYPE="FSC VIEW "
 | 
|---|
| 87 |  .S NODE=TYPE_FMT
 | 
|---|
| 88 |  .S NUM=0
 | 
|---|
| 89 |  .I $E(FLDS)="{" D
 | 
|---|
| 90 |  ..S FORMAT=+$P(FLDS,"{",2)
 | 
|---|
| 91 |  ..S CNT=0 F  S CNT=$O(^FSC("FORMAT",FORMAT,2,CNT)) Q:CNT<1  S FIELD=+^(CNT,0) D
 | 
|---|
| 92 |  ...S NUM=NUM+1
 | 
|---|
| 93 |  ...S FMT(NUM)=$G(^FSC("FLD",FIELD,0))
 | 
|---|
| 94 |  .E  D
 | 
|---|
| 95 |  ..F PIECE=1:1 S FIELD=$P(FLDS,";",PIECE) Q:FIELD=""  D
 | 
|---|
| 96 |  ...S NUM=NUM+1
 | 
|---|
| 97 |  ...S FMT(NUM)=$G(^FSC("FLD",+FIELD,0))
 | 
|---|
| 98 |  E  S NODE="FSC MULT DETAIL",FMT="DETAIL",TYPE="FSC MULT "
 | 
|---|
| 99 |  Q
 | 
|---|
| 100 |  ;
 | 
|---|
| 101 | BUILD(LISTNUM,CALL,NODE,FMT,TYPE,LASTNUM) ;
 | 
|---|
| 102 |  N FIRSTNUM,LINE,NUM
 | 
|---|
| 103 |  S FIRSTNUM=LASTNUM+1
 | 
|---|
| 104 |  K ^TMP(NODE,$J)
 | 
|---|
| 105 |  D BUILD^FSCFORM(LISTNUM,CALL,.FMT,.LASTNUM,TYPE)
 | 
|---|
| 106 |  I FMT="BRIEF"!(FMT="DETAIL") D
 | 
|---|
| 107 |  .S NUM=0 F  S NUM=$O(^TMP(NODE,$J,LISTNUM,NUM)) Q:NUM<1  S LINE=$G(^(NUM,0)) D
 | 
|---|
| 108 |  ..S ^TMP("FSCRPC",$J,"OUTPUT",NUM)=LINE
 | 
|---|
| 109 |  .S LASTNUM=LASTNUM+1,$P(^TMP("FSCRPC",$J,"OUTPUT",LASTNUM),"=",80)=""
 | 
|---|
| 110 |  I FMT="CUSTOM"!(FMT="STAT") D
 | 
|---|
| 111 |  .S NUM=0 F  S NUM=$O(^TMP(NODE,$J,NUM)) Q:NUM<1  S LINE=$G(^(NUM,0)) D
 | 
|---|
| 112 |  ..S ^TMP("FSCRPC",$J,"OUTPUT",NUM)=LINE
 | 
|---|
| 113 |  I FMT'="STAT" S ^TMP("FSCRPC",$J,"OUTPUT",FIRSTNUM)=$$SHORT^FSCGETS(CALL,LISTNUM)
 | 
|---|
| 114 |  K ^TMP(NODE,$J)
 | 
|---|
| 115 |  Q
 | 
|---|
| 116 |  ;
 | 
|---|
| 117 | EDITABLE(IN,OUT) ; from FSCRPX (RPCEditableCall)
 | 
|---|
| 118 |  N CALL,OLDSTAT
 | 
|---|
| 119 |  S CALL=+$G(^TMP("FSCRPC",$J,"INPUT",1))
 | 
|---|
| 120 |  I $L($G(^FSCD("CALL",CALL,0))) D  ; *** if no status, force to open
 | 
|---|
| 121 |  .S OLDSTAT=$$STATCALL^FSCESU(CALL)
 | 
|---|
| 122 |  .I 'OLDSTAT D
 | 
|---|
| 123 |  ..D STATUS^FSCES(CALL,"",1)
 | 
|---|
| 124 |  ..D UPDATE^FSCAUDIT(CALL)
 | 
|---|
| 125 |  ..D UPDATE^FSCTASK(CALL)
 | 
|---|
| 126 |  S STAT=+$P($G(^FSCD("CALL",CALL,0)),U,2)
 | 
|---|
| 127 |  D
 | 
|---|
| 128 |  .I STAT=2 S OPEN=0 Q
 | 
|---|
| 129 |  .I STAT=99 S OPEN=0 Q
 | 
|---|
| 130 |  .S OPEN=1
 | 
|---|
| 131 |  S ^TMP("FSCRPC",$J,"OUTPUT",1)=$$OKTOED(CALL)_U_$$PRIMARY(CALL)_U_OPEN
 | 
|---|
| 132 |  Q
 | 
|---|
| 133 |  ;
 | 
|---|
| 134 | PRIMARY(CALL) ; $$(call) -> 0 or primary ien
 | 
|---|
| 135 |  Q +$P($G(^FSCD("CALL",+CALL,120)),U,24)
 | 
|---|
| 136 |  ;
 | 
|---|
| 137 | OKTOED(CALL) ; $$(call) -> 0 no edit, 1 reopen, 2 edit
 | 
|---|
| 138 |  N CDATE,CONTACT,DAYS,RESULT,SPEC,STATUS,WKLD,ZERO
 | 
|---|
| 139 |  S RESULT=0
 | 
|---|
| 140 |  S ZERO=$G(^FSCD("CALL",+CALL,0)) I '$L(ZERO) Q 0
 | 
|---|
| 141 |  S CONTACT=$P(ZERO,U,6),STATUS=$P(ZERO,U,2),CDATE=$P(ZERO,U,4),SPEC=$$ACCESS^FSCU(DUZ,"SPEC")
 | 
|---|
| 142 |  I '(STATUS=2!(STATUS=99)) Q 2
 | 
|---|
| 143 |  I SPEC D  Q RESULT
 | 
|---|
| 144 |  .I STATUS=99 S RESULT=1 Q
 | 
|---|
| 145 |  .S DAYS=+$P(^FSC("PARAM",1,0),U,10),WKLD=+$P(^(0),U,9)
 | 
|---|
| 146 |  .I 'WKLD S RESULT=1 Q
 | 
|---|
| 147 |  .I 'DAYS S DAYS=30
 | 
|---|
| 148 |  .I DT>$$FMADD^XLFDT(CDATE,DAYS) S RESULT=1 Q
 | 
|---|
| 149 |  .S RESULT=2
 | 
|---|
| 150 |  I CONTACT=DUZ Q 1
 | 
|---|
| 151 |  Q 0
 | 
|---|