TMGDIS2 ;TMG/kst/Custom version of DIS2 ;03/25/06 ; 5/18/10 7:52am
        ;;1.0;TMG-LIB;**1**;01/01/06
        ;"---- Prior header below ----------
        ;SFISC/GFT-SEARCH, TEMPLATES & COMPUTED FIELDS;4JUN2005
        ;;22.0;VA FileMan;**6,144**;Mar 30, 1999;Build 5
        ;
DIS2    ;
        ;"Purpose:
        ;"Input:  ...
        ;"Output:  TMGRESULT is set
        ;"Results: none
        KILL DISV 
        ;"GOTO G:'DUZ
0       IF 1=0 D  
        . N DIS,DIS0,DA,DC,DE,DJ,DL 
        . D S3^DIBT1 Q
        IF 1=0 KILL DIRUT,DIROUT 
        IF 1=0 IF $D(DTOUT)!($D(DUOUT)) GOTO Q
        ;"Get SORT TEMPLATE to store search into.
        IF 1=1 SET Y=$$PREPTMPL()
        IF +TMGRESULT=-1 GOTO TMGDONE  ;"Quit from there
        SET TMGSORTT=Y 
        IF X="",'$D(DIAR) GOTO G
        IF Y<0,X=U GOTO TMGDONE  ;"WAS Q
        ;"IF Y<0 GOTO 0
        IF $D(DIARU),DIARU-Y=0 DO  GOTO TMGDONE  ;WAS 0
        . ;"WRITE $C(7),!,"Archivers must not store results in the default template"
        . SET TMGRESULT="-1^""Archivers must not store results in the default template"
        SET (DIARI,DISV)=+Y
        SET A=$D(^DIBT(DISV,"DL")) 
        IF $D(DIS0)#2 SET ^("DL")=DIS0 
        IF $D(DA)#2 SET ^("DA")=DA 
        IF $D(DJ)#2 SET ^("DJ")=DJ
        IF $D(DIAR),'$D(DIARU) SET $P(^DIAR(1.11,DIARC,0),U,3)=DISV
        SET Z=-1
        SET DIS0="^DIBT(+Y," 
        FOR P="DIS","DA","DC","DE","DJ","DL" DO
        . SET %Y=DIS0_""""_P_""","
        . SET %X=P_"(" 
        . DO %XY^%RCR
        SET %X="^UTILITY($J,",%Y="^DIBT(DISV,""O"","
        SET @(%X_"0)=U") 
        DO %XY^%RCR
G       NEW DISTXT 
        SET %X="^UTILITY($J,"
        SET %Y="DISTXT(" 
        DO %XY^%RCR
        ;"WRITE ! 
        SET Y=DI 
        DO Q 
        SET DIC=Y 
        ;Just quit.  Important screening code stored in SORT TEMPLATE in 'DIS' node
        GOTO TMGDONE  ;"//kt added
        ;
        IF $D(SF)!$D(L)&'$D(DIAR) GOTO EN1^DIP
        GOTO EN^DIP
        ;
        ;"==========================================
TEM     GOTO TEMP^TMGDIS  ;"-- MOVED TO TMGDIS
COMP    GOTO COMP^TMGDIS  ;"-- MOVED TO TMGDIS
XA      GOTO XA^TMGDIS    ;"-- MOVED TO TMGDIS
COLON   GOTO COLON^TMGDIS ;"-- MOVED TO TMGDIS
Q       GOTO Q^TMGDIS     ;"-- MOVED TO TMGDIS
        ;"==========================================
        ;
 ;"X       KILL O(DC) 
 ;"        GOTO X^TMGDIS
        ;
DIS     ;PUT SET LOGIC INTO DIS FOR SUBFILE
        SET %X="" 
        FOR %Y=1:1 SET %X=$O(DIS(%X)) Q:'%X  DO
        . SET %=$S($D(DIAR(DIARF,%X)):DIAR(DIARF,%X),1:DIS(%X)) 
        . IF %["X DIS(" SET %=$P(%,"X DIS(")_"X DIFG("_DIARF_","_$P(%,"X DIS(",2) 
        . SET ^DIAR(1.11,DIARC,"S",%Y,0)=%X
        . SET ^(1)=%
        IF %Y>1 DO
        . SET %Y=%Y-1
        . SET ^DIAR(1.11,DIARC,"S",0)="^1.1132^"_%Y_U_%Y 
        GOTO DIS2 ;"quit will occur there.
        ;
PREPTMPL() ;
        ;"//kt added
        ;"Purpose: Return IEN of a SORT TEMPLATE ready for use.
        ;"Returns -1 if problem, or IEN^NAME.  ALSO, X is set to NAME (or "" if unsuccessful)
        ;"Get SORT TEMPLATE to store search into.
        NEW TMGTMPL SET TMGTMPL=-1
        NEW Y SET Y=+$GET(INFO("SORT IEN"))           
        IF (Y'>0)!($DATA(^DIBT(Y))=0) DO  ;"Get a new record
        . NEW DIC,X
        . SET DIC=.401,DIC(0)="L"
        . SET X="TMG SRCH "_$J
        . DO ^DIC ;"Create now, or get pre-existing
        . IF +Y'>0 DO  QUIT
        . . SET TMGRESULT="-1^Error getting SORT TEMPLATE for use."
        IF +Y>0,$DATA(^DIBT(+Y)) DO  ;"Edit existing record
        . NEW TMGFDA,TMGMSG,TMGIEN,TMGIENS,DA,DIE      
        . SET TMGTMPL=Y
        . NEW I SET I=0
        . ;"Kill all but zero node of record
        . FOR  SET I=$ORDER(^DIBT(+Y,I)) QUIT:I=""  KILL ^DIBT(+Y,I) 
        . NEW % DO NOW^%DTC
        . SET DIE=.401
        . SET DA=+Y
        . SET DR="2///"_%_";3///"_DUZ(0)_";4///"_+TMGFILE_";5///"_DUZ_";6///"_DUZ(0)
        . DO ^DIE
        . ;"SET IENS=+Y_","
        . ;"SET TMGFDA(.401,IENS,2)=%
        . ;"SET TMGFDA(.401,IENS,3)=DUZ(0)
        . ;"SET TMGFDA(.401,IENS,4)=+TMGFILE        
        . ;"SET TMGFDA(.401,IENS,5)=DUZ        
        . ;"SET TMGFDA(.401,IENS,6)=DUZ(0)
        . ;"Set back new field data
        . ;"DO FILE^DIE("K","TMGFDA","TMGMSG")
        . ;"IF $DATA(TMGMSG("DIERROR")) DO  QUIT
        . ;". SET TMGRESULT="-1^Error editing SORT TEMPLATE: '"_$GET(TMGMSG("DIERR",1,"TEXT",1))_"'"
        . ;". SET Y=-1
        SET X=$PIECE(TMGTMPL,U,2)  
        QUIT TMGTMPL
        ;
TMGDONE QUIT
        ;
DELTEMPL(TMGIEN) ;
        ;"Purpose: To delete the SORT TEMPLATE in TMGIEN
        ;"Input: TMGIEN -- the IEN in file .401 to be deleted
        ;"Results: 1 if success, -1 if failure
        NEW DIE,DA,DR
        SET DIE=.401  ;DIE="^DIBT("  ;"FILE .401
        SET DA=TMGIEN
        SET DR=".01///@"
        DO ^DIE
        QUIT ($DATA(DA)=0)
        ;
