[613] | 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
|
---|