| 1 | DDS11(DDSBK,DDSNFO) ;SFISC/MLH,MKO-LOAD DATA ; 04 Jun 2007
 | 
|---|
| 2 |  ;;22.0;VA FileMan;**151**;Mar 30, 1999;Build 10
 | 
|---|
| 3 |  ;Per VHA Directive 2004-038, this routine should not be modified.
 | 
|---|
| 4 |  ;Input variables:
 | 
|---|
| 5 |  ;  DDSBK   = Block #
 | 
|---|
| 6 |  ;  DDSPG   = Page # (needed for form-only fields)
 | 
|---|
| 7 |  ;  DDSREFT = Temporary global location
 | 
|---|
| 8 |  ;  DDP     = File number of block
 | 
|---|
| 9 |  ;  DIE     = Global root of block
 | 
|---|
| 10 |  ;  DDSDA   = DA,DA(1),...
 | 
|---|
| 11 |  ;  DDSNFO  = Flag means don't reload form only fields
 | 
|---|
| 12 |  ;
 | 
|---|
| 13 |  N X,Y
 | 
|---|
| 14 |  S DDS1REFD=$NA(@DDSREFT@("F"_DDP,DDSDA))
 | 
|---|
| 15 |  ;
 | 
|---|
| 16 |  S DDS1FO=0
 | 
|---|
| 17 |  F  S DDS1FO=$O(^DIST(.404,DDSBK,40,DDS1FO)) Q:'DDS1FO  D LD
 | 
|---|
| 18 |  ;
 | 
|---|
| 19 |  I DDP,DDSDA S @DDS1REFD@("GL")=DIE
 | 
|---|
| 20 |  ;
 | 
|---|
| 21 |  K DDS1REFD,DDS1FLD,DDS1FO,DDS1KEY,DDS1LN,DDS1ND,DDS1PC,DDS1UI,DDS1DV
 | 
|---|
| 22 |  K DDS1D1,DDS1D2,DDS1D3
 | 
|---|
| 23 |  Q
 | 
|---|
| 24 |  ;
 | 
|---|
| 25 | LD ;Load data for a field
 | 
|---|
| 26 |  ;
 | 
|---|
| 27 |  ;Get form only fields
 | 
|---|
| 28 |  I $P($G(^DIST(.404,DDSBK,40,DDS1FO,0)),U,3)=2,$P($G(^(20)),U)]"" D  Q
 | 
|---|
| 29 |  . Q:$G(DDSNFO)
 | 
|---|
| 30 |  . N DDP
 | 
|---|
| 31 |  . S DDP=0,DDS1FLD=DDS1FO_","_DDSBK
 | 
