FSCRPCF ;SLC/STAFF-NOIS RPC Format ;6/15/98 14:28 ;;1.1;NOIS;;Sep 06, 1998 ; CALL(IN,OUT) ; from FSCRPX (RPCCallFormat) N CALL,FLDS,FMT,NODE,TYPE K FMT S CALL=+$G(^TMP("FSCRPC",$J,"INPUT",1)),FMT=$P($G(^(1)),U,2),FLDS=$P($G(^(1)),U,3) I 'CALL Q D INFO(.FMT,FLDS,.NODE,.TYPE) D BUILD(1,CALL,NODE,.FMT,TYPE,0) Q ; LIST(IN,OUT) ; from FSCRPX (RPCListFormat) N CALL,COLLATE,FLDS,FMT,LASTNUM,LISTNUM,LISTFLAG,LNUM,NODE,SNUM,TYPE K FMT,^TMP("FSC SELECT",$J),^TMP("FSC STATS",$J) 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) I COLLATE S FMT("COLLATE")=COLLATE D INFO(.FMT,FLDS,.NODE,.TYPE) S (LASTNUM,LISTNUM)=0 I LISTFLAG D .I FMT="STAT" D ..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)="" .S CALL=0 F S CALL=$O(^TMP("FSC CURRENT LIST",$J,"C",CALL)) Q:CALL<1 D ..S LISTNUM=LISTNUM+1 ..D BUILD(LISTNUM,CALL,NODE,.FMT,TYPE,.LASTNUM) E D .I FMT="STAT" D ..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)="" .S LNUM=1 F S LNUM=$O(^TMP("FSCRPC",$J,"INPUT",LNUM)) Q:LNUM<1 S CALL=+^(LNUM) D ..S LISTNUM=LISTNUM+1 ..D BUILD(LISTNUM,CALL,NODE,.FMT,TYPE,.LASTNUM) K ^TMP("FSC SELECT",$J),^TMP(NODE,$J) Q ; TABLE(IN,OUT) ; from FSCRPX (RPCListTable) N CALL,COL,COLNUM,FLDS,FMT,LASTNUM,LISTNUM,LISTFLAG,LNUM,NODE,ROWNUM,TYPE S LISTFLAG=+$G(^TMP("FSCRPC",$J,"INPUT",1)),FLDS=$P($G(^(1)),U,2) S FMT="CUSTOM" D INFO(.FMT,FLDS,.NODE,.TYPE) S LASTNUM=1,LISTNUM=0,COLNUM=0 S COL=0 F S COL=$O(FMT(COL)) Q:COL<1 D .S COLNUM=COLNUM+1 .S LASTNUM=LASTNUM+1 .S ^TMP("FSCRPC",$J,"OUTPUT",LASTNUM)="0^"_COLNUM_U_$P(FMT(COL),U,2) S ROWNUM=1 I LISTFLAG D .S LNUM=0 F S LNUM=$O(^TMP("FSC CURRENT LIST",$J,LNUM)) Q:LNUM<1 S CALL=+^(LNUM) D ..S ROWNUM=ROWNUM+1 ..S LASTNUM=LASTNUM+1 ..S LISTNUM=LISTNUM+1 ..S ^TMP("FSCRPC",$J,"OUTPUT",LASTNUM)=LISTNUM_"^0^"_$P(^FSCD("CALL",CALL,0),U) ..N FIELD K FIELD ..S COL=0 F S COL=$O(FMT(COL)) Q:COL<1 D ...I '$L($P(FMT(COL),U,7)) S $P(FMT(COL),U,7)=" " ...S FIELD($P(FMT(COL),U,7))="" ..D GET^FSCGET("CUSTOM",CALL,.FIELD) ..S COL=0 F S COL=$O(FMT(COL)) Q:COL<1 D ...S LASTNUM=LASTNUM+1 ...I $P(FMT(COL),U,7)="SUBJECT" D ....S ^TMP("FSCRPC",$J,"OUTPUT",LASTNUM)=LISTNUM_U_COL_U_FIELD($P(FMT(COL),U,7)) ...E D ....S ^TMP("FSCRPC",$J,"OUTPUT",LASTNUM)=LISTNUM_U_COL_U_$P(FIELD($P(FMT(COL),U,7)),U,2) .S ^TMP("FSCRPC",$J,"OUTPUT",1)=ROWNUM_";"_(1+COLNUM) E D .S LNUM=1 F S LNUM=$O(^TMP("FSCRPC",$J,"INPUT",LNUM)) Q:LNUM<1 S CALL=+^(LNUM) D ..S ROWNUM=ROWNUM+1 ..S LASTNUM=LASTNUM+1 ..S LISTNUM=LISTNUM+1 ..S ^TMP("FSCRPC",$J,"OUTPUT",LASTNUM)=LISTNUM_"^0^"_$P(^FSCD("CALL",CALL,0),U) ..N FIELD K FIELD ..S COL=0 F S COL=$O(FMT(COL)) Q:COL<1 D ...I '$L($P(FMT(COL),U,7)) S $P(FMT(COL),U,7)=" " ...S FIELD($P(FMT(COL),U,7))="" ..D GET^FSCGET("CUSTOM",CALL,.FIELD) ..S COL=0 F S COL=$O(FMT(COL)) Q:COL<1 D ...S LASTNUM=LASTNUM+1 ...I $P(FMT(COL),U,7)="SUBJECT" D ....S ^TMP("FSCRPC",$J,"OUTPUT",LASTNUM)=LISTNUM_U_COL_U_FIELD($P(FMT(COL),U,7)) ...E D ....S ^TMP("FSCRPC",$J,"OUTPUT",LASTNUM)=LISTNUM_U_COL_U_$P(FIELD($P(FMT(COL),U,7)),U,2) .S ^TMP("FSCRPC",$J,"OUTPUT",1)=ROWNUM_";"_(1+COLNUM) Q ; INFO(FMT,FLDS,NODE,TYPE) ; N CNT,FIELD,FORMAT,NUM,PIECE I FMT="BRIEF" S NODE="FSC MULT BRIEF",TYPE="FSC MULT " Q I FMT="CUSTOM"!(FMT="STAT") D .S TYPE="FSC VIEW " .S NODE=TYPE_FMT .S NUM=0 .I $E(FLDS)="{" D ..S FORMAT=+$P(FLDS,"{",2) ..S CNT=0 F S CNT=$O(^FSC("FORMAT",FORMAT,2,CNT)) Q:CNT<1 S FIELD=+^(CNT,0) D ...S NUM=NUM+1 ...S FMT(NUM)=$G(^FSC("FLD",FIELD,0)) .E D ..F PIECE=1:1 S FIELD=$P(FLDS,";",PIECE) Q:FIELD="" D ...S NUM=NUM+1 ...S FMT(NUM)=$G(^FSC("FLD",+FIELD,0)) E S NODE="FSC MULT DETAIL",FMT="DETAIL",TYPE="FSC MULT " Q ; BUILD(LISTNUM,CALL,NODE,FMT,TYPE,LASTNUM) ; N FIRSTNUM,LINE,NUM S FIRSTNUM=LASTNUM+1 K ^TMP(NODE,$J) D BUILD^FSCFORM(LISTNUM,CALL,.FMT,.LASTNUM,TYPE) I FMT="BRIEF"!(FMT="DETAIL") D .S NUM=0 F S NUM=$O(^TMP(NODE,$J,LISTNUM,NUM)) Q:NUM<1 S LINE=$G(^(NUM,0)) D ..S ^TMP("FSCRPC",$J,"OUTPUT",NUM)=LINE .S LASTNUM=LASTNUM+1,$P(^TMP("FSCRPC",$J,"OUTPUT",LASTNUM),"=",80)="" I FMT="CUSTOM"!(FMT="STAT") D .S NUM=0 F S NUM=$O(^TMP(NODE,$J,NUM)) Q:NUM<1 S LINE=$G(^(NUM,0)) D ..S ^TMP("FSCRPC",$J,"OUTPUT",NUM)=LINE I FMT'="STAT" S ^TMP("FSCRPC",$J,"OUTPUT",FIRSTNUM)=$$SHORT^FSCGETS(CALL,LISTNUM) K ^TMP(NODE,$J) Q ; EDITABLE(IN,OUT) ; from FSCRPX (RPCEditableCall) N CALL,OLDSTAT S CALL=+$G(^TMP("FSCRPC",$J,"INPUT",1)) I $L($G(^FSCD("CALL",CALL,0))) D ; *** if no status, force to open .S OLDSTAT=$$STATCALL^FSCESU(CALL) .I 'OLDSTAT D ..D STATUS^FSCES(CALL,"",1) ..D UPDATE^FSCAUDIT(CALL) ..D UPDATE^FSCTASK(CALL) S STAT=+$P($G(^FSCD("CALL",CALL,0)),U,2) D .I STAT=2 S OPEN=0 Q .I STAT=99 S OPEN=0 Q .S OPEN=1 S ^TMP("FSCRPC",$J,"OUTPUT",1)=$$OKTOED(CALL)_U_$$PRIMARY(CALL)_U_OPEN Q ; PRIMARY(CALL) ; $$(call) -> 0 or primary ien Q +$P($G(^FSCD("CALL",+CALL,120)),U,24) ; OKTOED(CALL) ; $$(call) -> 0 no edit, 1 reopen, 2 edit N CDATE,CONTACT,DAYS,RESULT,SPEC,STATUS,WKLD,ZERO S RESULT=0 S ZERO=$G(^FSCD("CALL",+CALL,0)) I '$L(ZERO) Q 0 S CONTACT=$P(ZERO,U,6),STATUS=$P(ZERO,U,2),CDATE=$P(ZERO,U,4),SPEC=$$ACCESS^FSCU(DUZ,"SPEC") I '(STATUS=2!(STATUS=99)) Q 2 I SPEC D Q RESULT .I STATUS=99 S RESULT=1 Q .S DAYS=+$P(^FSC("PARAM",1,0),U,10),WKLD=+$P(^(0),U,9) .I 'WKLD S RESULT=1 Q .I 'DAYS S DAYS=30 .I DT>$$FMADD^XLFDT(CDATE,DAYS) S RESULT=1 Q .S RESULT=2 I CONTACT=DUZ Q 1 Q 0