SDQ ;ALB/MJK - Query Object Methods ;8/12/96 ;;5.3;Scheduling;**131**;Aug 13, 1993 ; OPEN(SDQ,SDERR) ; -- SDQ OPEN [API ID: 79] D PREP^SDQUT ; ; -- get query object instance and set up query class info IF '$$CREATE(.SDQ,"SD STANDARD ENCOUNTER QUERY",$G(SDERR)) G OPENQ ; ; -- do query object instance kills and sets K @SDQUERY@(SDQ) S @SDQUERY@(SDQ)="" F X="SCAN" M @SDQUERY@(SDQ,X)=^TMP("SDQUERY CLASS",$J,SDQ,X) D STOP^SDQPROP(.SDQ) ; ; -- do open actions N SDOPEN S SDOPEN=$G(^TMP("SDQUERY CLASS",$J,SDQ,"OPEN")) IF SDOPEN]"" X SDOPEN OPENQ Q ; CLOSE(SDQ,SDERR) ; -- SDQ CLOSE [API ID: 80] D PREP^SDQUT ; ; -- do validation checks IF '$$QRY^SDQVAL(.SDQ,$G(SDERR)) G CLOSEQ ; ; -- do close actions N SDCLOSE S SDCLOSE=$G(^TMP("SDQUERY CLASS",$J,SDQ,"CLOSE")) IF SDCLOSE]"" X SDCLOSE ; ; -- do query object instance kills K @SDQUERY@(SDQ) ; ; -- do query class kills IF '$$DESTROY(.SDQ) G CLOSEQ S SDQ="" CLOSEQ Q ; CREATE(SDQ,SDQNAME,SDERR) ; -- query class level method for CREATE N SDCLS,SDCLS0,SDOK,SDSTORE S SDCLS=+$O(^SD(409.64,"B",SDQNAME,0)) IF SDCLS D . S SDCLS0=$G(^SD(409.64,SDCLS,0)) . S SDSTORE=$S($P(SDCLS0,U,4):$P(SDCLS0,U,4),1:5000) . IF $G(SDQUERY)="" S SDQUERY="SDQDATA" . D STORE(.SDQUERY,SDSTORE) . IF '$O(@SDQUERY@(0)) D KILL . ; . ; -- set query id . S (SDQ,@SDQUERY)=$G(@SDQUERY)+1 . ; -- set up tmp class info . K ^TMP("SDQUERY CLASS",$J,SDQ) . M ^TMP("SDQUERY CLASS",$J,SDQ)=^SD(409.64,SDCLS) . S ^TMP("SDQUERY CLASS",$J,SDQ)=SDCLS . S ^TMP("SDQUERY CLASS",$J,SDQ,"GL")=$G(^DIC(+$P(SDCLS0,"^",2),0,"GL")) . ; -- subscript level of files root ; ex:^SCE = 0 ; ex:^SD(404.42, = 1 . S ^TMP("SDQUERY CLASS",$J,SDQ,"GL SUBSCRIPTS")=+$P(SDCLS0,"^",3) . ; . S SDOK=1 ELSE D . ; -- build error msg . N SDIN,SDOUT . S SDIN("CLASS")=SDQNAME . S SDOUT("CLASS")=SDQNAME . D BLD^SDQVAL(4096400.001,.SDIN,.SDOUT,$G(SDERR)) . S SDOK=0 ; Q SDOK ; STORE(SDQUERY,SDSTORE) ; -- decide whether to use a local or global N SDOLD IF $S