1 | DDS ;SFISC/MLH,MKO-MAIN ROUTINE ;21SEP2006
|
---|
2 | ;;22.0;VA FileMan;**151**;Mar 30, 1999;Build 10
|
---|
3 | ;Per VHA Directive 2004-038, this routine should not be modified.
|
---|
4 | N DIE,DX,DY,X,Y
|
---|
5 | K DDSCTRL ;DI*151
|
---|
6 | I '$D(DIFM) N DIFM S DIFM=1 D INIZE^DIEFU
|
---|
7 | ;
|
---|
8 | D EN^DDS0(.DDSFILE,DR,.DA)
|
---|
9 | I $G(DIERR) D:$G(DDSPARM)'["E" G END^DDS0
|
---|
10 | . W !,$C(7)_$$EZBLD^DIALOG(3000)
|
---|
11 | . D MSG^DIALOG("BW")
|
---|
12 | . S DIMSG=""
|
---|
13 | ;
|
---|
14 | N DR
|
---|
15 | X:$G(^DIST(.403,+DDS,11))'?."^" ^(11)
|
---|
16 | F D PG Q:DDACT="Q"
|
---|
17 | X:$G(^DIST(.403,+DDS,12))'?."^" ^(12)
|
---|
18 | ;
|
---|
19 | D:$G(@DDSREFT@("HLP"))>0 HLP^DDSMSG()
|
---|
20 | G END^DDS0
|
---|
21 | ;
|
---|
22 | PROC ;Main loop
|
---|
23 | F D PG Q:DDACT="Q"
|
---|
24 | Q
|
---|
25 | ;
|
---|
26 | PG ;Load page
|
---|
27 | S DDACT="N"
|
---|
28 | D ^DDS1(DDSPG)
|
---|
29 | I $G(DIERR) D Q
|
---|
30 | . N P S P(1)=$P($G(^DIST(.403,+DDS,40,DDSPG,0)),U),P(2)=$P($G(^(1)),U)
|
---|
31 | . S:P(2)="" P(2)="unnamed"
|
---|
32 | . D BLD^DIALOG(3041,.P),ERR^DDSMSG H 2
|
---|
33 | . S DDACT="Q"
|
---|
34 | ;
|
---|
35 | ;Pre-action, save old and get next page
|
---|
36 | S DDSOPB=DDSPG
|
---|
37 | I $G(^DIST(.403,+DDS,40,DDSPG,11))'?."^" D PA(^(11)) Q:DDACT="NP"
|
---|
38 | S DDSNP=$$NP^DDS5(.Y) S:'Y DDSNP=""
|
---|
39 | ;
|
---|
40 | ;Get DDO and DDSBK
|
---|
41 | I $S($D(DDSBR)[0:1,1:$D(@DDSREFS@(DDSPG,$S(DDO:+DDSBK,1:0),DDO,"N"))[0) D
|
---|
42 | . S DDO=+$G(@DDSREFS@(DDSPG,"FIRST")),DDSBK=$P($G(^("FIRST")),",",2)
|
---|
43 | I 'DDSBK D Q
|
---|
44 | . D BLD^DIALOG(3055,"number "_$P($G(^DIST(.403,+DDS,40,DDSPG,0)),U)_$S($G(^(1))]"":" ("_$P($G(^(1)),U)_")",1:""))
|
---|
45 | . D ERR^DDSMSG H 2
|
---|
46 | . S DDACT="Q"
|
---|
47 | ;
|
---|
48 | ;Get DDSPOP and update DDSSC array
|
---|
49 | ;If we're going to another page
|
---|
50 | I '$D(DDSPGUP) D
|
---|
51 | . S DDSLN=^DIST(.403,+DDS,40,DDSPG,0),DDSPOP=$P(DDSLN,U,6)
|
---|
52 | . K:'DDSPOP DDSSC
|
---|
53 | . I $D(DDSSEL) D
|
---|
54 | .. S DDSDASV=DDSDA,DDSDLSV=DDSDL
|
---|
55 | .. M DDSORGSV=DDSDAORG
|
---|
56 | .. K DA,@$$D0(DDSDL),DDSDAORG
|
---|
57 | .. S (DA,D0,DDSDAORG)="",DDSDA="0,",DDSDL=0
|
---|
58 | . I '$D(DDSSC("B",DDSPG)) D
|
---|
59 | .. S DDSSC=$G(DDSSC)+1,DDSSC(DDSSC)=DDSPG,DDSSC("B",DDSPG,DDSSC)=""
|
---|
60 | .. S:DDSPOP $P(DDSSC(DDSSC),U,2,3)=$P(DDSLN,U,3)_U_$P(DDSLN,U,7)
|
---|
61 | .. I $G(DDSSTK) S $P(DDSSC(DDSSC),U,4)=1 K DDSSTK
|
---|
62 | .. K DDSPOP
|
---|
63 | . E D
|
---|
64 | .. Q:$P($G(DDSSC(+$G(DDSSC))),U)=DDSPG
|
---|
65 | .. N I,J,S
|
---|
66 | .. S I=$O(DDSSC("B",DDSPG,"")),S=DDSSC(I) K DDSSC("B",DDSPG,I)
|
---|
67 | .. F J=I:1:DDSSC-1 D
|
---|
68 | ... K DDSSC("B",$P(DDSSC(J+1),U),J)
|
---|
69 | ... S DDSSC(J)=DDSSC(J+1),DDSSC("B",$P(DDSSC(J),U),J)=""
|
---|
70 | .. S DDSSC(DDSSC)=S,DDSSC("B",DDSPG,DDSSC)=""
|
---|
71 | ;
|
---|
72 | ;If we've moving up from a pop-up page
|
---|
73 | E K DDSPGUP
|
---|
74 | ;
|
---|
75 | ;Paint the page
|
---|
76 | D RP^DDSR(DDSSC(DDSSC),DDSSC=1)
|
---|
77 | ;
|
---|
78 | P1 F D BLK Q:"^Q^NP^"[(U_DDACT_U)
|
---|
79 | ;
|
---|
80 | ;PAGE Post action, print any help
|
---|
81 | D:$G(^DIST(.403,+DDS,40,+DDSOPB,12))'?."^" PA(^(12))
|
---|
82 | D:$G(@DDSREFT@("HLP"))>0 HLP^DDSMSG()
|
---|
83 | G:"^NB^N^"[(U_DDACT_U) P1
|
---|
84 | ;
|
---|
85 | I DDACT="Q" D
|
---|
86 | . I '$P(DDSSC(DDSSC),U,4) D
|
---|
87 | .. I $G(DDSSEL) D GDA^DDSRSEL Q:'DA
|
---|
88 | .. D:$G(DDSSC)>1 CLEAR^DDSBOX($P(DDSSC(DDSSC),U,2),$P(DDSSC(DDSSC),U,3))
|
---|
89 | .. S:DDSSC>1 DDSPG=$P(DDSSC(DDSSC-1),U),DDACT="N",DDSPGUP=1
|
---|
90 | . K DDSSC("B",$P(DDSSC(DDSSC),U),DDSSC),DDSSC(DDSSC) S DDSSC=DDSSC-1
|
---|
91 | Q
|
---|
92 | ;
|
---|
93 | BLK S DDACT="N",DDSOSV=0
|
---|
94 | ;
|
---|
95 | I $D(@DDSREFS@(DDSPG,DDSBK))[0 S DDACT="Q" Q
|
---|
96 | S DDSLN=@DDSREFS@(DDSPG,DDSBK)
|
---|
97 | ;
|
---|
98 | S DDSDN=$P(DDSLN,U,4),DDSTP=$P(DDSLN,U,5)
|
---|
99 | S DDSREP=$P(DDSLN,U,7),DDSPTB=$P(DDSLN,U,8)
|
---|
100 | K:'DDSDN DDSDN K:DDSTP="e" DDSTP K:'DDSPTB DDSPTB K:DDSREP'>1 DDSREP
|
---|
101 | ;
|
---|
102 | I $D(DDSPTB)!$D(DDSREP) N DDP,DDSDA,DIE D
|
---|
103 | . S DDP=$P(DDSLN,U,3)
|
---|
104 | . S DDSDA=$P(@DDSREFT@(DDSPG,DDSBK),U) Q:'DDSDA
|
---|
105 | . S DIE=@DDSREFT@(DDSPG,DDSBK,DDSDA,"GL")
|
---|
106 | ;
|
---|
107 | I $D(DDSPTB) N DA,@$$D0(DDSDL),DDSDL D
|
---|
108 | . S DDSPTB=@DDSREFS@(DDSPG,DDSBK,"PTB")
|
---|
109 | . S DDSDL=$L(DDSDA,",")-2
|
---|
110 | . S (D0,DA)=+DDSDA
|
---|
111 | ;
|
---|
112 | I $D(DDSREP) N DDSDL,DA D
|
---|
113 | . S DDSREP=$P(@DDSREFT@(DDSPG,DDSBK,DDSDA),U,2,999)
|
---|
114 | . S DDSDA=$G(@DDSREFT@(DDSPG,DDSBK,$P(DDSREP,U),$P(DDSREP,U,4)),"0,"_DDSDA)
|
---|
115 | . S:'$P(DDSREP,U,7) DDSDA=$P(DDSDA,",")_","
|
---|
116 | . S DDSDL=$L(DDSDA,",")-2
|
---|
117 | I N @$$D0(DDSDL) D
|
---|
118 | . D BLDDA(DDSDA)
|
---|
119 | . S:'DA DDO=+$P(DDSREP,U,8)
|
---|
120 | ;
|
---|
121 | I $D(DDSPTB),'$D(DDSREP),'DDSDA,DDSDAORG D Q
|
---|
122 | . N DDSBK0
|
---|
123 | . S DDSBK0=DDSBK
|
---|
124 | . F S DDSBK=$$NB^DDS5(.Y) Q:DDSBK=DDSBK0!'Y!$G(@DDSREFT@(DDSPG,DDSBK))
|
---|
125 | . Q:Y
|
---|
126 | . I DDSNP]"" S DDSPG=DDSNP,DDACT="NP" Q
|
---|
127 | . S DDSPG=$$PP^DDS5(.Y) I Y S DDACT="NP" Q
|
---|
128 | . S DDACT="Q"
|
---|
129 | ;
|
---|
130 | S $P(DDSOPB,U,2)=DDSBK
|
---|
131 | I $G(^DIST(.403,+DDS,40,DDSPG,40,DDSBK,11))'?."^" D PA(^(11)) Q:DDACT="NP"
|
---|
132 | I $G(^DIST(.404,DDSBK,11))'?."^" D PA(^(11)) Q:DDACT="NP"
|
---|
133 | I $S($D(DDSBR)[0:1,1:$D(@DDSREFS@(DDSPG,$S(DDO:+DDSBK,1:0),DDO,"N"))[0) D
|
---|
134 | . S DDO=$P(@DDSREFS@(DDSPG,DDSBK),U,9)
|
---|
135 | K DDSLN
|
---|
136 | ;
|
---|
137 | B1 D ^DDS01
|
---|
138 | ;
|
---|
139 | I $G(^DIST(.403,+DDS,40,DDSPG,40,$P(DDSOPB,U,2),12))'?."^" D PA(^(12)) G:DDACT="N" B1
|
---|
140 | I $G(^DIST(.404,$P(DDSOPB,U,2),12))'?."^" D PA(^(12)) G:DDACT="N" B1
|
---|
141 | Q
|
---|
142 | ;
|
---|
143 | BLDDA(DDSDA) ;
|
---|
144 | N I
|
---|
145 | S (DA,@("D"_DDSDL))=$P(DDSDA,",")
|
---|
146 | F I=1:1:DDSDL S (DA(I),@("D"_(DDSDL-I)))=$P(DDSDA,",",I+1)
|
---|
147 | Q
|
---|
148 | ;
|
---|
149 | D0(DL) ;Given DL, return string D0,D1,...,Dn
|
---|
150 | N I,S
|
---|
151 | S S="" F I=0:1:DL S S=S_"D"_I_","
|
---|
152 | S:S?.E1"," S=$E(S,1,$L(S)-1)
|
---|
153 | Q S
|
---|
154 | ;
|
---|
155 | CLRMSG ;
|
---|
156 | I $G(DDSKM) H 2 K DDSKM ;GFT ** IF WE WERE KEEPING SOMETHING IN HELP AREA, HOLD UP 2 SECONDS ISB-0603-31054
|
---|
157 | K DDQ S DDSH=1,(DDM,DX)=0,DY=DDSHBX+1 X DDXY W $P(DDGLCLR,DDGLDEL,3)
|
---|
158 | Q
|
---|
159 | ;
|
---|
160 | PA(DDSPA) ;
|
---|
161 | N DDSBRORG S:$D(DDSBR)#2 DDSBRORG=DDSBR
|
---|
162 | K DDSBR X DDSPA
|
---|
163 | I $D(DDSBR)[0 S:$D(DDSBRORG)#2 DDSBR=DDSBRORG Q
|
---|
164 | D BR^DDS2
|
---|
165 | Q
|
---|
166 | RESET ;Programmer entry point to reset terminal and cleanup
|
---|
167 | D INIT^DDGLIB0() D:$G(DIERR) MSG^DIALOG("BW")
|
---|
168 | W $P($G(DDGLVID),DDGLDEL,10)
|
---|
169 | K DDSPARM
|
---|
170 | S DDSREFT="^TMP(""DDS"",$J)"
|
---|
171 | D END^DDS0
|
---|
172 | G RESET^DDGF
|
---|
173 | ;
|
---|
174 | RUN ;Run a form
|
---|
175 | G ^DDSRUN
|
---|
176 | CLONE ;Clone a form
|
---|
177 | G ^DDSCLONE
|
---|
178 | PRINT ;Print a form
|
---|
179 | G ^DDSPRNT
|
---|
180 | DFRM ;Delete a form
|
---|
181 | G ^DDSDFRM
|
---|
182 | DBLK ;Delete unused blocks
|
---|
183 | G ^DDSDBLK
|
---|