|---|
| 32 |  . Q:"^1^3^"[(U_$G(@DDSREFT@("F0",DDSDA,DDS1FLD,"F"))_U)
 | 
|---|
| 33 |  . S Y=""
 | 
|---|
| 34 |  . I $D(@DDSREFT@("F0",DDSDA,DDS1FLD,"F"))[0,$G(^DIST(.404,DDSBK,40,DDS1FO,3))]"" D DEF(^(3),$G(^(3.1)))
 | 
|---|
| 35 |  . S (@DDSREFT@("F0",DDSDA,DDS1FLD,"D"),^("O"))=Y
 | 
|---|
| 36 |  ;
 | 
|---|
| 37 |  ;Get DD fields
 | 
|---|
| 38 |  S DDS1FLD=$G(^DIST(.404,DDSBK,40,DDS1FO,1)) Q:DDS1FLD?."^"
 | 
|---|
| 39 |  Q:"^1^3^"[(U_$G(@DDS1REFD@(DDS1FLD,"F"))_U)
 | 
|---|
| 40 |  ;
 | 
|---|
| 41 |  S DDS1LN=$G(^DD(DDP,DDS1FLD,0)) Q:DDS1LN?."^"
 | 
|---|
| 42 |  S DDS1PC=$P(DDS1LN,U,4),DDS1ND=$P(DDS1PC,";"),DDS1PC=$P(DDS1PC,";",2)
 | 
|---|
| 43 |  S DDS1DV=$P(DDS1LN,U,2),X=$P(DDS1LN,U,3)
 | 
|---|
| 44 |  ;
 | 
|---|
| 45 |  D @($S(DDS1FLD=.001:"L3",DDS1PC=0:"L2",1:"L1"))
 | 
|---|
| 46 |  ;
 | 
|---|
| 47 |  I DDS1DV["O"!(DDS1DV["P")!(DDS1DV["V")!(DDS1DV["D")!(DDS1DV["S") D
 | 
|---|
| 48 |  . Q:$D(@DDS1REFD@(DDS1FLD,"X"))
 | 
|---|
| 49 |  . D:Y]"" XFORM
 | 
|---|
| 50 |  . S @DDS1REFD@(DDS1FLD,"X")=Y
 | 
|---|
| 51 |  ;
 | 
|---|
| 52 |  I DDS1PC=0,DDS1DV,DDS1DV'["W",$D(@DDS1REFD@(DDS1FLD,"X"))[0 S ^("X")=Y
 | 
|---|
| 53 |  Q
 | 
|---|
| 54 |  ;
 | 
|---|
| 55 | L1 ;Get non-multiple field
 | 
|---|
| 56 |  S DDS1LN=$G(@(DIE_"DA,DDS1ND)"))
 | 
|---|
| 57 |  I $E(DDS1PC)'="E" S Y=$P(DDS1LN,U,DDS1PC)
 | 
|---|
| 58 |  E  S Y=$E(DDS1LN,+$E(DDS1PC,2,999),$P(DDS1PC,",",2)) S:Y?." " Y=""
 | 
|---|
| 59 |  ;
 | 
|---|
| 60 |  K @DDS1REFD@(DDS1FLD,"X")
 | 
|---|
| 61 |  I Y="",$D(@DDS1REFD@(DDS1FLD,"F"))[0,$D(^DIST(.404,DDSBK,40,DDS1FO,3))#2 D DEF(^(3),$G(^(3.1)))
 | 
|---|
| 62 | MUMPS I $G(DUZ(0))'="@",DDS1DV["K" S $P(@DDS1REFD@(DDS1FLD,"A"),U,4)=1,Y=$TR($J("",$L(Y))," ","*") ;**151
 | 
|---|
| 63 |  S @DDS1REFD@(DDS1FLD,"D")=Y
 | 
|---|
| 64 |  ;
 | 
|---|
| 65 |  ;Get key info
 | 
|---|
| 66 |  I '$D(@DDS1REFD@(DDS1FLD,"K")) D
 | 
|---|
| 67 |  . S DDS1KEY=0
 | 
|---|
| 68 |  . F  S DDS1KEY=$O(^DD("KEY","F",DDP,DDS1FLD,DDS1KEY)) Q:'DDS1KEY  D
 | 
|---|
| 69 |  .. S DDS1UI=$P(^DD("KEY",DDS1KEY,0),U,4) Q:'DDS1UI
 | 
|---|
| 70 |  .. Q:$P($G(^DD("IX",DDS1UI,0)),U,6)'="F"
 | 
|---|
| 71 |  .. S ^("K")=$G(@DDS1REFD@(DDS1FLD,"K"))_DDS1UI_U
 | 
|---|
| 72 |  Q
 | 
|---|
| 73 |  ;
 | 
|---|
| 74 | L2 ;Get multiple field
 | 
|---|
| 75 |  S DDS1SUB=+$P(DDS1LN,U,2) Q:$D(^DD(DDS1SUB,.01,0))[0
 | 
|---|
| 76 |  S DDS1DV=DDS1SUB_$P(^DD(DDS1SUB,.01,0),U,2),X=$P(^(0),U,3)
 | 
|---|
| 77 |  S DDS1DIC=DIE_DA_","""_DDS1ND_""","
 | 
|---|
| 78 |  ;
 | 
|---|
| 79 |  D:DDS1DV'["W"
 | 
|---|
| 80 |  . I $D(^DIST(.404,DDSBK,40,DDS1FO,3))#2 D  D L22
 | 
|---|
| 81 |  .. D DEF(^DIST(.404,DDSBK,40,DDS1FO,3),$G(^(3.1)),1)
 | 
|---|
| 82 |  .. S DDS1RN=$S($G(Y)="FIRST":$O(@(DDS1DIC_"0)")),$G(Y)="LAST":$O(@(DDS1DIC_""" "")"),-1),1:+$G(Y))
 | 
|---|
| 83 |  . E  I $D(DUZ)#2,$L(DDS1DIC)<29,$D(^DISV(DUZ,DDS1DIC))#2 S DDS1RN=^(DDS1DIC) D L22
 | 
|---|
| 84 |  . E  S DDS1RN=$S($D(@(DDS1DIC_"0)"))#2:$P(^(0),U,3),1:$O(^(0))) D L22
 | 
|---|
| 85 |  . E  S (Y,@DDS1REFD@(DDS1FLD,"D"))=""
 | 
|---|
| 86 |  ;
 | 
|---|
| 87 |  S @DDS1REFD@(DDS1FLD,"M")=$S(DDS1DV["W":0,1:1)_DDS1DIC_U_DDS1SUB
 | 
|---|
| 88 |  K DDS1DIC,DDS1RN,DDS1SUB
 | 
|---|
| 89 |  Q
 | 
|---|
| 90 | L22 ;
 | 
|---|
| 91 |  I DDS1RN>0,$D(@(DDS1DIC_+DDS1RN_",0)"))#2 S Y=$P(^(0),U),@DDS1REFD@(DDS1FLD,"D")=+DDS1RN
 | 
|---|
| 92 |  Q
 | 
|---|
| 93 |  ;
 | 
|---|
| 94 | DEF(DDS1LN3,DDS1LN31,DDS1MULT) ;Get default
 | 
|---|
| 95 |  N DDS1PTR,DDS1OT
 | 
|---|
| 96 |  Q:DDS1LN3=""
 | 
|---|
| 97 |  I DDS1LN3'="!M" S Y=DDS1LN3
 | 
|---|
| 98 |  E  I DDS1LN31'?."^" X DDS1LN31 S:$D(Y)[0 Y=""
 | 
|---|
| 99 |  Q:Y=""!$G(DDS1MULT)
 | 
|---|
| 100 |  ;
 | 
|---|
| 101 |  K DIR
 | 
|---|
| 102 |  I DDS1FLD["," D
 | 
|---|
| 103 |  . S DIR(0)=$P(^DIST(.404,DDSBK,40,DDS1FO,20),U)_$P(^(20),U,2,3)
 | 
|---|
| 104 |  . S:DIR(0)?1"DD".E DIR(0)=$P(DIR(0),U,2,999)
 | 
|---|
| 105 |  . I $E($P(DIR(0),U))="P" S DDS1PTR=1
 | 
|---|
| 106 |  E  D
 | 
|---|
| 107 |  . S DIR(0)=DDP_","_DDS1FLD
 | 
|---|
| 108 |  . S DDS1PTR=$P($G(^DD(DDP,DDS1FLD,0)),U,2)
 | 
|---|
| 109 |  . S DDS1OT=DDS1PTR["O",DDS1PTR=DDS1PTR["P"
 | 
|---|
| 110 |  S DIR("V")="",(X,DIR("B"))=Y
 | 
|---|
| 111 |  D ^DIR
 | 
|---|
| 112 |  ;
 | 
|---|
| 113 |  I DDER S Y=""
 | 
|---|
| 114 |  I Y]"" D
 | 
|---|
| 115 |  . I $G(DDS1PTR) S Y=$P(Y,U)
 | 
|---|
| 116 |  . S $P(@DDSREFT@("F"_DDP,DDSDA,DDS1FLD,"F"),U)=3
 | 
|---|
| 117 |  . I $G(DDS1PTR),$G(DDS1OT),$D(^DD(DDP,DDS1FLD,2))#2 K Y(0),Y(0,0)
 | 
|---|
| 118 |  . S:$D(Y(0)) @DDSREFT@("F"_DDP,DDSDA,DDS1FLD,"X")=$S($D(Y(0,0))#2:Y(0,0),1:Y(0))
 | 
|---|
| 119 |  . S DDSCHG=1
 | 
|---|
| 120 |  K DDER,DIR
 | 
|---|
| 121 |  Q
 | 
|---|
| 122 |  ;
 | 
|---|
| 123 | L3 ;Get number field
 | 
|---|
| 124 |  S (@DDS1REFD@(.001,"D"),Y)=DA
 | 
|---|
| 125 |  Q
 | 
|---|
| 126 |  ;
 | 
|---|
| 127 | EXT(DDP,DDS1FLD,Y) ;Return external form of Y
 | 
|---|
| 128 |  N DDS1DV,X
 | 
|---|
| 129 |  S DDS1DV=$P(^DD(DDP,DDS1FLD,0),U,2),X=$P(^(0),U,3)
 | 
|---|
| 130 |  I DDS1DV'["O",DDS1DV'["P",DDS1DV'["V",DDS1DV'["D",DDS1DV'["S" Q Y
 | 
|---|
| 131 |  I DDS1DV'["O",Y="" Q ""
 | 
|---|
| 132 |  D XFORM
 | 
|---|
| 133 |  Q Y
 | 
|---|
| 134 |  ;
 | 
|---|
| 135 | XFORM ;
 | 
|---|
| 136 |  N DDS1N
 | 
|---|
| 137 |  I DDS1DV["O",+DDS1FLD,$D(^DD(DDP,+DDS1FLD,2))#2 X ^(2) Q
 | 
|---|
| 138 |  I DDS1DV["P",@("$D(^"_X_"0))") S X=+$P(^(0),U,2) Q:'$D(^(Y,0))  S Y=$P(^(0),U),X=$P(^DD(X,.01,0),U,3),DDS1DV=$P(^(0),U,2) G XFORM
 | 
|---|
| 139 |  I DDS1DV["V",+$P(Y,"E"),$P(Y,";",2)["(",$D(@(U_$P(Y,";",2)_"0)"))#2 S X=+$P($P(^(0),U,2),"E") Q:$D(^(+$P(Y,"E"),0))[0  S Y=$P(^(0),U) I $D(^DD(+$P(X,"E"),.01,0))#2 S DDS1DV=$P(^(0),U,2),X=$P(^(0),U,3) G XFORM
 | 
|---|
| 140 |  I DDS1DV["D" X ^DD("DD")
 | 
|---|
| 141 |  I DDS1DV["S" S DDS1N=$P($P(";"_X,";"_Y_":",2),";",1) S:DDS1N]"" Y=DDS1N
 | 
|---|
| 142 |  Q
 | 
|---|