[613] | 1 | DIKD2 ;SFISC/MKO-DELETE A NEW-STYLE INDEX ;10:28 AM 1 Nov 2002
|
---|
| 2 | ;;22.0;VA FileMan;**12,95**;Mar 30, 1999
|
---|
| 3 | ;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
| 4 | ;
|
---|
| 5 | DELIXN(DIFIL,DIXR,DIFLG,DIKDOUT,DIKDMSG) ;Delete new-style index
|
---|
| 6 | DELIXNX ;Come here from DELIXN^DDMOD
|
---|
| 7 | N %,DIC,DIF,DIFLIST,DIINDEX,DIQUIT,DITOP,X,Y
|
---|
| 8 | ;
|
---|
| 9 | ;Init
|
---|
| 10 | I '$D(DIFM) N DIFM S DIFM=1 D INIZE^DIEFU
|
---|
| 11 | S DIFLG=$G(DIFLG)
|
---|
| 12 | S DIF=$E("D",DIFLG'["d")
|
---|
| 13 | I DIFLG'["c" D CHK G:$G(DIQUIT) END
|
---|
| 14 | S DITOP=DIFIL F Q:'$D(^DD(DITOP,0,"UP")) S DITOP=^("UP")
|
---|
| 15 | D GETFLIST^DIKCUTL(DIXR,.DIFLIST)
|
---|
| 16 | D LOADXREF^DIKC1("","","K",DIXR,"","DIINDEX")
|
---|
| 17 | ;
|
---|
| 18 | ;Delete data in index
|
---|
| 19 | D:DIFLG["K" KILL(DITOP,.DIINDEX,DIFLG)
|
---|
| 20 | ;
|
---|
| 21 | ;Delete index, recompile
|
---|
| 22 | D DELDEF(DIXR)
|
---|
| 23 | D DIEZ(.DIFLIST,DIFLG,$G(DIKDOUT))
|
---|
| 24 | D DIKZ^DIKD(DITOP,DIFLG,$G(DIKDOUT))
|
---|
| 25 | ;
|
---|
| 26 | END ;Move error message if necessary and quit
|
---|
| 27 | D:$G(DIKDMSG)]"" CALLOUT^DIEFU(DIKDMSG)
|
---|
| 28 | Q
|
---|
| 29 | ;
|
---|
| 30 | DELDEF(DIXR) ;Delete index definition
|
---|
| 31 | N DIK,DA
|
---|
| 32 | W:$G(DIFLG)["W" !,"Deleting index definition ..."
|
---|
| 33 | S DIK="^DD(""IX"",",DA=DIXR D ^DIK
|
---|
| 34 | Q
|
---|
| 35 | ;
|
---|
| 36 | DIEZ(DIFLIST,DIFLG,DIKDOUT) ;Recompile input templates containing field
|
---|
| 37 | N DIFIL,DIFLD,DIKTEML
|
---|
| 38 | S DIFIL=0 F S DIFIL=$O(DIFLIST(DIFIL)) Q:'DIFIL D
|
---|
| 39 | . S DIFLD=0 F S DIFLD=$O(DIFLIST(DIFIL,DIFLD)) Q:'DIFLD D
|
---|
| 40 | .. D DIEZ^DIKD(DIFIL,DIFLD,DIFLG,$G(DIKDOUT),.DIKTEML)
|
---|
| 41 | Q
|
---|
| 42 | ;
|
---|
| 43 | CHK ;Check input parameters
|
---|
| 44 | I '$G(DIFIL) D:DIF["D" ERR^DIKCU2(202,"","","","FILE") D QUIT
|
---|
| 45 | I $G(DIXR)="" D:DIF["D" ERR^DIKCU2(202,"","","","CROSS-REFERENCE") D QUIT
|
---|
| 46 | D:'$$VFLAG^DIKCU1(DIFLG,"KWcd",DIF) QUIT
|
---|
| 47 | ;
|
---|
| 48 | S DIXR=$O(^DD("IX","BB",DIFIL,DIXR,0))
|
---|
| 49 | D:'DIXR QUIT
|
---|
| 50 | Q
|
---|
| 51 | ;
|
---|
| 52 | QUIT ;Set flag to quit
|
---|
| 53 | S DIQUIT=1
|
---|
| 54 | Q
|
---|
| 55 | ;
|
---|
| 56 | KILL(DITOP,DIINDEX,DIFLG) ;Delete index data
|
---|
| 57 | N DIFIL,DITYP,DICTRL,DIXR
|
---|
| 58 | ;
|
---|
| 59 | Q:'$D(DIINDEX)
|
---|
| 60 | S DIFIL=$O(DIINDEX(0)) Q:'DIFIL
|
---|
| 61 | S DIXR=$O(DIINDEX(DIFIL,0)) Q:'DIXR
|
---|
| 62 | S DITYP=$P(DIINDEX(DIFIL,DIXR),U,4)
|
---|
| 63 | ;
|
---|
| 64 | I $G(DIFLG)["W" D
|
---|
| 65 | . I DITYP="R" W !,"Removing index ..."
|
---|
| 66 | . E W !,"Executing kill logic ..."
|
---|
| 67 | ;
|
---|
| 68 | ;Call INDEX^DIKC to execute the kill logic
|
---|
| 69 | S DICTRL="K"_$S(DITOP'=DIFIL:"W"_DIFIL,1:"")
|
---|
| 70 | S DICTRL("LOGIC")="DIINDEX"
|
---|
| 71 | D INDEX^DIKC(DITOP,"","",DIXR,.DICTRL)
|
---|
| 72 | Q
|
---|