| 1 | DDS0 ;SFISC/MLH-SETUP, CLEANUP ;4:45 AM  7 Sep 2006
 | 
|---|
| 2 |  ;;22.0;VA FileMan;**8,151**;Mar 30, 1999;Build 10
 | 
|---|
| 3 |  ;Per VHA Directive 2004-038, this routine should not be modified.
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 | EN(DDSFILE,DR,DA) ;Initial setup
 | 
|---|
| 6 |  S U="^"
 | 
|---|
| 7 |  D INIT^DDGLIB0() Q:$G(DIERR)
 | 
|---|
| 8 |  D FORM(.DDSFILE,DR) Q:$G(DIERR)
 | 
|---|
| 9 |  ;
 | 
|---|
| 10 |  ;Compile the form if not already compiled
 | 
|---|
| 11 |  S DDSREFS=$$REF(DDS)
 | 
|---|
| 12 |  I '$$COMPILED(DDS) D EN^DDSZ(DDS) Q:$G(DIERR)
 | 
|---|
| 13 |  N:$P(^DIST(.403,+DDS,0),U,10) DA
 | 
|---|
| 14 |  ;
 | 
|---|
| 15 |  D FRSTPG(DDS,.DA,$G(DDSPAGE)) Q:$G(DIERR)
 | 
|---|
| 16 |  D REC(DDP,.DA) Q:$G(DIERR)
 | 
|---|
| 17 |  D INIT
 | 
|---|
| 18 |  Q
 | 
|---|
| 19 |  ;
 | 
|---|
| 20 | FORM(DDSFILE,DR) ;Form lookup
 | 
|---|
| 21 |  ;Output:
 | 
|---|
| 22 |  ;  DDS     = Form number^Form name
 | 
|---|
| 23 |  ;  DDP     = File number (or 0)
 | 
|---|
| 24 |  ;  DDSPG   = First page to go to on form
 | 
|---|
| 25 |  ;  DIERR
 | 
|---|
| 26 |  ;
 | 
