1 | FSCQS ;SLC/STAFF-NOIS Query Search ;5/25/98 19:00
|
---|
2 | ;;1.1;NOIS;;Sep 06, 1998
|
---|
3 | ;
|
---|
4 | SEARCH(LISTCNT,CRITERIA) ; from FSCQR
|
---|
5 | S LIST=$$LIST(LISTCNT)
|
---|
6 | I '$D(CRITERIA("O")) D OPTIMIZE^FSCQO(.CRITERIA)
|
---|
7 | K ^TMP("FSC NEWLIST",$J) N ACTION,CVALUE,FCOND,QUERY,STEP
|
---|
8 | I $P(CRITERIA(0),U,2)=1 D Q
|
---|
9 | .S STEP=$O(CRITERIA(0))
|
---|
10 | .I CRITERIA(STEP)=1 D Q
|
---|
11 | ..S ACTION="S ^TMP(""FSC NEWLIST"",$J,CALL)="""""
|
---|
12 | ..S QUERY=CRITERIA(STEP,+$O(CRITERIA(STEP,0)))
|
---|
13 | ..D CHECK(LIST,$P(QUERY,U),$P(QUERY,U,2),$P(QUERY,U,3))
|
---|
14 | .S ACTION="D MULT^FSCQSM(CALL)"
|
---|
15 | .D SETUP^FSCQSS
|
---|
16 | .D CHECK(LIST,$P(QUERY,U),$P(QUERY,U,2),$P(QUERY,U,3))
|
---|
17 | S ACTION="D MMULT^FSCQSM(CALL)"
|
---|
18 | D SETUP^FSCQSSM
|
---|
19 | D ALL^FSCQSA
|
---|
20 | Q
|
---|
21 | CHECK(LIST,FIELD,COND,VALUE) ; *** needs to handle special code, word processing
|
---|
22 | N TYPE,INDEX,CODE
|
---|
23 | S TYPE=$P(CRITERIA("F",FIELD),U),CODE=$P(CRITERIA("F",FIELD),U,2),INDEX=$P(CRITERIA("F",FIELD),U,3)
|
---|
24 | ;I CODE["7100.6," Q ;**** fix for personal field search
|
---|
25 | I TYPE="W" D Q
|
---|
26 | .I COND="[" D CON^FSCQSW Q
|
---|
27 | .I COND="exists" D EX^FSCQSW Q
|
---|
28 | .I COND="'[" D NCON^FSCQSW Q
|
---|
29 | .I COND="not exists" D NEX^FSCQSW Q
|
---|
30 | I '$L(INDEX) D Q
|
---|
31 | .I COND="exists" D EX^FSCQSN Q
|
---|
32 | .I COND="not exists" D NEX^FSCQSN Q
|
---|
33 | .I COND="range" D R^FSCQSR Q
|
---|
34 | .I COND="not range" D NR^FSCQSR Q
|
---|
35 | .D OTHER^FSCQSN Q
|
---|
36 | I COND="=" D EQ^FSCQSE Q
|
---|
37 | I COND=">" D GT^FSCQSG Q
|
---|
38 | I COND="<" D LT^FSCQSL Q
|
---|
39 | I COND="[" D CON^FSCQSC Q
|
---|
40 | I COND="exists" D EX^FSCQSX Q
|
---|
41 | I COND="range" D R^FSCQSR Q
|
---|
42 | I COND="'=" D NEQ^FSCQSE Q
|
---|
43 | I COND="'>" D NGT^FSCQSG Q
|
---|
44 | I COND="'<" D NLT^FSCQSL Q
|
---|
45 | I COND="'[" D NCON^FSCQSC Q
|
---|
46 | I COND="not exists" D NEX^FSCQSX Q
|
---|
47 | I COND="not range" D NR^FSCQSR Q
|
---|
48 | Q
|
---|
49 | ;
|
---|
50 | LIST(CNT) ; $$(list count) -> "" if 0, 0 if count is >1000, else 1
|
---|
51 | Q $S(CNT=0:"",CNT>1000:0,1:1)
|
---|