| 1 | DIFROMS3 ;SFISC/DCL,TKW- DATA TO DISTRIBUTION ARRAY ;5/14/98 12:30
|
---|
| 2 | ;;22.0;VA FileMan;;Mar 30, 1999
|
---|
| 3 | ;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
| 4 | ;
|
---|
| 5 | Q
|
---|
| 6 | EN ;
|
---|
| 7 | I '$D(@DIFRFIA) D ERR(2) Q
|
---|
| 8 | G:$G(DIFRFILE) FILE
|
---|
| 9 | S DIFRFILE=0 F S DIFRFILE=$O(@DIFRFIA@(DIFRFILE)) Q:DIFRFILE'>0 D FILE
|
---|
| 10 | Q
|
---|
| 11 | FCHK I '$D(@DIFRFIA@(DIFRFILE)) D ERR(5) Q ; * * * * PHASING OUT * * * *
|
---|
| 12 | FILE N DIFRS,DIFRSCR,DIFRDA,DIFROOT,DIFRRLR,DIFR01,DIFRPR,DIFRDNSC,DIFRFRV,DIFRFRVX
|
---|
| 13 | N DIFRQ,DIFRTART,DIFRK,R,R1,R2,R3,C,F,G,I,DIFR2DD,DIFRNODE,DIFRFELD,DIFRPCE,DIFRIENS,DIFRDD0
|
---|
| 14 | S DIFR01=$G(@DIFRFIA@(DIFRFILE,0,1)),DIFRPR=$TR($P(DIFR01,"^",5),"Y","y")="y"
|
---|
| 15 | I $TR($P(DIFR01,"^",7),"Y","y")'="y" Q
|
---|
| 16 | I DIFRPR D PGL^DIFROMSP(DIFRFILE,"",DIFRTA)
|
---|
| 17 | S DIFRS=$G(@DIFRFIA@(DIFRFILE,0,11))]"",DIFRSCR=$G(^(11))
|
---|
| 18 | S DIFROOT=$NA(@($$ROOT^DILFD(DIFRFILE,"",1))),DIFRDA=0 ;$NA/trans gbl $Q
|
---|
| 19 | S DIFRRLR=$G(@DIFRFIA@(DIFRFILE,0,"RLRO"))
|
---|
| 20 | S:DIFRRLR="" DIFRRLR=DIFROOT
|
---|
| 21 | I $D(@DIFRRLR)'>9 D ERR(4) Q
|
---|
| 22 | N Y
|
---|
| 23 | F S DIFRDA=$O(@DIFRRLR@(DIFRDA)) Q:DIFRDA'>0 D
|
---|
| 24 | .I '$D(@DIFROOT@(DIFRDA,0)) D Q
|
---|
| 25 | ..N DIFRERR S DIFRERR(1)=DIFRDA,DIFRERR(2)=DIFRFILE
|
---|
| 26 | ..D BLD^DIALOG(9513,.DIFRERR)
|
---|
| 27 | ..Q
|
---|
| 28 | .I DIFRS,$D(@DIFRRLR@(DIFRDA,0)) S Y=DIFRDA X DIFRSCR Q:'$T ;set *NAKED* and *Y*
|
---|
| 29 | .M @DIFRTA@("DATA",DIFRFILE,DIFRDA)=@DIFROOT@(DIFRDA)
|
---|
| 30 | .Q
|
---|
| 31 | S DIFRQ=$NA(@DIFRTA@("DATA",DIFRFILE)) ;$NA/trans gbl/$Q
|
---|
| 32 | S DIFRTART=$$OREF^DILF(DIFRQ)
|
---|
| 33 | F S DIFRQ=$Q(@DIFRQ) Q:$P(DIFRQ,DIFRTART)]""!(DIFRQ="") D:$P(DIFRQ,DIFRTART,2,99)[""""!(DIFRPR)
|
---|
| 34 | .K R1
|
---|
| 35 | .S DIFRK=1
|
---|
| 36 | .S R2=$P(DIFRQ,DIFRTART,2,99),$E(R2,$L(R2))="",C=$L(R2,","),F=1,R1=0
|
---|
| 37 | .F I=1:1 Q:I>C S G=$P(R2,",",F,I) Q:G="" I G'[""""!($L(G,"""")#2&($E(G)="""")&($E(G,$L(G))="""")) S F=F+$L(G,","),I=F-1,R1(R1)=G,R1=R1+1,C=C+($L(G,",")-1) I 'G,G'?1"0".E,R1#2 S DIFRK=DIFRTART_$P(R2,",",1,I)_")" Q
|
---|
| 38 | .I DIFRPR,DIFRK,'(R1#2) D Q ;RESOLVE POINTERS
|
---|
| 39 | ..D Q:DIFR2DD'>0
|
---|
| 40 | ...I R1'>3 S DIFR2DD=DIFRFILE Q
|
---|
| 41 | ...S R3=""
|
---|
| 42 | ...F I=0:1:R1-3 S R3=R3_R1(I)_","
|
---|
| 43 | ...S DIFR2DD=+$P($G(@(DIFRTART_R3_"0)")),"^",2)
|
---|
| 44 | ...Q
|
---|
| 45 | ..S DIFRNODE=R1($O(R1(""),-1)),DIFRDNSC=R2
|
---|
| 46 | ..Q:'$D(@DIFRTA@("PGL",DIFR2DD,DIFRNODE))
|
---|
| 47 | ..S DIFRPCE=0
|
---|
| 48 | ..F S DIFRPCE=$O(@DIFRTA@("PGL",DIFR2DD,DIFRNODE,DIFRPCE)) Q:DIFRPCE="" D:DIFRPCE>0
|
---|
| 49 | ...Q:$P(@DIFRQ,"^",DIFRPCE)=""
|
---|
| 50 | ...S DIFRFELD=$O(@DIFRTA@("PGL",DIFR2DD,DIFRNODE,DIFRPCE,"")),(I,DIFRIENS)=""
|
---|
| 51 | ...;CREATE IENS * * * * * * * * * * * * * * * * *
|
---|
| 52 | ...F S I=$O(R1(I),-1) Q:I="" S:'(I#2) DIFRIENS=DIFRIENS_R1(I)_","
|
---|
| 53 | ...S DIFRDD0=^DD(DIFR2DD,DIFRFELD,0)
|
---|
| 54 | ...D DIERR
|
---|
| 55 | ...S DIFRFRV=$$GET1^DIQ(DIFR2DD,DIFRIENS,DIFRFELD)
|
---|
| 56 | ...D DIERR
|
---|
| 57 | ...I DIFRFRV']"" D Q
|
---|
| 58 | ....N DIFRERR
|
---|
| 59 | ....S DIFRERR(1)=DIFR2DD,DIFRERR(2)=DIFRIENS,DIFRERR(3)=DIFRFELD
|
---|
| 60 | ....D BLD^DIALOG(9514,.DIFRERR)
|
---|
| 61 | ....D DIERR
|
---|
| 62 | ....Q
|
---|
| 63 | ...S DIFRFRVX="FRV1"
|
---|
| 64 | ...; If .01 field on file level is a pointer use "FRV0" subscript
|
---|
| 65 | ...;I R1'>3,DIFRPCE=1,DIFRNODE=0 S DIFRFRVX="FRV0"
|
---|
| 66 | ...S @DIFRTA@(DIFRFRVX,DIFRFILE,DIFRDNSC,DIFRPCE)=DIFRFRV
|
---|
| 67 | ...S @DIFRTA@(DIFRFRVX,DIFRFILE,DIFRDNSC,DIFRPCE,"F")=$S($P(DIFRDD0,"^",2)["P":";"_$P(DIFRDD0,"^",3),$P(DIFRDD0,"^",2)["V":"1;"_$P($P(@DIFRQ,"^",DIFRPCE),";",2),1:"")
|
---|
| 68 | ...D KEYVAL
|
---|
| 69 | ...Q
|
---|
| 70 | ..Q
|
---|
| 71 | ..;Q:IF HEADER NODE OR IF NOT DATA NODE THEN FIND DD AND CHECK
|
---|
| 72 | ..; IF DD#,"PGL",DATA NODE EXIST IF SO GET PIECE AND FIELD
|
---|
| 73 | ..; AND SET IT UP INTO A STRUCTURE ; ALL RESOLVED; .01,IDs AND PTR.
|
---|
| 74 | ..;IT WAS DECIDED NOT TO RESOLVE .01 AND ID POINTERS
|
---|
| 75 | ..Q
|
---|
| 76 | .Q:DIFRK
|
---|
| 77 | .K @DIFRK
|
---|
| 78 | .Q
|
---|
| 79 | Q
|
---|
| 80 | ;
|
---|
| 81 | KEYVAL ; Send KEY values if pointed-to file has a primary KEY
|
---|
| 82 | N DIFL S DIFL=$P(DIFRDD0,"^",2)
|
---|
| 83 | I DIFL["P" S DIFL=+$P(DIFL,"P",2)
|
---|
| 84 | E D
|
---|
| 85 | . S DIFL=$P($P(@DIFRQ,"^",DIFRPCE),";",2)
|
---|
| 86 | . S DIFL=+$P($G(@("^"_DIFL_"0)")),"^",2) Q
|
---|
| 87 | Q:'DIFL
|
---|
| 88 | N DIKEY S DIKEY=$O(^DD("KEY","AP",DIFL,"P",0)) Q:'DIKEY
|
---|
| 89 | N X,DIOUT S DIOUT=0 D Q:DIOUT
|
---|
| 90 | . S X=$P(^DD("KEY",DIKEY,0),U,4) I 'X S DIOUT=1 Q
|
---|
| 91 | . S X=$P($G(^DD("IX",X,0)),U,2) I X="" S DIOUT=1 Q
|
---|
| 92 | . S @DIFRTA@("FRV1K",DIFRFILE,DIFRDNSC,DIFRPCE)=X Q
|
---|
| 93 | N DIFLD,DIVAL,DIPTR,DIER,DIERR,DIFLDDA,DISEQ
|
---|
| 94 | S DIPTR=+$P(@DIFRQ,"^",DIFRPCE),DIFLDDA=0,DIOUT=0
|
---|
| 95 | F S DIFLDDA=$O(^DD("KEY",DIKEY,2,DIFLDDA)) Q:'DIFLDDA S X=$G(^(DIFLDDA,0)) D Q:DIOUT
|
---|
| 96 | . S DIFLD=$P(X,U),DISEQ=$P(X,U,3) I 'DISEQ S DIOUT=1 Q
|
---|
| 97 | . I $P(X,U,2)'=DIFL S DIOUT=1 Q
|
---|
| 98 | . I DIFLD=.01 S DIVAL=DIFRFRV
|
---|
| 99 | . E S DIVAL=$$GET1^DIQ(DIFL,DIPTR_",",DIFLD,"","","DIER")
|
---|
| 100 | . I $D(DIER) K DIER S DIOUT=1 Q
|
---|
| 101 | . S @DIFRTA@("FRV1K",DIFRFILE,DIFRDNSC,DIFRPCE,DISEQ)=DIVAL
|
---|
| 102 | . Q
|
---|
| 103 | I DIOUT K @DIFRTA@("FRV1K",DIFRFILE,DIFRDNSC,DIFRPCE)
|
---|
| 104 | Q
|
---|
| 105 | ;
|
---|
| 106 | DIERR I $G(DIERR) S DIFRERRC=$$ERRC($G(DIFRERRC),DIERR) K DIERR
|
---|
| 107 | Q
|
---|
| 108 | ;
|
---|
| 109 | ERRC(X,Y) ;
|
---|
| 110 | S X=$G(X),Y=$G(Y)
|
---|
| 111 | S $P(X,"^")=+X+Y,$P(X,"^",2)=$P(X,"^",2)+$P(Y,"^",2)
|
---|
| 112 | Q X
|
---|
| 113 | ;
|
---|
| 114 | ERR(X) N Y S Y=$P($T(ERR+X),";",5) Q:'Y D BLD^DIALOG(Y) Q
|
---|
| 115 | ;;FIA Node Is Set To "No Data";1;9509
|
---|
| 116 | ;;FIA Array Does Not Exist;2;9501
|
---|
| 117 | ;;;3;
|
---|
| 118 | ;;Records Do Not Exist;4;9510
|
---|
| 119 | ;;FIA File Number Invalid;5;9502
|
---|