|---|
| 27 |  I $D(DDSFILE)[0 D BLD^DIALOG(201,"DDSFILE") Q
 | 
|---|
| 28 |  ;
 | 
|---|
| 29 |  N DIC,X,Y
 | 
|---|
| 30 |  ;
 | 
|---|
| 31 |  S DDP=$S(DDSFILE=+DDSFILE:DDSFILE,1:+$P($G(@(DDSFILE_"0)")),U,2))
 | 
|---|
| 32 |  S X=$S(DR:DR,1:$P($P(DR,"[",2),"]"))
 | 
|---|
| 33 |  S DIC="^DIST(.403,",DIC(0)="FNX",D="F"_DDP
 | 
|---|
| 34 |  D IX^DIC K DIC
 | 
|---|
| 35 |  ;
 | 
|---|
| 36 |  I Y<0 D BLD^DIALOG(3021,X) Q
 | 
|---|
| 37 |  I '$O(^DIST(.403,+Y,40,"B","")) D BLD^DIALOG(3022,X) Q
 | 
|---|
| 38 |  S DDS=Y
 | 
|---|
| 39 |  ;
 | 
|---|
| 40 |  I $D(DDSFILE(1))#2 S DDP=$S(DDSFILE(1)=+DDSFILE(1):DDSFILE(1),1:+$P($G(@(DDSFILE(1)_"0)")),U,2))
 | 
|---|
| 41 |  Q
 | 
|---|
| 42 |  ;
 | 
|---|
| 43 | FRSTPG(DDS,DA,DDSPAGE) ;Get first page of form
 | 
|---|
| 44 |  ;Output:
 | 
|---|
| 45 |  ;  DDSPG
 | 
|---|
| 46 |  ;  DDSSEL = 1, if DA is null and there is a record selection page
 | 
|---|
| 47 |  ;  DIERR
 | 
|---|
| 48 |  ;
 | 
|---|
| 49 |  N P
 | 
|---|
| 50 |  I $G(DA)!$P(^DIST(.403,+DDS,0),U,10) D
 | 
|---|
| 51 |  . S P=$S($G(DDSPAGE):DDSPAGE,1:1)
 | 
|---|
| 52 |  . S DDSPG=$O(^DIST(.403,+DDS,40,"B",P,""))
 | 
|---|
| 53 |  . I $D(^DIST(.403,+DDS,40,+DDSPG,0))[0 D BLD^DIALOG(3023,"number "_P)
 | 
|---|
| 54 |  E  D PG^DDSRSEL D:'$G(DDSSEL) BLD^DIALOG(202,"record")
 | 
|---|
| 55 |  Q
 | 
|---|
| 56 |  ;
 | 
|---|
| 57 | REC(DDP,DA) ;Check record and lock
 | 
|---|
| 58 |  ;Output:
 | 
|---|
| 59 |  ;  DIE      = Global root
 | 
|---|
| 60 |  ;  DDSDA    = DA,DA(1),...,
 | 
|---|
| 61 |  ;  DDSDAORG = Original DA array
 | 
|---|
| 62 |  ;  DDSDL    = Level number (top=0)
 | 
|---|
| 63 |  ;  DDSDLORG = Original level number
 | 
|---|
| 64 |  ;  DDSFLORG  = Orig DDP^Orig DIE
 | 
|---|
| 65 |  ;  D0,D1,etc.
 | 
|---|
| 66 |  ;  DIERR
 | 
|---|
| 67 |  ;
 | 
|---|
| 68 |  I '$G(DA) D  Q
 | 
|---|
| 69 |  . S DIE="",(DDSDL,DDSDLORG)=0,DDSDA="0,"
 | 
|---|
| 70 |  . S DA="",DDSDAORG=DA
 | 
|---|
| 71 |  ;
 | 
|---|
| 72 |  D GL^DDS10(DDP,.DA,.DIE,.DDSDL,.DDSDA,1) Q:$G(DIERR)
 | 
|---|
| 73 |  ;
 | 
|---|
| 74 |  I $D(DIOVRD)[0 D  Q:$G(DIERR)
 | 
|---|
| 75 |  . N DDSTOP S DDSTOP=$$FNO^DILIBF(DDP)
 | 
|---|
| 76 |  . Q:$P($G(^DD(DDSTOP,0,"DI")),U,2)'["Y"
 | 
|---|
| 77 |  . N P S P("FILE")=$P(@(DIE_"0)"),U)
 | 
|---|
| 78 |  . D BLD^DIALOG(405,DDSTOP,.P)
 | 
|---|
| 79 |  ;
 | 
|---|
| 80 |  S DDSDLORG=DDSDL
 | 
|---|
| 81 |  K DDSDAORG S (DDSDAORG,@("D"_DDSDL))=DA
 | 
|---|
| 82 |  F DDSI=1:1:DDSDL S (DDSDAORG(DDSI),@("D"_(DDSDL-DDSI)))=DA(DDSI)
 | 
|---|
| 83 |  S DDSFLORG=$G(DDP)_$G(DIE)
 | 
|---|
| 84 |  K DDSI
 | 
|---|
| 85 |  Q
 | 
|---|
| 86 |  ;
 | 
|---|
| 87 | INIT ;Initialize some variables
 | 
|---|
| 88 |  ; DDSHBX   = $Y of first line of help area
 | 
|---|
| 89 |  ; DDSREFT  = Global reference of temporary global location
 | 
|---|
| 90 |  ; DDSFDO   = 1 if entire form is display-only
 | 
|---|
| 91 |  ; DDSCHG   = Change flag
 | 
|---|
| 92 |  ; DDSKM    = Flag to keep whatever's in help area
 | 
|---|
| 93 |  ; DDSH     = Flag to indicate help area is empty
 | 
|---|
| 94 |  ; DDSSC    = Array to indicate what pages are on the screen
 | 
|---|
| 95 |  ;
 | 
|---|
| 96 |  S DDSHBX=IOSL-7
 | 
|---|
| 97 |  S DDXY=IOXY_" S $X=DX,$Y=DY"
 | 
|---|
| 98 |  ;
 | 
|---|
| 99 |  K DDH,DDSSC,DDSCHANG,DDSSAVE
 | 
|---|
| 100 |  S DDSH=1,(DDH,DDM,DDSCHG,DDSSC)=0,DDACT="N"
 | 
|---|
| 101 |  S DDSREFT="^TMP(""DDS"",$J,"_+DDS_")"
 | 
|---|
| 102 |  K @DDSREFT
 | 
|---|
| 103 |  ;
 | 
|---|
| 104 |  N %,%H,%I,X
 | 
|---|
| 105 |  D NOW^%DTC
 | 
|---|
| 106 |  S $P(^DIST(.403,+DDS,0),U,6)=$E(%,1,12)
 | 
|---|
| 107 |  Q
 | 
|---|
| 108 |  ;
 | 
|---|
| 109 | END I $D(DDSHBX) S DX=0,DY=IOSL-1 X IOXY
 | 
|---|
| 110 |  D KILL^DDGLIB0($G(DDSPARM))
 | 
|---|
| 111 |  ;
 | 
|---|
| 112 |  D:$D(^TMP("DDS",$J,"LOCK")) UNLOCK
 | 
|---|
| 113 |  ;
 | 
|---|
| 114 |  K:'$G(DA) DA
 | 
|---|
| 115 |  I $D(DA),$D(DDSDAORG)#2,$D(DDSDLORG)#2 D
 | 
|---|
| 116 |  . K DA,D0
 | 
|---|
| 117 |  . S DA=DDSDAORG
 | 
|---|
| 118 |  . F DDSI=1:1:DDSDLORG S DA(DDSI)=DDSDAORG(DDSI) K @("D"_DDSI)
 | 
|---|
| 119 |  ;
 | 
|---|
| 120 |  K:$G(DDSPARM)'["E" DIERR,^TMP("DIERR",$J)
 | 
|---|
| 121 |  K:$D(DDSREFT)#2 @DDSREFT,DDSREFT
 | 
|---|
| 122 |  K ^TMP("DDSH",$J),^TMP("DDSWP",$J)
 | 
|---|
| 123 |  K DDACT,DDH,DDM,DDO,DDP,DDQ,DDS,DDSDDP
 | 
|---|
| 124 |  K DDSBK,DDSBR,DDSCHG,DDSDA,DDSDAORG,DDSDL
 | 
|---|
| 125 |  K DDSDLORG,DDSDN,DDSEXT,DDSFDO,DDSFLD,DDSFLORG,DDSGL,DDSH,DDSI
 | 
|---|
| 126 |  K DDSKM,DDSLN,DDSNP,DDSO,DDSOLD,DDSORD,DDSOPB,DDSOSV,DDSPTB,DDSPG
 | 
|---|
| 127 |  K DDSPX,DDSPY,DDSQ,DDSREP,DDSSC,DDSSP,DDSSTACK,DDSTP,DDSU,DDSX
 | 
|---|
| 128 |  K DDSHBX,DDSREFS,DDXY,DDSCTRL ;DI*151
 | 
|---|
| 129 |  K DIC,DIR,DIR0N,DIROUT,DIRUT,DUOUT,DY,DX
 | 
|---|
| 130 |  K A1,D,DDC,DDD,DI,DIEQ,DIK,DIW,DIY,DIZ,DS
 | 
|---|
| 131 |  Q
 | 
|---|
| 132 |  ;
 | 
|---|
| 133 | UNLOCK ;Unlock any lock records
 | 
|---|
| 134 |  N I
 | 
|---|
| 135 |  S I="" F  S I=$O(^TMP("DDS",$J,"LOCK",I)) Q:I=""  L -@I
 | 
|---|
| 136 |  K ^TMP("DDS",$J,"LOCK")
 | 
|---|
| 137 |  Q
 | 
|---|
| 138 |  ;
 | 
|---|
| 139 | COMPILED(DDS) ;Return 1 if form is compiled
 | 
|---|
| 140 |  Q $D(@$$REF(DDS))>0
 | 
|---|
| 141 |  ;
 | 
|---|
| 142 | REF(DDS) ;Return global reference for compiled global
 | 
|---|
| 143 |  Q $NA(^DIST(.403,+DDS,"AY"))
 | 
|---|
| 144 |  ;
 | 
|---|
| 145 | OLDREF(DDS) ;Return global reference for compiled global used prior
 | 
|---|
| 146 |  ;to version 22.0
 | 
|---|
| 147 |  Q $NA(^DIST(.403,+DDS,"AZ"))
 | 
|---|
| 148 |  ;
 | 
|---|
| 149 | IXF ;
 | 
|---|
| 150 |  N D0,DA,DIC,DP,Y S DIC="^DD("_DDGFDD_",",DIC(0)="EN" D ^DIC
 | 
|---|
| 151 |  I Y'>0 K X
 | 
|---|
| 152 |  E  S X=+$P(Y,"E")
 | 
|---|
| 153 |  Q
 | 
|---|