| 1 | DDSVAL ;SFISC/MKO-GET,PUT FOR DD IELDS ;9:38 AM  29 Aug 1995
 | 
|---|
| 2 |  ;;22.0;VA FileMan;;Mar 30, 1999
 | 
|---|
| 3 |  ;Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 | GET(DDSFILE,DA,DDSFLD,DDSER,DDSPARM) ;Get value for file/field
 | 
|---|
| 6 |  N DDP,DIE,DDSANS,DDSTMP,X
 | 
|---|
| 7 |  N DDSVDA,DDSVDDL0,DDSVDL,DDSVDV,DDSVND,DDSVPC,DIERR
 | 
|---|
| 8 |  ;
 | 
|---|
| 9 |  S DDSANS=""
 | 
|---|
| 10 |  I $G(DDSPARM)'["I",$G(DDSPARM)'["E" S DDSPARM=$G(DDSPARM)_"I"
 | 
|---|
| 11 |  ;
 | 
|---|
| 12 |  D GDIE() G:$G(DIERR) GETQ G:'$G(DDSVDA) GETQ
 | 
|---|
| 13 |  ;
 | 
|---|
| 14 |  I DDSFLD[":",$$FIND^DDSLIB(DDSFLD,":") D  G GETQ
 | 
|---|
| 15 |  . S DDSANS=$$REL^DDSVALM(DDP,.DA,DDSFLD,DDSPARM)
 | 
|---|
| 16 |  ;
 | 
|---|
| 17 |  S DDSFLD=$$FIELD(DDP,DDSFLD) G:$G(DIERR) GETQ
 | 
|---|
| 18 |  ;
 | 
|---|
| 19 |  S:$D(DDSREFT)#2 DDSTMP=$NA(@DDSREFT@("F"_DDP,DDSVDA,DDSFLD))
 | 
|---|
| 20 |  I $D(DDS),$D(DDSREFT)#2,$D(@DDSTMP@("D")) D
 | 
|---|
| 21 |  . I $D(@DDSTMP@("M")),'^("M") D  Q
 | 
|---|
| 22 |  .. S DDSANS=$NA(^TMP("DDSWP",$J,DDP,DDSVDA,DDSFLD))
 | 
|---|
| 23 |  .. M @DDSANS=@DDSTMP@("D")
 | 
|---|
| 24 |  . S DDSANS=$G(@DDSTMP@("D")) I DDSPARM["E",$D(^("X"))#2 S DDSANS=^("X")
 | 
|---|
| 25 |  E  D
 | 
|---|
| 26 |  . D GNDPC Q:$G(DIERR)
 | 
|---|
| 27 |  . I DDSVPC=0,DDSVDV["W" D GETWP^DDSVALM Q
 | 
|---|
| 28 |  . S DDSANS=$$GVAL(DIE,DA,DDSVND,DDSVPC)
 | 
|---|
| 29 |  . I DDSPARM["E" S DDSANS=$$EXTERNAL^DILFD(DDP,DDSFLD,"",DDSANS)
 | 
|---|
| 30 |  ;
 | 
|---|
| 31 | GETQ D:$G(DIERR) ERR^DDSVALM("$$GET^DDSVAL")
 | 
|---|
| 32 |  Q DDSANS
 | 
|---|
| 33 |  ;
 | 
|---|
| 34 | PUT(DDSFILE,DA,DDSFLD,DDSVAL,DDSER,DDSPARM) ;Put value for file/field
 | 
|---|
| 35 |  N DDP,DDSVDA,DDSV0,DDSV02,DDSVDL,DIE
 | 
|---|
| 36 |  N DIERR
 | 
|---|
| 37 |  ;
 | 
|---|
| 38 |  S:$D(DDSVAL)[0 DDSVAL=""
 | 
|---|
| 39 |  I $G(DDSPARM)'["I",$G(DDSPARM)'["E" S DDSPARM=$G(DDSPARM)_"E"
 | 
|---|
| 40 |  ;
 | 
|---|
| 41 |  D GDIE($D(DDS)#2) G:$G(DIERR) PUTQ G:'$G(DDSVDA) PUTQ
 | 
|---|
| 42 |  S DDSFLD=$$FIELD(DDP,DDSFLD) G:$G(DIERR) PUTQ
 | 
|---|
| 43 |  I DDSFLD=.01,"@"[DDSVAL D BLD^DIALOG(3086) G PUTQ
 | 
|---|
| 44 |  ;
 | 
|---|
| 45 |  S DDSV0=^DD(DDP,DDSFLD,0),DDSV02=$P(DDSV0,U,2)
 | 
|---|
| 46 |  I +DDSV02 D
 | 
|---|
| 47 |  . D MULT^DDSVALM
 | 
|---|
| 48 |  E  D VALPUT
 | 
|---|
| 49 |  ;
 | 
|---|
| 50 | PUTQ D:$G(DIERR) ERR^DDSVALM("PUT^DDSVAL")
 | 
|---|
| 51 |  Q
 | 
|---|
| 52 |  ;
 | 
|---|
| 53 | VALPUT ;Validate and put
 | 
|---|
| 54 |  N DDSVY
 | 
|---|
| 55 |  I DDSPARM["E" D
 | 
|---|
| 56 |  . D VAL^DIE(DDP,DDSVDA,DDSFLD,"ER",DDSVAL,.DDSVY)
 | 
|---|
| 57 |  E  D
 | 
|---|
| 58 |  . D AUXVAL^DIEV(DDP,DDSVDA,DDSFLD,"EIR",DDSVAL,.DDSVY,DDSV0,DDSV02)
 | 
|---|
| 59 |  Q:$G(DIERR)
 | 
|---|
| 60 |  I DDSVY=DDSVY(0),'$D(@DDSREFT@("F"_DDP,DDSVDA,DDSFLD,"X")) K DDSVY(0)
 | 
|---|
| 61 |  ;
 | 
|---|
| 62 |  I $D(DDS) D
 | 
|---|
| 63 |  . S:'$D(@DDSREFT@("F"_DDP,DDSVDA,DDSFLD)) ^("GL")=DIE
 | 
|---|
| 64 |  . D UPDATE(DDP,DDSVDA,.DA,DDSFLD,DDSPG,.DDSVY)
 | 
|---|
| 65 |  . S DDSCHG=1
 | 
|---|
| 66 |  E  D
 | 
|---|
| 67 |  . N DDSFDA
 | 
|---|
| 68 |  . S DDSFDA(DDP,DDSVDA,DDSFLD)=DDSVY
 | 
|---|
| 69 |  . D FILE^DIE("","DDSFDA")
 | 
|---|
| 70 |  Q
 | 
|---|
| 71 |  ;
 | 
|---|
| 72 | UPDATE(DDP,DDSVDA,DA,FLD,PG,Y) ;Store value, repaint
 | 
|---|
| 73 |  N DX,DY,BK,DDO,LEN,EXT,PAGE,RJ,REP,VAL
 | 
|---|
| 74 |  S (EXT,@DDSREFT@("F"_DDP,DDSVDA,FLD,"D"))=Y,^("F")=3 S:$D(Y(0))#2 (EXT,^("X"))=Y(0)
 | 
|---|
| 75 |  ;
 | 
|---|
| 76 |  D:FLD=.01
 | 
|---|
| 77 |  . S PAGE=0 F  S PAGE=$O(@DDSREFS@("F"_DDP,FLD,"L",PAGE)) Q:'PAGE  D
 | 
|---|
| 78 |  .. S BK=0 F  S BK=$O(@DDSREFS@("F"_DDP,FLD,"L",PAGE,BK)) Q:'BK  D
 | 
|---|
| 79 |  ... D:$P($G(@DDSREFS@(PAGE,BK)),U,8)
 | 
|---|
| 80 |  .... N DDSPTB S DDSPTB=$G(@DDSREFS@(PAGE,BK,"PTB"))
 | 
|---|
| 81 |  .... D:DDSPTB]"" RPF^DDS7(DDP,DDSPTB,DDSVDA,.DA)
 | 
|---|
| 82 |  ;
 | 
|---|
| 83 |  S BK=0 F  S BK=$O(@DDSREFS@("F"_DDP,FLD,"L",PG,BK)) Q:'BK  D
 | 
|---|
| 84 |  . S DDO=0 F  S DDO=$O(@DDSREFS@("F"_DDP,FLD,"L",PG,BK,DDO)) Q:'DDO  D
 | 
|---|
| 85 |  .. S LEN=$G(@DDSREFS@(PG,BK,DDO,"D")) Q:LEN=""
 | 
|---|
| 86 |  .. S DY=+LEN,DX=$P(LEN,U,2),RJ=$P(LEN,U,10),LEN=$P(LEN,U,3)
 | 
|---|
| 87 |  .. S REP=$P($G(@DDSREFS@(PG,BK)),U,7)
 | 
|---|
| 88 |  .. I $G(REP) D  Q:DY=""
 | 
|---|
| 89 |  ... N SN,PDA,OFS
 | 
|---|
| 90 |  ... S PDA=$G(@DDSREFT@(PG,BK)) I 'PDA S DY="" Q
 | 
|---|
| 91 |  ... S REP=$P($G(@DDSREFT@(PG,BK,PDA)),U,2,999) I REP="" S DY="" Q
 | 
|---|
| 92 |  ... S SN=$G(@DDSREFT@(PG,BK,PDA,"B",DDSVDA)) I 'SN S DY="" Q
 | 
|---|
| 93 |  ... S OFS=SN-$P(REP,U,2)
 | 
|---|
| 94 |  ... I OFS'<0,OFS<$P(REP,U,5) S DY=DY+OFS
 | 
|---|
| 95 |  ... E  S DY=""
 | 
|---|
| 96 |  .. S VAL=$P(DDGLVID,DDGLDEL)_$E(EXT,1,LEN)_$P(DDGLVID,DDGLDEL,10)
 | 
|---|
| 97 |  .. X IOXY
 | 
|---|
| 98 |  .. W $S(RJ:$J("",LEN-$L(EXT))_VAL,1:VAL_$J("",LEN-$L(EXT)))
 | 
|---|
| 99 |  ;
 | 
|---|
| 100 |  D:$D(@DDSREFS@("PT",DDP,FLD)) RPB^DDS7(DDP,FLD,PG)
 | 
|---|
| 101 |  D:$D(@DDSREFS@("COMP",DDP,FLD,PG)) RPCF^DDSCOMP(PG)
 | 
|---|
| 102 |  Q
 | 
|---|
| 103 |  ;
 | 
|---|
| 104 | GDIE(DDSVL) ;In:
 | 
|---|
| 105 |  ;  DDSFILE = File # or root
 | 
|---|
| 106 |  ;  DA      = Record array
 | 
|---|
| 107 |  ;  DDSVL   = Flag to lock record
 | 
|---|
| 108 |  ;Returns:
 | 
|---|
| 109 |  ;  DIE    = Global root of file
 | 
|---|
| 110 |  ;  DDP    = File #
 | 
|---|
| 111 |  ;  DDSVDL = Level #
 | 
|---|
| 112 |  ;  DDSVDA = DA,DA(1),...,
 | 
|---|
| 113 |  S DDP=$S(DDSFILE=+DDSFILE:DDSFILE,1:+$P($G(@(DDSFILE_"0)")),U,2))
 | 
|---|
| 114 |  I DDP=0 D BLD^DIALOG(202,"file") Q
 | 
|---|
| 115 |  D GL^DDS10(DDP,.DA,.DIE,.DDSVDL,.DDSVDA,$G(DDSVL))
 | 
|---|
| 116 |  Q
 | 
|---|
| 117 |  ;
 | 
|---|
| 118 | GNDPC ;In:
 | 
|---|
| 119 |  ;  DDP    = File #
 | 
|---|
| 120 |  ;  DDSFLD = Field #
 | 
|---|
| 121 |  ;Returns:
 | 
|---|
| 122 |  ;  DDSVDDL0 = 0 node of DD
 | 
|---|
| 123 |  ;  DDSVND   = Node where data resides
 | 
|---|
| 124 |  ;  DDSVPC   = Piece where data resides
 | 
|---|
| 125 |  ;  DDSVDV   = Field specifications
 | 
|---|
| 126 |  ;  X        = Pointed to file root or set of codes
 | 
|---|
| 127 |  I $G(DDSFLD)="" D BLD^DIALOG(202,"field") Q
 | 
|---|
| 128 |  S DDSVDDL0=$G(^DD(DDP,DDSFLD,0))
 | 
|---|
| 129 |  I DDSVDDL0?."^" D  Q
 | 
|---|
| 130 |  . N I,E
 | 
|---|
| 131 |  . S (I("FILE"),E("FILE"))=DDP,I(1)="#"_DDSFLD,E("FIELD")=DDSFLD
 | 
|---|
| 132 |  . D BLD^DIALOG(501,.I,.E)
 | 
|---|
| 133 |  ;
 | 
|---|
| 134 |  S DDSVPC=$P(DDSVDDL0,U,4)
 | 
|---|
| 135 |  S DDSVND=$P(DDSVPC,";"),DDSVPC=$P(DDSVPC,";",2)
 | 
|---|
| 136 |  S DDSVDV=$P(DDSVDDL0,U,2),X=$P(DDSVDDL0,U,3)
 | 
|---|
| 137 |  ;
 | 
|---|
| 138 |  N P S P("FILE")=DDP,P("FIELD")=DDSFLD
 | 
|---|
| 139 |  I DDSVPC=" " D
 | 
|---|
| 140 |  . D BLD^DIALOG(520,"computed",.P)
 | 
|---|
| 141 |  I DDSVPC=0 D
 | 
|---|
| 142 |  . S DDSVDV=+DDSVDV_$P($G(^DD(+DDSVDV,.01,0)),U,2)
 | 
|---|
| 143 |  . D:DDSVDV'["W" BLD^DIALOG(520,"multiple",.P)
 | 
|---|
| 144 |  Q
 | 
|---|
| 145 |  ;
 | 
|---|
| 146 | GVAL(DIE,DA,ND,PC) ;Get value
 | 
|---|
| 147 |  N LN,Y
 | 
|---|
| 148 |  S LN=$G(@(DIE_"DA,ND)"))
 | 
|---|
| 149 |  I $E(PC)'="E" S Y=$P(LN,U,PC)
 | 
|---|
| 150 |  E  S Y=$E(LN,+$E(PC,2,999),$P(PC,",",2)) S:Y?." " Y=""
 | 
|---|
| 151 |  Q Y
 | 
|---|
| 152 |  ;
 | 
|---|
| 153 | FIELD(DDP,FLD) ;Get field number
 | 
|---|
| 154 |  N F,P
 | 
|---|
| 155 |  S:$E(FLD)="""" FLD=$$UQT^DDSLIB($E(FLD,1,$$AFTQ^DDSLIB(FLD)-1))
 | 
|---|
| 156 |  ;
 | 
|---|
| 157 |  S F=FLD,P("FILE")=DDP
 | 
|---|
| 158 |  I FLD'=+$P(FLD,"E") D  Q:$G(DIERR) ""
 | 
|---|
| 159 |  . S F=$O(^DD(DDP,"B",FLD,""))
 | 
|---|
| 160 |  . I F="" S P(1)=FLD D BLD^DIALOG(501,.P)
 | 
|---|
| 161 |  ;
 | 
|---|
| 162 |  I $D(^DD(DDP,F,0))[0 S P(1)="#"_F D BLD^DIALOG(501,.P) Q ""
 | 
|---|
| 163 |  Q F
 | 
|---|