DIAXT ;SFISC/DCM-GET EXTRACT TEMPLATE SPECS ;5/13/96 14:01
;;22.0;VA FileMan;;Mar 30, 1999
;Per VHA Directive 10-93-142, this routine should not be modified.
EN N DIAXI,DILL,DIAX
S DIAXTTO="^TMP($J,""DIAXTTO"")",DIAXTFR="^TMP($J,""DIAXTFR"")"
K @DIAXTTO,@DIAXTFR
D SPEC
Q
SPEC ;get specs
D TOP,DR
D NEXTLVL
Q
TOP ;get base file specs from extract template
N X
S DIAXI=0
S DIAXI=$O(^DIPT(DIAXT,1,DIAXI)) Q:DIAXI'>0 S X=^(DIAXI,0)
S DILL=$P(X,U,2)
FILE S @DIAXTFR@(DIAXI,"FR")=+X
S @DIAXTFR@(+X,"TO")=$P(X,U,9)
S @DIAXTFR@(+X,"PRT")=$P(X,U,3)
S @DIAXTFR@(+X,"P4")=$P(X,U,4)
S @DIAXTFR@(+X,"P2")=$P(X,U,2)
S @DIAXTFR@(+X,"P5")=$P(X,U,5)
S @DIAXTFR@(+X,"P7")=$P(X,U,7)
I DILL>1,$P(X,U,9)'=$P(X,U,10) S @DIAXTTO@(+$P(X,U,9),"PRT")=+$P(X,U,10)
Q
DR ;get fields
N DR,DRN,DRX,DRZ,FILE
S DR="",DRN=1,DRZ=0,FILE=@DIAXTFR@(DILL,"FR")
F S DRZ=$O(^DIPT(DIAXT,1,DIAXI,"F",DRZ)) Q:'DRZ I $D(^(DRZ,0)) S DRX=^(0) D
. S DR=DR_+DRX_";",FILE=@DIAXTFR@(DIAXI,"FR")
. S @DIAXTTO@(FILE,+DRX,+$P(DRX,U,5))=@DIAXTFR@(FILE,"TO")_U_$P(DRX,U,3)_U_$P(DRX,U,5)
. I $L(DR)>245 S @DIAXTFR@(FILE,"DR",DRN)=DR,DRN=DRN+1,DR=""
S:DR]"" @DIAXTFR@(FILE,"DR",DRN)=DR
Q
NEXTLVL ;
S DIAX(DILL,"DIAXI")=DIAXI,DILL=DILL+1
F DIAXI=DIAXI:0 S DIAXI=$O(^DIPT(DIAXT,1,DIAXI)) Q:DIAXI'=+DIAXI S X=^(DIAXI,0) D NEXTLVL2 Q:DIAXI=""
S DILL=DILL-1,DIAXI=DIAX(DILL,"DIAXI")
Q
NEXTLVL2 ;
I $P(X,U,2)<DILL S DIAXI="" Q
Q:$P(X,U,3)'=@DIAXTFR@(DIAX(DILL-1,"DIAXI"),"FR")
D FILE
D DR
D RECURSE
Q
RECURSE ;
D NEXTLVL
Q
DIAXT ;SFISC/DCM-GET EXTRACT TEMPLATE SPECS ;5/13/96 14:01
+1 ;;22.0;VA FileMan;;Mar 30, 1999
+2 ;Per VHA Directive 10-93-142, this routine should not be modified.
EN NEW DIAXI,DILL,DIAX
+1 SET DIAXTTO="^TMP($J,""DIAXTTO"")"
SET DIAXTFR="^TMP($J,""DIAXTFR"")"
+2 KILL @DIAXTTO,@DIAXTFR
+3 DO SPEC
+4 QUIT
SPEC ;get specs
+1 DO TOP
DO DR
+2 DO NEXTLVL
+3 QUIT
TOP ;get base file specs from extract template
+1 NEW X
+2 SET DIAXI=0
+3 SET DIAXI=$ORDER(^DIPT(DIAXT,1,DIAXI))
IF DIAXI'>0
QUIT
SET X=^(DIAXI,0)
+4 SET DILL=$PIECE(X,U,2)
FILE SET @DIAXTFR@(DIAXI,"FR")=+X
+1 SET @DIAXTFR@(+X,"TO")=$PIECE(X,U,9)
+2 SET @DIAXTFR@(+X,"PRT")=$PIECE(X,U,3)
+3 SET @DIAXTFR@(+X,"P4")=$PIECE(X,U,4)
+4 SET @DIAXTFR@(+X,"P2")=$PIECE(X,U,2)
+5 SET @DIAXTFR@(+X,"P5")=$PIECE(X,U,5)
+6 SET @DIAXTFR@(+X,"P7")=$PIECE(X,U,7)
+7 IF DILL>1
IF $PIECE(X,U,9)'=$PIECE(X,U,10)
SET @DIAXTTO@(+$PIECE(X,U,9),"PRT")=+$PIECE(X,U,10)
+8 QUIT
DR ;get fields
+1 NEW DR,DRN,DRX,DRZ,FILE
+2 SET DR=""
SET DRN=1
SET DRZ=0
SET FILE=@DIAXTFR@(DILL,"FR")
+3 FOR
SET DRZ=$ORDER(^DIPT(DIAXT,1,DIAXI,"F",DRZ))
IF 'DRZ
QUIT
IF $DATA(^(DRZ,0))
SET DRX=^(0)
Begin DoDot:1
+4 SET DR=DR_+DRX_";"
SET FILE=@DIAXTFR@(DIAXI,"FR")
+5 SET @DIAXTTO@(FILE,+DRX,+$PIECE(DRX,U,5))=@DIAXTFR@(FILE,"TO")_U_$PIECE(DRX,U,3)_U_$PIECE(DRX,U,5)
+6 IF $LENGTH(DR)>245
SET @DIAXTFR@(FILE,"DR",DRN)=DR
SET DRN=DRN+1
SET DR=""
End DoDot:1
+7 IF DR]""
SET @DIAXTFR@(FILE,"DR",DRN)=DR
+8 QUIT
NEXTLVL ;
+1 SET DIAX(DILL,"DIAXI")=DIAXI
SET DILL=DILL+1
+2 FOR DIAXI=DIAXI:0
SET DIAXI=$ORDER(^DIPT(DIAXT,1,DIAXI))
IF DIAXI'=+DIAXI
QUIT
SET X=^(DIAXI,0)
DO NEXTLVL2
IF DIAXI=""
QUIT
+3 SET DILL=DILL-1
SET DIAXI=DIAX(DILL,"DIAXI")
+4 QUIT
NEXTLVL2 ;
+1 IF $PIECE(X,U,2)<DILL
SET DIAXI=""
QUIT
+2 IF $PIECE(X,U,3)'=@DIAXTFR@(DIAX(DILL-1,"DIAXI"),"FR")
QUIT
+3 DO FILE
+4 DO DR
+5 DO RECURSE
+6 QUIT
RECURSE ;
+1 DO NEXTLVL
+2 QUIT