| 1 | DDSZ1 ;SFISC/MKO-GET BLOCK INFO,SCREEN IMAGE ;9:59 AM  15 Jul 1997
 | 
|---|
| 2 |  ;;22.0;VA FileMan;;Mar 30, 1999
 | 
|---|
| 3 |  ;Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
| 4 | EN(DDSPG,DDSBK,DDP,DDSBY,DDSBX,DDSBO,DDSTP,DDSREP,DDSNDD,DDSPGRP,DDSSCR,DDSNAV,DDSORD,DDSRNAV) ;
 | 
|---|
| 5 |  ;Input:
 | 
|---|
| 6 |  ;  DDSREFS = Global ref
 | 
|---|
| 7 |  ;Output:
 | 
|---|
| 8 |  ;  DDSSCR
 | 
|---|
| 9 |  ;  DDSNAV
 | 
|---|
| 10 |  ;  DDSORD
 | 
|---|
| 11 |  ;  DDSRNAV
 | 
|---|
| 12 |  ;
 | 
|---|
| 13 |  N Y
 | 
|---|
| 14 |  S:$G(DDSTP)="" DDSTP="e"
 | 
|---|
| 15 |  I DDSTP'="h",$G(DDSBO),$D(DDSORD(DDSBO))[0 D
 | 
|---|
| 16 |  . S DDSORD(DDSBO)=DDSBK
 | 
|---|
| 17 |  . S:$G(DDSREP)>1 $P(DDSORD(DDSBO),U,2)=$S($P(DDSREP,U,5)]"":$P($$GETFLD^DDSLIB($P(DDSREP,U,5),"","","","",DDSBK),","),1:"FIRST")
 | 
|---|
| 18 |  ;
 | 
|---|
| 19 |  S DDSF=0
 | 
|---|
| 20 |  F  S DDSF=$O(^DIST(.404,DDSBK,40,DDSF)) Q:DDSF'=+DDSF  D FLD
 | 
|---|
| 21 |  ;
 | 
|---|
| 22 | KILL K DDSC1,DDSC2,DDSCAP,DDSCLN,DDSD1,DDSD2,DDSD3
 | 
|---|
| 23 |  K DDSDDL0,DDSF,DDSFLD,DDSKEY,DDSL0,DDSL01,DDSL2,DDSL4,DDSN
 | 
|---|
| 24 |  Q
 | 
|---|
| 25 |  ;
 | 
|---|
| 26 | FLD ;Set up
 | 
|---|
| 27 |  ;  @DDSREFS@(pg,bk,ddo,
 | 
|---|
| 28 |  ;    "D")       = data $Y^data $X^data $L^field#
 | 
|---|
| 29 |  ;                  ^xcap $Y^xcap $X^xcap colon^xcap req
 | 
|---|
| 30 |  ;                  ^1 if computed field^1 if right justified
 | 
|---|
| 31 |  ;    "COMPE")   = M code that sets X
 | 
|---|
| 32 |  ;    "COMPE",1) = array sets DDSE(n)
 | 
|---|
| 33 |  ;
 | 
