1 | FSCQR ;SLC/STAFF-NOIS Query Routing ;1/11/98 18:46
|
---|
2 | ;;1.1;NOIS;;Sep 06, 1998
|
---|
3 | ;
|
---|
4 | QUERY(LIST,LISTCNT,CRITERIA) ; from FSCLP, FSCQB, FSCRPCQ
|
---|
5 | ; ***make lists globals
|
---|
6 | N NEWCALL,NEWSTEP,OP,SEQNUM
|
---|
7 | S OP=$P(CRITERIA(0),U)
|
---|
8 | I OP="Add" D Q
|
---|
9 | .I $P(CRITERIA(0),U,2)>1,$P(CRITERIA(0),U,2)<4 D Q ;*** test when multiple passes better than all calls
|
---|
10 | ..S $P(CRITERIA(0),U,2)=1
|
---|
11 | ..S NEWSTEP=0 F S NEWSTEP=$O(CRITERIA(NEWSTEP)) Q:NEWSTEP<1 D
|
---|
12 | ...K ^TMP("FSC USELIST",$J)
|
---|
13 | ...D SEARCH^FSCQS(0,.CRITERIA)
|
---|
14 | ...S NEWCALL=0 F S NEWCALL=$O(^TMP("FSC NEWLIST",$J,NEWCALL)) Q:NEWCALL<1 S ^TMP("FSC LIST",$J,NEWCALL,0)=NEWCALL
|
---|
15 | ...S LISTCNT=$$COUNT
|
---|
16 | ...K CRITERIA(NEWSTEP)
|
---|
17 | ...S SEQNUM=0 F S SEQNUM=$O(CRITERIA("O",SEQNUM)) Q:SEQNUM<1 I CRITERIA("O",SEQNUM)=NEWSTEP K CRITERIA("O",SEQNUM) Q
|
---|
18 | .K ^TMP("FSC USELIST",$J)
|
---|
19 | .D SEARCH^FSCQS(0,.CRITERIA)
|
---|
20 | .S NEWCALL=0 F S NEWCALL=$O(^TMP("FSC NEWLIST",$J,NEWCALL)) Q:NEWCALL<1 S ^TMP("FSC LIST",$J,NEWCALL,0)=NEWCALL
|
---|
21 | .S LISTCNT=$$COUNT
|
---|
22 | I OP="Remove" D Q
|
---|
23 | .I LISTCNT=0 Q
|
---|
24 | .K ^TMP("FSC USELIST",$J) S NEWCALL=0 F S NEWCALL=$O(^TMP("FSC LIST",$J,NEWCALL)) Q:NEWCALL<1 S ^TMP("FSC USELIST",$J,NEWCALL)=""
|
---|
25 | .D SEARCH^FSCQS(LISTCNT,.CRITERIA)
|
---|
26 | .S NEWCALL=0 F S NEWCALL=$O(^TMP("FSC NEWLIST",$J,NEWCALL)) Q:NEWCALL<1 K ^TMP("FSC LIST",$J,NEWCALL)
|
---|
27 | .S LISTCNT=$$COUNT
|
---|
28 | ; select
|
---|
29 | I LISTCNT=0 Q
|
---|
30 | K ^TMP("FSC USELIST",$J),LIST S NEWCALL=0 F S NEWCALL=$O(^TMP("FSC LIST",$J,NEWCALL)) Q:NEWCALL<1 S ^TMP("FSC USELIST",$J,NEWCALL)=""
|
---|
31 | D SEARCH^FSCQS(LISTCNT,.CRITERIA)
|
---|
32 | K ^TMP("FSC LIST",$J),LIST
|
---|
33 | S NEWCALL=0 F S NEWCALL=$O(^TMP("FSC NEWLIST",$J,NEWCALL)) Q:NEWCALL<1 S ^TMP("FSC LIST",$J,NEWCALL,0)=NEWCALL
|
---|
34 | S LISTCNT=$$COUNT
|
---|
35 | Q
|
---|
36 | ;
|
---|
37 | COUNT() ; $$() -> number of calls in list
|
---|
38 | N CALL,CNT S (CALL,CNT)=0 F S CALL=$O(^TMP("FSC LIST",$J,CALL)) Q:CALL<1 S CNT=CNT+1
|
---|
39 | Q CNT
|
---|