| 1 | DIFG2 ;SFISC/DG(OHPRD)-PROCESSING OF MULTIPLES FROM FILEGRAM ; [ 02/02/93  4:21 PM ]
 | 
|---|
| 2 |  ;;22.0;VA FileMan;;Mar 30, 1999
 | 
|---|
| 3 |  ;Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
| 4 | START ;CALLED BY DIFG
 | 
|---|
| 5 |  S DIFG=DIFG+1
 | 
|---|
| 6 |  I DIFGMULT=0 S DIFGNDC=0,DIFGM(0)=DIC ;ENTERING HIGHEST LEVEL MULTIPLE
 | 
|---|
| 7 |  N DIC
 | 
|---|
| 8 |  D MULT
 | 
|---|
| 9 |  I DIFGER G X1
 | 
|---|
| 10 |  I '$D(DIFG("NOLKUP")) D ^DIFG3 I 1
 | 
|---|
| 11 |  E  D NOLOOK
 | 
|---|
| 12 |  I DIFGER G X1
 | 
|---|
| 13 |  D SET
 | 
|---|
| 14 |  K DIFGALNK,DIFGMLND,DIFGPC,DIFGFLD,DIFGVAL,DIFGDOL,DIFGNUMF,DIFGNOLK,DIFGLAGO,Y,DIFG("NOLKUP"),DIFG("ACGRV"),DIFGDIC(DIFGDIC)
 | 
|---|
| 15 |  D FILE^DIFG
 | 
|---|
| 16 |  K DIFGSKIP(DIFGMULT) ;Going up one level so kill this variable which tells lower level multiples not to do lookup
 | 
|---|
| 17 |  D CHANGEDA
 | 
|---|
| 18 |  S DIFG=DIFG-1
 | 
|---|
| 19 | X1 Q
 | 
|---|
| 20 |  ;
 | 
|---|
| 21 | MULT ;MULTIPLE FIELD LOOKUP AND CALL TO SET DR STRING FOR MULTIPLE
 | 
|---|
| 22 |  I DIFGMULT=0 S DIFGMGBL(DIFGMULT)=$S(DIFGM(0):^DIC(DIFGM(0),0,"GL"),1:DIC),DIFGDA(DIFGMULT)=DA
 | 
|---|
| 23 |  S DIFGNODE=$P($P(DIFGMLND,"^",4),";")
 | 
|---|
| 24 |  S DIFGLAGO=0
 | 
|---|
| 25 |  I $P(^DD(DIFGNUM,.01,0),U,2)'["'"!($D(DIFGENV("LAYGO",DIFGNUM,.01))) S DIFGLAGO=1 ;Not a ptr or a ptr and laygo allowed
 | 
|---|
| 26 |  S DIFGMULT=DIFGMULT+1
 | 
|---|
| 27 |  I $D(DIFGSKIP(DIFGMULT-1)) S DIFGSKIP(DIFGMULT)=""
 | 
|---|
| 28 |  S DIFGMGBL(DIFGMULT)=DIFGMGBL(DIFGMULT-1)_DIFGDA(DIFGMULT-1)_","_""""_DIFGNODE_""""_","
 | 
|---|
| 29 |  S DIFGM(DIFGMULT)=DIFGNUM
 | 
|---|
| 30 |  S DIC=DIFGNUM D BASE^DIFG0 Q:DIFGER  D FUNC^DIFG0
 | 
|---|
| 31 |  Q
 | 
|---|
| 32 |  ;
 | 
|---|
| 33 | NOLOOK ;IF NO LOOKUP REQUIRED, SET DA ARRAY
 | 
|---|
| 34 |  F DIFGI=DIFGMULT:-1:1 S DA(DIFGI)=$S(DIFGI=1:DA,1:DA(DIFGI-1))
 | 
|---|
| 35 |  Q
 | 
|---|
| 36 |  ;
 | 
|---|
| 37 | SET ;
 | 
|---|
| 38 |  I '$D(DIFGSKIP(DIFGMULT)) S (DA,DIFGDA(DIFGMULT))=+Y
 | 
|---|
| 39 |  E  S (DA,DIFGDA(DIFGMULT))=DIFGALNK I '$D(DIFGFLUS) D
 | 
|---|
| 40 |  . S ^UTILITY("DIFG",$J,DIFGINCR,DIC,"X")=$S($E(X)="`":$E(X,2,245)_"^N",($D(DIFG("ACGRV"))!(X[("^UTILITY(""DIFG@"","_$J))):X_"^N",1:X_"^"),^("MODE")="A"_"^"_$P(^("MODE"),U,2),^("DIC(""P"")")=$P(DIFGMLND,U,2)
 | 
|---|
| 41 |  S DIC=DIFGM(DIFGMULT)
 | 
|---|
| 42 |  S ^UTILITY("DIFG",$J,DIFGINCR,DIC,"DA")=DA,^("GL")=DIFGMGBL(DIFGMULT),^($S($D(DIFGSKIP(DIFGMULT))&('$D(DIFGFLUS)):"DIC(""DR"")",1:"DR"))="" F DIFGI=1:1:DIFGMULT S ^("DA("_DIFGI_")")=DA(DIFGI)
 | 
|---|
| 43 |  I $D(DIFGSKIP(DIFGMULT)),'$D(DIFGFLUS) D ENADD^DIFG4
 | 
|---|
| 44 |  K DIFGTYP,DIFGFLUS ;DIFGTYP exists due to DIFG3 not killing it if DIFGTYP="MV FIELD" - Needed in case one calls ENADD^DIFG4
 | 
|---|
| 45 |  Q
 | 
|---|
| 46 |  ;
 | 
|---|
| 47 | CHANGEDA ;BACK DOWN ONE LEVEL DA'S, I.E. DA=DA(1),DA(1)=DA(2) ETC.
 | 
|---|
| 48 |  S DA=DA(1)
 | 
|---|
| 49 |  I DIFGMULT>1 F DIFGI=DIFGMULT:-1:2 S DA(DIFGI-1)=DA(DIFGI)
 | 
|---|
| 50 |  K DA(DIFGMULT)
 | 
|---|
| 51 |  S DIFGMULT=DIFGMULT-1
 | 
|---|
| 52 |  Q
 | 
|---|
| 53 |  ;
 | 
|---|