| 1 | DIKD ;SFISC/MKO-DELETE A CROSS REFERENCE ;9:14 AM  19 Dec 2001
 | 
|---|
| 2 |  ;;22.0;VA FileMan;**12,68,95**;Mar 30, 1999
 | 
|---|
| 3 |  ;Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 | DELIX(DIFIL,DIFLD,DIXR,DIFLG,DIKDOUT,DIKDMSG) ;Delete traditional xref
 | 
|---|
| 6 | DELIXX ;Come here from DELIX^DDMOD
 | 
|---|
| 7 |  N %,DIC,X,Y,DIF,DIFINFO,DIQUIT
 | 
|---|
| 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 |  D FINFO^DIKCU1(DIFIL,.DIFINFO)
 | 
|---|
| 15 |  ;
 | 
|---|
| 16 |  ;Delete data in index
 | 
|---|
| 17 |  D:DIFLG["K" KILL^DIKD1(DIFIL,DIFLD,DIXR,$E("W",DIFLG["W")_DIF_"c")
 | 
|---|
| 18 |  ;
 | 
|---|
| 19 |  ;Audit, delete xref, recompile
 | 
|---|
| 20 |  D:$G(^DD(+DIFINFO(0),0,"DDA"))["Y" AUDIT
 | 
|---|
| 21 |  D DELDEF(DIFIL,DIFLD,DIXR,DIFLG)
 | 
|---|
| 22 |  D DIEZ(DIFIL,DIFLD,DIFLG,$G(DIKDOUT))
 | 
|---|
| 23 |  D DIKZ(+DIFINFO(0),DIFLG,$G(DIKDOUT))
 | 
|---|
| 24 |  ;
 | 
|---|
| 25 | END ;Move error message if necessary and quit
 | 
|---|
| 26 |  D:$G(DIKDMSG)]"" CALLOUT^DIEFU(DIKDMSG)
 | 
|---|
| 27 |  Q
 | 
|---|
| 28 |  ;
 | 
|---|
| 29 | DELDEF(DIFIL,DIFLD,DIXR,DIFLG) ;Delete index definition
 | 
|---|
| 30 |  N DIK,DA,DITYP
 | 
|---|
| 31 |  S DITYP=$P($G(^DD(DIFIL,DIFLD,1,DIXR,0)),U,3)
 | 
|---|
| 32 |  K:DITYP="SOUNDEX" ^DD(DIFIL,0,"LOOK"),^("QUES")
 | 
|---|
| 33 |  ;
 | 
|---|
| 34 |  W:$G(DIFLG)["W" !,"Deleting cross-reference definition ..."
 | 
|---|
| 35 |  S ^DD(DIFIL,DIFLD,1,0)="^.1"
 | 
|---|
| 36 |  S DIK="^DD("_DIFIL_","_DIFLD_",1,"
 | 
|---|
| 37 |  S DA(2)=DIFIL,DA(1)=DIFLD,DA=DIXR
 | 
|---|
| 38 |  D ^DIK
 | 
|---|
| 39 |  Q
 | 
|---|
| 40 |  ;
 | 
|---|
| 41 | DIEZ(DIFIL,DIFLD,DIFLG,DIKDOUT,DIKTEML) ;Recompile input templates containing field
 | 
|---|
| 42 |  N DIERR,DITEM,DIMAX,DIRNM
 | 
|---|
| 43 |  S DIMAX=$$ROUSIZE^DILF
 | 
|---|
| 44 |  S DITEM=0 F  S DITEM=$O(^DIE("AF",DIFIL,DIFLD,DITEM)) Q:'DITEM  D
 | 
|---|
| 45 |  . N DIERR,DIEZMSG
 | 
|---|
| 46 |  . Q:$D(DIKTEML(DITEM))#2  S DIKTEML(DITEM)=""
 | 
|---|
| 47 |  . K ^DIE("AF",DIFIL,DIFLD,DITEM),^DIE(DITEM,"ROU")
 | 
|---|
| 48 |  . S DIRNM=$G(^DIE(DITEM,"ROUOLD")) Q:DIRNM=""
 | 
|---|
| 49 |  . D EN2^DIEZ(DITEM,$E("T",$G(DIFLG)["W"),DIRNM,"","DIEZMSG")
 | 
|---|
| 50 |  . I '$G(DIERR),$G(DIKDOUT)]"" D
 | 
|---|
| 51 |  .. S @DIKDOUT@("DIEZ",DITEM)=$P(^DIE(DITEM,0),U)_U_$P(^(0),U,4)_U_DIRNM
 | 
|---|
| 52 |  Q
 | 
|---|
| 53 |  ;
 | 
|---|
| 54 | DIKZ(Y,DIFLG,DIKDOUT) ;Recompile xrefs
 | 
|---|
| 55 |  Q:'$G(Y)
 | 
|---|
| 56 |  N DIERR,DIKZMSG,DMAX,DIRNM
 | 
|---|
| 57 |  S DIRNM=$G(^DD(Y,0,"DIK")) Q:DIRNM=""
 | 
|---|
| 58 |  S DMAX=$$ROUSIZE^DILF
 | 
|---|
| 59 |  D EN2^DIKZ(Y,$E("T",$G(DIFLG)["W"),DIRNM,"","DIKZMSG")
 | 
|---|
| 60 |  I '$G(DIERR),$G(DIKDOUT)]"" S @DIKDOUT@("DIKZ")=DIRNM
 | 
|---|
| 61 |  Q
 | 
|---|
| 62 |  ;
 | 
|---|
| 63 | AUDIT ;Audit DD change
 | 
|---|
| 64 |  N %,%D,%T,A0,A1,A2,B0,B1,B2,B3,DA,DDA,DL,DQ,J,N
 | 
|---|
| 65 |  S DDA="D",N=DIFINFO,J(0)=+DIFINFO(0),J(N)=DIFIL,DL=DIFLD,DQ=DIXR
 | 
|---|
| 66 |  D XA^DICATTA
 | 
|---|
| 67 |  S:$G(DIKDOUT)]"" @DIKDOUT@("DDAUD")=1
 | 
|---|
| 68 |  Q
 | 
|---|
| 69 |  ;
 | 
|---|
| 70 | CHK ;Check input parameters
 | 
|---|
| 71 |  I '$G(DIFIL) D:DIF["D" ERR^DIKCU2(202,"","","","FILE") D QUIT
 | 
|---|
| 72 |  I '$G(DIFLD) D:DIF["D" ERR^DIKCU2(202,"","","","FIELD") D QUIT
 | 
|---|
| 73 |  I '$G(DIQUIT),'$$VFNUM^DIKCU1(DIFIL,DIF) D QUIT
 | 
|---|
| 74 |  I '$G(DIQUIT),'$$VFLD^DIKCU1($G(DIFIL),$G(DIFLD),DIF) D QUIT
 | 
|---|
| 75 |  ;
 | 
|---|
| 76 |  I $G(DIXR)="" D
 | 
|---|
| 77 |  . D:DIF["D" ERR^DIKCU2(202,"","","","CROSS-REFERENCE") D QUIT
 | 
|---|
| 78 |  E  I '$G(DIQUIT) D
 | 
|---|
| 79 |  . I DIXR=+DIXR D
 | 
|---|
| 80 |  .. I $D(^DD(DIFIL,DIFLD,1,DIXR,0))[0 D:DIF["D" ERR^DIKCU2(202,"","","","CROSS-REFERENCE") D QUIT
 | 
|---|
| 81 |  . E  D
 | 
|---|
| 82 |  .. N I,XR
 | 
|---|
| 83 |  .. S I=0 F  S I=$O(^DD(DIFIL,DIFLD,1,I)) Q:'I  S:$P($G(^(I,0)),U,2)=DIXR XR=$G(XR)+1,XR(XR)=I
 | 
|---|
| 84 |  .. I $G(XR)=1 S DIXR=XR(XR)
 | 
|---|
| 85 |  .. E  D:DIF["D" ERR^DIKCU2(202,"","","","CROSS-REFERENCE") D QUIT
 | 
|---|
| 86 |  ;
 | 
|---|
| 87 |  D:'$$VFLAG^DIKCU1(DIFLG,"KWcd",DIF) QUIT
 | 
|---|
| 88 |  Q
 | 
|---|
| 89 |  ;
 | 
|---|
| 90 | QUIT ;Set flag to quit
 | 
|---|
| 91 |  S DIQUIT=1
 | 
|---|
| 92 |  Q
 | 
|---|