1 | DIFROMS2 ;SFISC/DCL/TKW-INSTALL DD FROM SOURCE ARRAY ;9:06 AM 14 Jul 2000
|
---|
2 | ;;22.0;VA FileMan;**11,53**;Mar 30, 1999
|
---|
3 | ;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | Q
|
---|
6 | EN ;
|
---|
7 | I '$D(@DIFRSA) D ERR(5) Q
|
---|
8 | I '$D(@DIFRFIA) D ERR(4) Q
|
---|
9 | G:$G(DIFRFILE) FCHK
|
---|
10 | S DIFRFILE=0 F S DIFRFILE=$O(@DIFRFIA@(DIFRFILE)) Q:DIFRFILE'>0 D FILE
|
---|
11 | Q
|
---|
12 | FCHK I '$D(@DIFRFIA@(DIFRFILE)) D ERR(6) Q
|
---|
13 | FILE ;
|
---|
14 | N DIFR01,DIFR02,DIFRVR,DIFRFDD
|
---|
15 | S DIFR01=$G(@DIFRFIA@(DIFRFILE,0,1)),DIFR02=$G(^(2))
|
---|
16 | I $TR($E(DIFR01),"NY","ny")="n" D ERR(1) Q
|
---|
17 | S DIFRFDD=$TR($P(DIFR01,"^",3),"FP","fp")'="p"
|
---|
18 | I 'DIFRFDD,'$D(^DIC(DIFRFILE)) D ERR(7) Q
|
---|
19 | I $D(^DIC(DIFRFILE,0)),$G(@DIFRFIA@(DIFRFILE,0,10))]"" X ^(10) I '$T D ERR(3) Q
|
---|
20 | ;I $TR($E(@DIFRFIA@(DIFRFILE,0,5)),"NY","ny")="y",$D(^DIC(DIFRFILE)) D ERR(2) Q ;INSTALL ONLY IF NEW * * PHASING OUT * *
|
---|
21 | N %1,DSEC,D,DA,DIC,DIK,DIFRD,DIFRDATA,DIFRFLD,DIFRDIC,DIFRGL,DIFRX,I,X,Y,Z
|
---|
22 | S DSEC=$P(DIFR02,"^") ; **>> add file security if new file only <<**
|
---|
23 | I 'DSEC,'$D(^DIC(DIFRFILE,0))#2 S DSEC=1 ; Check to see if the file was Deleted during Pre-Install
|
---|
24 | ;delete DD wp text for file, field and x-ref description and field tech description
|
---|
25 | ;also delete "NM" nodes when installing full DD at specified level
|
---|
26 | I 'DIFRFDD D
|
---|
27 | .K @DIFRSA@("DIFRNI",DIFRFILE)
|
---|
28 | .N DIFRD
|
---|
29 | .S DIFRD=DIFRFILE
|
---|
30 | .F S DIFRD=$O(@DIFRFIA@(DIFRFILE,DIFRD)) Q:DIFRD'>0 D
|
---|
31 | ..Q:$$UP(DIFRSA,DIFRFILE,DIFRD)
|
---|
32 | ..S @DIFRSA@("DIFRNI",DIFRFILE,DIFRD)=""
|
---|
33 | ..N DIFRNGF,DIFRNGFD
|
---|
34 | ..S DIFRNGF=+$G(@DIFRSA@("UP",DIFRFILE,DIFRD,-1))
|
---|
35 | ..S DIFRNGFD=.01 F S DIFRNGFD=$O(@DIFRSA@("^DD",DIFRFILE,DIFRNGF,DIFRNGFD)) Q:DIFRNGFD="" Q:+$P($G(^(DIFRNGFD,0)),U,2)=DIFRD
|
---|
36 | ..I DIFRNGFD'="" K @DIFRSA@("^DD",DIFRFILE,DIFRNGF,DIFRNGFD)
|
---|
37 | ..Q
|
---|
38 | .Q
|
---|
39 | K:DIFRFDD ^DIC(DIFRFILE,"%D")
|
---|
40 | S DIFRD=0
|
---|
41 | F S DIFRD=$O(@DIFRSA@("^DD",DIFRFILE,DIFRD)) Q:DIFRD'>0 D
|
---|
42 | .I 'DIFRFDD,$D(@DIFRSA@("DIFRNI",DIFRFILE,DIFRD)) Q
|
---|
43 | .K:$D(@DIFRSA@("^DD",DIFRFILE,DIFRD,0,"NM"))\10 ^DD(DIFRD,0,"NM")
|
---|
44 | .S DIFRFLD=0
|
---|
45 | .F S DIFRFLD=$O(@DIFRSA@("^DD",DIFRFILE,DIFRD,DIFRFLD)) Q:DIFRFLD'>0 D
|
---|
46 | ..K ^DD(DIFRD,DIFRFLD,21),^(23)
|
---|
47 | ..S DIFRX=0
|
---|
48 | ..F S DIFRX=$O(@DIFRSA@("^DD",DIFRFILE,DIFRD,DIFRFLD,1,DIFRX)) Q:DIFRX'>0 D
|
---|
49 | ...K ^DD(DIFRD,DIFRFLD,1,DIFRX,"%D")
|
---|
50 | ...Q
|
---|
51 | ..Q
|
---|
52 | .Q
|
---|
53 | I DIFRFDD F DIFRX="^DIC","^DD" D
|
---|
54 | .;I DIFRX="^DIC",'DIFRFDD Q
|
---|
55 | .N X
|
---|
56 | .I DIFRX="^DIC",$G(^DIC(DIFRFILE,0))]"" S X=$P(^(0),"^",3,9)
|
---|
57 | .M @DIFRX=@DIFRSA@(DIFRX,DIFRFILE)
|
---|
58 | .I DIFRX="^DIC",$G(X)]"" S $P(^DIC(DIFRFILE,0),"^",3,9)=X
|
---|
59 | .I DSEC,$D(@DIFRSA@("SEC",DIFRX,DIFRFILE)) M @DIFRX=@DIFRSA@("SEC",DIFRX,DIFRFILE)
|
---|
60 | .Q
|
---|
61 | I 'DIFRFDD D
|
---|
62 | .N DIFRD
|
---|
63 | .S DIFRD=0
|
---|
64 | .F S DIFRD=$O(@DIFRSA@("^DD",DIFRFILE,DIFRD)) Q:DIFRD'>0 D
|
---|
65 | ..I $D(@DIFRSA@("DIFRNI",DIFRFILE,DIFRD)) Q
|
---|
66 | ..M ^DD(DIFRD)=@DIFRSA@("^DD",DIFRFILE,DIFRD)
|
---|
67 | ..I DSEC,$D(@DIFRSA@("SEC","^DD",DIFRFILE,DIFRD)) M ^DD(DIFRD)=@DIFRSA@("SEC","^DD",DIFRFILE,DIFRD)
|
---|
68 | ..Q
|
---|
69 | .Q
|
---|
70 | S DIFRD=0 F S DIFRD=$O(@DIFRFIA@(DIFRFILE,DIFRD)) Q:DIFRD'>0 D
|
---|
71 | .I 'DIFRFDD,$D(@DIFRSA@("DIFRNI",DIFRFILE,DIFRD)) Q
|
---|
72 | .S D=DIFRD,DIK="A" F S DIK=$O(^DD(D,DIK)) Q:DIK="" K ^(DIK)
|
---|
73 | .S DA(1)=D,DIK="^DD("_D_"," D IXALL^DIK
|
---|
74 | .I $D(^DIC(D,"%",0)) S DIK="^DIC(D,""%""," D IXALL^DIK
|
---|
75 | .Q
|
---|
76 | I 'DIFRFDD D G IXKEY
|
---|
77 | .Q:'$D(@DIFRSA@("^DD",DIFRFILE,DIFRFILE,.01))
|
---|
78 | .S $P(@(^DIC(DIFRFILE,0,"GL")_"0)"),"^",2)=$$HDR2P^DIFROMSS(DIFRFILE)
|
---|
79 | .Q
|
---|
80 | S DIFRGL=^DIC(DIFRFILE,0,"GL"),DIFRDIC=$P(^DIC(DIFRFILE,0),U,1,2)
|
---|
81 | S $P(DIFRDIC,"^",2)=@DIFRFIA@(DIFRFILE,0,0)
|
---|
82 | I DIFRFDD,+$G(@DIFRFIA@(DIFRFILE,0,"VR")) S DIFRVR=^("VR") D
|
---|
83 | .S ^DD(DIFRFILE,0,"VR")=$P(DIFRVR,"^")
|
---|
84 | .S ^DD(DIFRFILE,0,"VRPK")=$P(DIFRVR,"^",2)
|
---|
85 | .Q
|
---|
86 | S DIFRDATA=$D(@(DIFRGL_"0)")),^(0)=DIFRDIC_"^"_$S(DIFRDATA#2:$P(^(0),"^",3,9),1:"^")
|
---|
87 | ;
|
---|
88 | IXKEY ; Bring INDEX and KEY entries
|
---|
89 | K ^TMP("DIFROMS2",$J,"TRIG")
|
---|
90 | S DIFRD=0
|
---|
91 | F S DIFRD=$O(@DIFRSA@("IX",DIFRFILE,DIFRD)) Q:'DIFRD D DDIXIN^DIFROMSX(DIFRFILE,DIFRD,DIFRSA)
|
---|
92 | K ^TMP("DIFROMS2",$J,"TRIG")
|
---|
93 | S DIFRD=0
|
---|
94 | F S DIFRD=$O(@DIFRSA@("KEY",DIFRFILE,DIFRD)) Q:'DIFRD D DDKEYIN^DIFROMSY(DIFRFILE,DIFRD,DIFRSA)
|
---|
95 | ;
|
---|
96 | DIKZ I $D(^DD(DIFRFILE,0,"DIK")) D
|
---|
97 | .N %X,DIKJ,DIR,DMAX,X,Y,DIFRDIKA
|
---|
98 | .D EN2^DIKZ(DIFRFILE,"",^DD(DIFRFILE,0,"DIK"),^DD("ROU"),"DIFRDIKA")
|
---|
99 | .I $D(DIFRDIKA) M @DIFRSA@("DIKZ",DIFRFILE)=DIFRDIKA
|
---|
100 | .S @DIFRSA@("DIKZ",DIFRFILE)=^DD(DIFRFILE,0,"DIK")
|
---|
101 | .Q
|
---|
102 | I 'DIFRFDD,$D(@DIFRSA@("DIFRNI",DIFRFILE)) D
|
---|
103 | .N DIFRD
|
---|
104 | .S DIFRD=0
|
---|
105 | .F S DIFRD=$O(@DIFRSA@("DIFRNI",DIFRFILE,DIFRD)) Q:DIFRD'>0 D
|
---|
106 | ..N DIFRERR S DIFRERR(1)=DIFRD
|
---|
107 | ..D BLD^DIALOG(9512,.DIFRERR)
|
---|
108 | ..Q
|
---|
109 | .Q
|
---|
110 | Q
|
---|
111 | ;
|
---|
112 | UP(ROOT,FILE,DDN) ;Return 1 or 0 to install
|
---|
113 | Q:FILE=DDN 1
|
---|
114 | Q:$D(^DD(DDN)) 1
|
---|
115 | Q:'$D(@ROOT@("UP",FILE,DDN)) 1
|
---|
116 | N MP,PARENT,T,X
|
---|
117 | S MP=0,X="",T=0
|
---|
118 | F S X=$O(@ROOT@("UP",FILE,DDN,X)) Q:X="" S PARENT=+^(X) D Q:T!(MP)
|
---|
119 | .I $D(^DD(PARENT))!($G(@ROOT@("FIA",FILE,PARENT))=0) S:X=0 T=1 Q
|
---|
120 | .S MP=1
|
---|
121 | .Q
|
---|
122 | Q T
|
---|
123 | ;
|
---|
124 | ERR(X) D BLD^DIALOG($P($T(ERR+X),";",5)) Q
|
---|
125 | ;;FIA Node Is Set To "No DD Update";1;9503
|
---|
126 | ;;Already Exist On Target System (INSTALL ONLY IF NEW);2;9504
|
---|
127 | ;;Did Not Pass DD Screen;3;9505
|
---|
128 | ;;FIA Array Does Not Exist;4;9511
|
---|
129 | ;;Distribution Array Does Not Exist;5;9506
|
---|
130 | ;;FIA File Number Invalid;6;9507
|
---|
131 | ;;Partial DD/File Does Not Already Exist On Target System;7;9508
|
---|