FSCQS ;SLC/STAFF-NOIS Query Search ;5/25/98 19:00 ;;1.1;NOIS;;Sep 06, 1998 ; SEARCH(LISTCNT,CRITERIA) ; from FSCQR S LIST=$$LIST(LISTCNT) I '$D(CRITERIA("O")) D OPTIMIZE^FSCQO(.CRITERIA) K ^TMP("FSC NEWLIST",$J) N ACTION,CVALUE,FCOND,QUERY,STEP I $P(CRITERIA(0),U,2)=1 D Q .S STEP=$O(CRITERIA(0)) .I CRITERIA(STEP)=1 D Q ..S ACTION="S ^TMP(""FSC NEWLIST"",$J,CALL)=""""" ..S QUERY=CRITERIA(STEP,+$O(CRITERIA(STEP,0))) ..D CHECK(LIST,$P(QUERY,U),$P(QUERY,U,2),$P(QUERY,U,3)) .S ACTION="D MULT^FSCQSM(CALL)" .D SETUP^FSCQSS .D CHECK(LIST,$P(QUERY,U),$P(QUERY,U,2),$P(QUERY,U,3)) S ACTION="D MMULT^FSCQSM(CALL)" D SETUP^FSCQSSM D ALL^FSCQSA Q CHECK(LIST,FIELD,COND,VALUE) ; *** needs to handle special code, word processing N TYPE,INDEX,CODE S TYPE=$P(CRITERIA("F",FIELD),U),CODE=$P(CRITERIA("F",FIELD),U,2),INDEX=$P(CRITERIA("F",FIELD),U,3) ;I CODE["7100.6," Q ;**** fix for personal field search I TYPE="W" D Q .I COND="[" D CON^FSCQSW Q .I COND="exists" D EX^FSCQSW Q .I COND="'[" D NCON^FSCQSW Q .I COND="not exists" D NEX^FSCQSW Q I '$L(INDEX) D Q .I COND="exists" D EX^FSCQSN Q .I COND="not exists" D NEX^FSCQSN Q .I COND="range" D R^FSCQSR Q .I COND="not range" D NR^FSCQSR Q .D OTHER^FSCQSN Q I COND="=" D EQ^FSCQSE Q I COND=">" D GT^FSCQSG Q I COND="<" D LT^FSCQSL Q I COND="[" D CON^FSCQSC Q I COND="exists" D EX^FSCQSX Q I COND="range" D R^FSCQSR Q I COND="'=" D NEQ^FSCQSE Q I COND="'>" D NGT^FSCQSG Q I COND="'<" D NLT^FSCQSL Q I COND="'[" D NCON^FSCQSC Q I COND="not exists" D NEX^FSCQSX Q I COND="not range" D NR^FSCQSR Q Q ; LIST(CNT) ; $$(list count) -> "" if 0, 0 if count is >1000, else 1 Q $S(CNT=0:"",CNT>1000:0,1:1)