|---|
| 34 |  ;  @DDSREFS@("Ffile#",field#,"L",pg,bk,ddo)=""
 | 
|---|
| 35 |  ;
 | 
|---|
| 36 |  ;  DDSSCR(row)     = captions on that row
 | 
|---|
| 37 |  ;  DDSSCR(row,col) = final columns underlined
 | 
|---|
| 38 |  ;  DDSNAV(row,col) = ddo,bk for editable fields
 | 
|---|
| 39 |  ;  DDSORD(bo,fo)   = ddo for editable fields
 | 
|---|
| 40 |  ;
 | 
|---|
| 41 |  ;Get field properties
 | 
|---|
| 42 |  S:'$P(^DIST(.404,DDSBK,40,DDSF,0),U,3) $P(^(0),U,3)=3
 | 
|---|
| 43 |  S DDSL0=$G(^DIST(.404,DDSBK,40,DDSF,0)),DDSL01=$G(^(.1)),DDSFLD=$S($P(DDSL0,U,3)=2:DDSF_","_DDSBK,1:+$G(^(1))),DDSL2=$G(^(2)),DDSL4=$G(^(4))
 | 
|---|
| 44 |  K:$P(DDSL0,U,3)=3!'$P(DDSL0,U,3) DDSNDD
 | 
|---|
| 45 |  S DDSDDL0=$G(^DD(DDP,DDSFLD,0)) Q:DDSL0?."^"!(DDSL2?."^")
 | 
|---|
| 46 |  S DDSKEY=DDSFLD'[","&($D(^DD("KEY","F",DDP,DDSFLD))>1)
 | 
|---|
| 47 |  S DDSD1=$P($P(DDSL2,U),",")+DDSBY-1
 | 
|---|
| 48 |  S DDSD2=$P($P(DDSL2,U),",",2)+DDSBX-1
 | 
|---|
| 49 |  S DDSD3=$P(DDSL2,U,2)
 | 
|---|
| 50 |  S DDSC1=$P($P(DDSL2,U,3),",")+DDSBY-1
 | 
|---|
| 51 |  S DDSC2=$P($P(DDSL2,U,3),",",2)+DDSBX-1
 | 
|---|
| 52 |  S DDSCAP=$TR($P(DDSL0,U,2)," ",$C(0))
 | 
|---|
| 53 |  S DDSCLN=$S(DDSCAP="":"",$P(DDSL0,U,3)=1:"",$P(DDSL2,U,4):"",1:":")
 | 
|---|
| 54 |  ;
 | 
|---|
| 55 |  I DDSC1'<0,DDSC2'<0,$L(DDSCAP)>0,DDSCAP'="!M" D
 | 
|---|
| 56 |  . ;Set CAP xref for ^-jumping
 | 
|---|
| 57 |  . I DDSTP="e","^2^3^"[(U_$P(DDSL0,U,3)_U)!'$P(DDSL0,U,3) D
 | 
|---|
| 58 |  .. N C,I,L
 | 
|---|
| 59 |  .. S I=0 F  S I=$O(DDSPGRP(I)) Q:'I  Q:U_DDSPGRP(I)_U[(U_DDSPG_U)
 | 
|---|
| 60 |  .. Q:'I
 | 
|---|
| 61 |  .. S C=$P(DDSL0,U,2)
 | 
|---|
| 62 |  .. S:C?1"Select ".E C=$P(C,"Select ",2,999)
 | 
|---|
| 63 |  .. S C=$E($TR(C,"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ"),1,40)
 | 
|---|
| 64 |  .. S L=$L(DDSREFS)+$L(C)+$L(DDSPGRP(I))+$L(DDSPG)+$L(DDSBK)+$L(DDSF)+30
 | 
|---|
| 65 |  .. S:L>127 C=$E(C,1,$L(C)-(L-127))
 | 
|---|
| 66 |  .. S:C]"" @DDSREFS@("CAP",C,DDSPGRP(I),DDSPG,DDSBK,DDSF)=""
 | 
|---|
| 67 |  . ;
 | 
|---|
| 68 |  . ;Set DDSSCR
 | 
|---|
| 69 |  . I DDSC1'<0,DDSC2'<0,$L(DDSCAP)>0,DDSCAP'="!M" D
 | 
|---|
| 70 |  .. N DDSI,DDSX
 | 
|---|
| 71 |  .. S DDSX=DDSCAP_DDSCLN
 | 
|---|
| 72 |  .. F DDSI=1:1:+DDSREP D
 | 
|---|
| 73 |  ... S $E(DDSSCR(DDSC1+DDSI),DDSC2+1,DDSC2+$L(DDSX))=DDSX
 | 
|---|
| 74 |  ... S:$S($P(DDSL4,U)]"":+DDSL4,1:$P(DDSDDL0,U,2)["R")!DDSKEY DDSSCR(DDSC1+DDSI,DDSC2+1)=DDSC2+$L(DDSCAP)
 | 
|---|
| 75 |  ;
 | 
|---|
| 76 |  ;Set "D", "L" nodes, DDSNAV, and DDSORD
 | 
|---|
| 77 |  I DDSD1'<0,DDSD2'<0,DDSD3>0 D
 | 
|---|
| 78 |  . S @DDSREFS@(DDSPG,DDSBK,DDSF,"D")=DDSD1_U_DDSD2_U_DDSD3_U_DDSFLD
 | 
|---|
| 79 |  . S @DDSREFS@("F"_$S(DDSFLD[",":0,1:DDP),DDSFLD,"L",DDSPG,DDSBK,DDSF)=""
 | 
|---|
| 80 |  I DDSCAP="!M",DDSC1'<0,DDSC2'<0 S $P(@DDSREFS@(DDSPG,DDSBK,DDSF,"D"),U,5,8)=DDSC1_U_DDSC2_U_DDSCLN_U_($P(DDSDDL0,U,2)["R"!+DDSL4!DDSKEY)
 | 
|---|
| 81 |  S:$P(DDSL4,U,3) $P(@DDSREFS@(DDSPG,DDSBK,DDSF,"D"),U,10)=1
 | 
|---|
| 82 |  ;
 | 
|---|
| 83 |  ;Computed fields
 | 
|---|
| 84 |  I $P(DDSL0,U,3)=4 D  K DDSCOMP,DDSAR,DDSEXP,DDSFD Q
 | 
|---|
| 85 |  . S DDSCOMP=$G(^DIST(.404,DDSBK,40,DDSF,30)) Q:DDSCOMP?."^"
 | 
|---|
| 86 |  . D PARSE^DDSCOMP(DDP,DDSCOMP,DDSBK,.DDSEXP,.DDSAR,.DDSFD)
 | 
|---|
| 87 |  . Q:DDSEXP=""!$G(DIERR)
 | 
|---|
| 88 |  . S @DDSREFS@("COMPE",DDSBK,DDSF)=DDSEXP
 | 
|---|
| 89 |  . F DDSAR=1:1:DDSAR D
 | 
|---|
| 90 |  .. S:DDSAR(DDSAR)["*DDSREFC*" DDSAR(DDSAR)=$P(DDSAR(DDSAR),"*DDSREFC*")_$E(DDSREFS,1,$L(DDSREFS)-1)_",""COMPE"","_DDSBK_","_DDSF_","_DDSAR_$P(DDSAR(DDSAR),"*DDSREFC*",2,999)
 | 
|---|
| 91 |  .. S @DDSREFS@("COMPE",DDSBK,DDSF,DDSAR)=DDSAR(DDSAR)
 | 
|---|
| 92 |  .. I $D(DDSAR(DDSAR))>9 N I F I=1:1 Q:$D(DDSAR(DDSAR,I))[0  D
 | 
|---|
| 93 |  ... S @DDSREFS@("COMPE",DDSBK,DDSF,DDSAR,I)=DDSAR(DDSAR,I)
 | 
|---|
| 94 |  . S $P(@DDSREFS@(DDSPG,DDSBK,DDSF,"D"),U,9)=1
 | 
|---|
| 95 |  . I $G(DDSFD)]"" F DDSAR=1:1:$L(DDSFD,U) D
 | 
|---|
| 96 |  .. N F S F=$P(DDSFD,U,DDSAR) Q:F=""
 | 
|---|
| 97 |  .. S @DDSREFS@("COMP",$P(F,","),$P($P(F,",",2,99),";"),DDSPG,DDSBK,DDSF)=""
 | 
|---|
| 98 |  ;
 | 
|---|
| 99 |  Q:DDSD1<0!(DDSD2<0)!(DDSD3'>0)!(DDSL2?."^")
 | 
|---|
| 100 |  Q:$P(DDSDDL0,U,4)=" ; "  Q:DDSTP="h"  Q:DDSFLD=.001
 | 
|---|
| 101 |  I '$P(DDSDDL0,U,2),DDSTP'="e" Q
 | 
|---|
| 102 |  ;
 | 
|---|
| 103 |  S DDSORD(DDSBO,+DDSL0)=DDSF
 | 
|---|
| 104 |  S DDSNAV(DDSD1,DDSD2)=DDSF_","_DDSBK
 | 
|---|
| 105 |  S:$P(DDSDDL0,U,2) DDSMUL(DDSBK,DDSF)=""
 | 
|---|
| 106 |  ;
 | 
|---|
| 107 |  I $G(DDSREP)>1 D
 | 
|---|
| 108 |  . S $P(DDSNAV(DDSD1,DDSD2),",",3)=DDSBO
 | 
|---|
| 109 |  . S DDSRNAV(DDSBO,DDSD1)=DDSBK
 | 
|---|
| 110 |  . S DDSRNAV(DDSBO,DDSD1,DDSD2)=DDSF
 | 
|---|
| 111 |  . S DDSRNAV(DDSBO,DDSD1-1,DDSD2)=DDSF_",-1"
 | 
|---|
| 112 |  . S DDSRNAV(DDSBO,DDSD1+1,DDSD2)=DDSF_",+1"
 | 
|---|
| 113 |  Q
 | 
|---|