| 1 | DICUIX2 ;SEA/TOAD,SF/TKW-FileMan: Build index data in DINDEX array (cont). ;11:19 AM  7 Nov 2000
 | 
|---|
| 2 |  ;;22.0;VA FileMan;**4,28,67**;Mar 30, 1999
 | 
|---|
| 3 |  ;Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 | COMMON1 ; Put info about data subscripts into DINDEX array
 | 
|---|
| 6 |  N DIFR,DIPRT
 | 
|---|
| 7 |  S DIFR=$G(DIFROM(DISUB)),DIPRT=$G(DIPART(DISUB))
 | 
|---|
| 8 |  I DINDEX(DISUB,"FILE")=DIFILE S DINDEX("FLIST")=DINDEX("FLIST")_"^"_DINDEX(DISUB,"FIELD")
 | 
|---|
| 9 |  I DIFLAGS["q" D C3 Q
 | 
|---|
| 10 |  S DINDEX(DISUB,"USE")=0 D
 | 
|---|
| 11 |  . I DIFROM("IEN") S DINDEX(DISUB,"USE")=1 Q
 | 
|---|
| 12 |  . S:$G(DIFROM(DISUB+1))]"" DINDEX(DISUB,"USE")=1 Q
 | 
|---|
| 13 | C1 S DINDEX(DISUB,"WAY")=$S(DIFLAGS[4:1,DIWAY=DINDEX("WAY"):1,1:-1)
 | 
|---|
| 14 |  I $G(DINDEX("WAY","REVERSE")) S DITO(DISUB)=DIFR,DIFR=""
 | 
|---|
| 15 | C2 I DIFLAGS[4 S DINDEX(DISUB,"LENGTH")=DILENGTH
 | 
|---|
| 16 |  I DIFLAGS[3 D
 | 
|---|
| 17 |  . S DIFR=$E(DIFR,1,DILENGTH)
 | 
|---|
| 18 |  . S DIPRT=$E(DIPRT,1,DILENGTH)
 | 
|---|
| 19 |  . I $D(DITO(DISUB)) S DITO(DISUB)=$E(DITO(DISUB),1,DILENGTH)
 | 
|---|
| 20 |  . Q
 | 
|---|
| 21 | C3 I 'DINDEX(DISUB,"FILE")!('DINDEX(DISUB,"FIELD")) S DINODE="",DICODE="DINDEX(DISUB)"
 | 
|---|
| 22 |  E  D GET^DICUIX1(DIFILE,DINDEX(DISUB,"FILE"),DINDEX(DISUB,"FIELD"),.DINODE,.DICODE)
 | 
|---|
| 23 |  I $G(DIERR) D
 | 
|---|
| 24 |  . S DINODE="",DICODE="DINDEX(DISUB)"
 | 
|---|
| 25 |  . D BLD^DIALOG(8099,DINDEX) Q
 | 
|---|
| 26 |  S DINDEX(DISUB,"GET")="DIVAL="_DICODE
 | 
|---|
| 27 | C4 S DITYPE=$P(DINODE,U,2)
 | 
|---|
| 28 |  N % S %="F" D  S DINDEX(DISUB,"TYPE")=%
 | 
|---|
| 29 |  . Q:DIFLAGS["Q"
 | 
|---|
| 30 |  . I DITYPE["P" S %="P" Q
 | 
|---|
| 31 |  . I DITYPE["D" S %="D" Q
 | 
|---|
| 32 |  . I DITYPE["S" S %="S" Q
 | 
|---|
| 33 |  . I DITYPE["V" S %="V" Q
 | 
|---|
| 34 |  . I DITYPE["N" S %="N"
 | 
|---|
| 35 |  . Q
 | 
|---|
| 36 |  Q:DIFLAGS["q"
 | 
|---|
| 37 |  I DISUB=1 D
 | 
|---|
| 38 |  . S DITEMP=$S($D(DIFILE(DIFILE,"NO B")):DIFILE(DIFILE,"NO B"),1:DIFILE(DIFILE,"O")_"DINDEX")
 | 
|---|
| 39 |  . I "VP"[DINDEX(DISUB,"TYPE") D
 | 
|---|
| 40 |  . . S DINDEX(1,"NODE")=DINODE Q:DIFLAGS[4
 | 
|---|
| 41 |  . . I DIFLAGS'["Q",$$CHKP^DICUIX1(.DIFILE,.DINDEX,+$G(DINUMBER),DIFR_DIPRT,.DISCREEN) D  Q
 | 
|---|
| 42 |  . . . D TMPIDX^DICUIX1(1,.DITEMP,.DITEMP2,.DINDEX) Q
 | 
|---|
| 43 |  . . S DINDEX("AT")=2 Q
 | 
|---|
| 44 |  . Q
 | 
|---|
| 45 |  I DISUB>1 D
 | 
|---|
| 46 |  . I DIFLAGS[4,"VP"[DINDEX(DISUB,"TYPE") S DINDEX(DISUB,"GET")="DIVAL=$G(DINDEX(DISUB,""EXT""))"
 | 
|---|
| 47 |  . I DIFLAGS[3,"VP"[DINDEX(DISUB,"TYPE"),DIFLAGS'["Q",'$D(DINDEX("ROOTCNG")) D TMPIDX^DICUIX1(DISUB,.DITEMP,.DITEMP2,.DINDEX) Q
 | 
|---|
| 48 |  . S DITEMP=DITEMP_"DINDEX("_(DISUB-1)_")"
 | 
|---|
| 49 |  . Q
 | 
|---|
| 50 |  S DINDEX(DISUB,"ROOT")=DITEMP_")",DITEMP=DITEMP_","
 | 
|---|
| 51 |  I $D(DITEMP2) D
 | 
|---|
| 52 |  . S:DISUB>1 DITEMP2=DITEMP2_"DIX("_(DISUB-1)_")"
 | 
|---|
| 53 |  . S DINDEX(DISUB,"IXROOT")=DITEMP2_")",DITEMP2=DITEMP2_","
 | 
|---|
| 54 |  . Q
 | 
|---|
| 55 | C5 S DINDEX(DISUB,"MORE?")=0
 | 
|---|
| 56 |  I +$P(DIPRT,"E")=DIPRT,DITYPE'["D" D
 | 
|---|
| 57 |  . I DINDEX(DISUB,"WAY")=-1 S DINDEX(DISUB,"MORE?")=1 Q
 | 
|---|
| 58 |  . I +$P(DIFR,"E")=DIFR!(DIFR="") S DINDEX(DISUB,"MORE?")=1
 | 
|---|
| 59 |  . Q
 | 
|---|
| 60 | C6 I DIPRT]"" D
 | 
|---|
| 61 |  . I DIFLAGS[4,"VP"[DINDEX(DISUB,"TYPE") Q:DIFLAGS'["l"  Q:DISUB>1
 | 
|---|
| 62 |  . I DITYPE["D",DIFLAGS[3 D  Q
 | 
|---|
| 63 |  . . N I S I=$S(DINDEX(DISUB,"WAY")=1:"0000000",1:9999999)
 | 
|---|
| 64 |  . . D DAT(.DIFR,DIPRT,I,DINDEX(DISUB,"WAY"),.DIOUT) Q
 | 
|---|
| 65 |  . Q:$E(DIFR,1,$L(DIPRT))=DIPRT
 | 
|---|
| 66 |  . I DINDEX(DISUB,"WAY")=1 D  Q
 | 
|---|
| 67 |  . . I DIFR]](DIPRT_$S(+$P(DIPRT,"E")=DIPRT:" ",1:"")) S DIOUT=1 Q
 | 
|---|
| 68 |  . . I +$P(DIPRT,"E")=DIPRT,DIPRT<0 S DIFR=$S(DIPRT[".":$P(DIPRT,".")-1,1:"")  Q
 | 
|---|
| 69 |  . . I +$P(DIPRT,"E")=DIPRT,+$P(DIFR,"E")=DIFR,DIFR>DIPRT Q
 | 
|---|
| 70 |  . . S DINDEX(DISUB,"USE")=1
 | 
|---|
| 71 |  . . S DIFR=DIPRT_$S(+$P(DIPRT,"E")'=DIPRT:"",DIFR]]DIPRT:" ",1:"")
 | 
|---|
| 72 |  . . Q
 | 
|---|
| 73 |  . I DIFR'="",DIPRT]]DIFR S DIOUT=1 Q
 | 
|---|
| 74 |  . I +$P(DIPRT,"E")=DIPRT,DIFR?.1"-"1.N.E Q
 | 
|---|
| 75 |  . S DINDEX(DISUB,"USE")=1
 | 
|---|
| 76 |  . S DIFR=DIPRT_"{{{{{{{{{{"
 | 
|---|
| 77 |  . Q
 | 
|---|
| 78 |  S DINDEX(DISUB)=$G(DIFR) I DIFR]"" S DINDEX(DISUB,"FROM")=DIFR
 | 
|---|
| 79 |  I DIPRT]"" S DINDEX(DISUB,"PART")=DIPRT
 | 
|---|
| 80 |  I $D(DITO(DISUB)) S DINDEX(DISUB,"TO")=DITO(DISUB)
 | 
|---|
| 81 | C7 I $G(DIDENT(-5)) D
 | 
|---|
| 82 |  . I $D(DINDEX(DISUB,"TRANOUT")) S DINDEX(DISUB,"GETEXT")=DIGET Q
 | 
|---|
| 83 |  . N T S T=DITYPE I T'["D",T'["S",T'["P",T'["V",T'["O" Q
 | 
|---|
| 84 |  . I DIFLAGS[3,"PV"[DINDEX(DISUB,"TYPE"),(DISUB>1!($D(DINDEX("ROOTCNG",1)))) D
 | 
|---|
| 85 |  . . I DINDEX(DISUB,"FILE")'=DIFILE S DIGET=0 Q
 | 
|---|
| 86 |  . . S DIGET=2 Q
 | 
|---|
| 87 |  . S DINDEX(DISUB,"GETEXT")=DIGET Q
 | 
|---|
| 88 |  Q
 | 
|---|
| 89 |  ;
 | 
|---|
| 90 | COMMON2 ; Put data about IEN subscript into DINDEX array.
 | 
|---|
| 91 |  N DIEN S DIEN=DINDEX("#")+1
 | 
|---|
| 92 |  S:DINDEX'="#" DINDEX(DIEN,"ROOT")=DITEMP_"DINDEX("_(DIEN-1)_"))"
 | 
|---|
| 93 |  I $D(DITEMP2) S DINDEX(DIEN,"IXROOT")=DITEMP2_"DIX("_(DIEN-1)_"))"
 | 
|---|
| 94 |  I $G(DINDEX("WAY","REVERSE")),DIFROM("IEN") S DINDEX(DIEN,"TO")=DIFROM("IEN"),DIFROM("IEN")=""
 | 
|---|
| 95 |  S DINDEX(DIEN)=DIFROM("IEN")
 | 
|---|
| 96 |  I DINDEX(DIEN)=0,DINDEX("WAY")=-1 S DINDEX(DIEN)=""
 | 
|---|
| 97 |  I DIFROM("IEN") S DINDEX(DIEN,"FROM")=DIFROM("IEN")
 | 
|---|
| 98 |  S DINDEX(DIEN,"WAY")=DINDEX("WAY")
 | 
|---|
| 99 |  Q
 | 
|---|
| 100 |  ;
 | 
|---|
| 101 | DAT(DIFR,DIPRT,DIAPP,DIWAY,DIOUT) ; Process FROM and PART for dates
 | 
|---|
| 102 |  N L,P,DIPART S L=$L(DIFR),P=$L(DIPRT),DIPART=DIPRT
 | 
|---|
| 103 |  I L<P S DIFR=DIFR_$E(DIPART,L+1,P)
 | 
|---|
| 104 |  I $L(DIFR)<7 S DIFR=$E(DIFR_DIAPP,1,7)
 | 
|---|
| 105 |  Q:$E(DIFR,1,P)=DIPART
 | 
|---|
| 106 |  I P<7 S DIPART=$E(DIPART_DIAPP,1,7)
 | 
|---|
| 107 |  I DIWAY=1,DIFR]]DIPART S DIOUT=1 Q
 | 
|---|
| 108 |  I DIWAY=-1,DIPART]]DIFR S DIOUT=1 Q
 | 
|---|
| 109 |  S $E(DIFR,1,P)=DIPRT
 | 
|---|
| 110 |  S DINDEX(DISUB,"USE")=1
 | 
|---|
| 111 |  Q
 | 
|---|
| 112 |  ;
 | 
|---|