Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: DIKD2

DIKD2.m

Go to the documentation of this file.
  1. DIKD2 ;SFISC/MKO-DELETE A NEW-STYLE INDEX ;4JAN2012
  1. ;;22.0;VA FileMan;**12,95,169**;Mar 30, 1999;Build 28
  1. ;Per VHA Directive 2004-038, this routine should not be modified.
  1. ;
  1. DELIXN(DIFIL,DIXR,DIFLG,DIKDOUT,DIKDMSG) ;Delete new-style index
  1. DELIXNX ;Come here from DELIXN^DDMOD
  1. N %,DIC,DIF,DIFLIST,DIINDEX,DIQUIT,DITOP,X,Y
  1. ;
  1. ;Init
  1. I '$D(DIFM) N DIFM S DIFM=1 D INIZE^DIEFU
  1. S DIFLG=$G(DIFLG)
  1. S DIF=$E("D",DIFLG'["d")
  1. I DIFLG'["c" D CHK G:$G(DIQUIT) END
  1. S DITOP=DIFIL F Q:'$D(^DD(DITOP,0,"UP")) S DITOP=^("UP")
  1. D GETFLIST^DIKCUTL(DIXR,.DIFLIST)
  1. D LOADXREF^DIKC1("","","K",DIXR,"","DIINDEX")
  1. ;
  1. ;Delete data in index
  1. D:DIFLG["K" KILL(DITOP,.DIINDEX,DIFLG)
  1. ;
  1. ;Delete index, recompile
  1. D DELDEF(DIXR)
  1. D DIEZ(.DIFLIST,DIFLG,$G(DIKDOUT))
  1. D DIKZ^DIKD(DITOP,DIFLG,$G(DIKDOUT))
  1. ;
  1. END ;Move error message if necessary and quit
  1. D:$G(DIKDMSG)]"" CALLOUT^DIEFU(DIKDMSG)
  1. Q
  1. ;
  1. DELDEF(DIXR) ;Delete index definition
  1. N DIK,DA
  1. W:$G(DIFLG)["W" !,"Deleting index definition ..."
  1. S DIK="^DD(""IX"",",DA=DIXR D ^DIK
  1. Q
  1. ;
  1. DIEZ(DIFLIST,DIFLG,DIKDOUT) ;Recompile input templates containing field
  1. N DIFIL,DIFLD,DIKTEML
  1. S DIFIL=0 F S DIFIL=$O(DIFLIST(DIFIL)) Q:'DIFIL D
  1. . S DIFLD=0 F S DIFLD=$O(DIFLIST(DIFIL,DIFLD)) Q:'DIFLD D
  1. .. D DIEZ^DIKD(DIFIL,DIFLD,DIFLG,$G(DIKDOUT),.DIKTEML)
  1. Q
  1. ;
  1. CHK ;Check input parameters
  1. I '$G(DIFIL) D:DIF["D" ERR^DIKCU2(202,"","","","FILE") D QUIT
  1. I $G(DIXR)]"" D
  1. .N I F I=0:0 S I=$O(^DD("IX","IX",DIXR,I)) Q:'I I +$G(^DD("IX",I,0))=$G(DIFIL) Q
  1. .I 'I K DIXR
  1. I $G(DIXR)="" D:DIF["D" ERR^DIKCU2(202,"","","","CROSS-REFERENCE") D QUIT
  1. D:'$$VFLAG^DIKCU1(DIFLG,"KWcd",DIF) QUIT
  1. Q:$G(DIQUIT)
  1. S DIXR=$O(^DD("IX","BB",DIFIL,DIXR,0))
  1. D:'DIXR QUIT
  1. Q
  1. ;
  1. QUIT ;Set flag to quit
  1. S DIQUIT=1
  1. Q
  1. ;
  1. KILL(DITOP,DIINDEX,DIFLG) ;Delete index data
  1. N DIFIL,DITYP,DICTRL,DIXR
  1. ;
  1. Q:'$D(DIINDEX)
  1. S DIFIL=$O(DIINDEX(0)) Q:'DIFIL
  1. S DIXR=$O(DIINDEX(DIFIL,0)) Q:'DIXR
  1. S DITYP=$P(DIINDEX(DIFIL,DIXR),U,4)
  1. ;
  1. I $G(DIFLG)["W" D
  1. . I DITYP="R" W !,"Removing index ..."
  1. . E W !,"Executing kill logic ..."
  1. ;
  1. ;Call INDEX^DIKC to execute the kill logic
  1. S DICTRL="K"_$S(DITOP'=DIFIL:"W"_DIFIL,1:"")
  1. S DICTRL("LOGIC")="DIINDEX"
  1. D INDEX^DIKC(DITOP,"","",DIXR,.DICTRL)
  1. Q