| 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) | 
|---|