DDS41 ;SFISC/MKO-VERIFY DATA ;07:42 AM 25 Oct 1994 ;;21.0;VA FileMan;;Dec 28, 1994 ;Per VHA Directive 10-93-142, this routine should not be modified. N DDO K DDSERROR,DDS4DONE,DDS4ERR S DDS4PG=DDSPG ; ;Set DA,DIE,DDP array to its original value I $G(DDSPTB)_$G(DDSREP)]"" N DIE,DDP,DDSDA,DA,DDSDL D . S DA=DDSDAORG,DDSDL=DDSDLORG,DDSDA=DA_"," . F DDSI=1:1:DDSDL S DA(DDSI)=DDSDAORG(DDSI),DDSDA=DDSDA_DA(DDSI)_"," . S DDP=$P($G(DDSFLORG),U),DIE=U_$P($G(DDSFLORG),U,2) S:DIE=U DIE="" ; D LDALL I $G(DIERR) D G END . N P . S P(1)=$P($G(^DIST(.403,+DDS,40,DDSPG,0)),U),P(2)=$P($G(^(1)),U) . S:P(2)="" P(2)="unnamed" . D BLD^DIALOG(3041,.P),ERR^DDSMSG . S DDS4ERR=1 ; D LP ; S DDSPG=DDS4PG,DDS4VC=$G(^DIST(.403,+DDS,20)) I DDS4VC'?."^" K @DDSREFT@("MSG") X DDS4VC I $G(@DDSREFT@("MSG"))>0!$G(DIERR) D PRNT ; END S Y='$D(DDSERROR)&'$G(DDS4ERR) K DDS4B,DDS4DA,DDS4DONE,DDS4ERR,DDS4FLD,DDS4PG,DDS4TP K DDS4VC,DDSCAP,DDSDD,DDSERROR,DDSI,DDSPID K DDSREQ,DIERR,DV Q ; LDALL ;Load all pages S (DDSPG,DDS4PG1)=$O(^DIST(.403,+DDS,40,"B",$S($G(DDSPAGE)]"":DDSPAGE,1:1),"")) S Y=1 F D ^DDS1(DDSPG) Q:$G(DIERR) S DDSPG=$$NP^DDS5(.Y) Q:DDSPG=DDS4PG1!'Y K DDS4PG1 Q ; LP ;Loop through all pages/blocks S DX=0,DY=IOSL-1 X IOXY W "Verifying ..."_$P(DDGLCLR,DDGLDEL) ; S DDSPG=0 F S DDSPG=$O(@DDSREFT@(DDSPG)) Q:'DDSPG D . S DDS4B=0 . F S DDS4B=$O(@DDSREFT@(DDSPG,DDS4B)) Q:'DDS4B D .. I '$D(DDS4DONE(DDS4B)),$P(@DDSREFS@(DDSPG,DDS4B),U,5)="e" D ... S DDSPID=$S($P($G(^DIST(.403,+DDS,40,DDSPG,1)),U)]"":$P(^(1),U),1:"Page "_$P(^(0),U)) ... D VB Q ; VB ;Loop through all fields on block N DDP S DDS4DONE(DDS4B)="",DDP=$P(^DIST(.404,DDS4B,0),U,2) S DDO=0 F S DDO=$O(^DIST(.404,DDS4B,40,DDO)) Q:'DDO D VF Q ; VF ;Check for required fields Q:$D(^DIST(.404,DDS4B,40,DDO,0))[0 S DDS4TP=$P(^(0),U,3) Q:DDS4TP=1 Q:DDS4TP=4 S DDSCAP=$P(^DIST(.404,DDS4B,40,DDO,0),U,2)_$S($P(^(0),U,4)]"":" ("_$P(^(0),U,4)_")",1:"") ; I DDS4TP=2 N DDP D . S DDP=0,DDS4FLD=DDO_","_DDS4B . K DV ; E D Q:DDS4FLD'=+$P(DDS4FLD,"E")!(DDS4FLD=.01) . S DDS4FLD=$G(^DIST(.404,DDS4B,40,DDO,1)) . S DDSDD=$G(^DD(DDP,DDS4FLD,0)),DV=$P(DDSDD,U,2) . S:DDSCAP="" DDSCAP=$S($G(^DD(DDP,DDS4FLD,.1))]"":^(.1),1:$P(DDSDD,U)) ; S DDS4DA=" " F S DDS4DA=$O(@DDSREFT@(DDSPG,DDS4B,DDS4DA)) Q:DDS4DA="" D . I $P(@DDSREFT@(DDSPG,DDS4B,DDS4DA),U,6)<2 D VR Q . N DDS4PDA S DDS4PDA=DDS4DA N DDS4DA . S DDS4DA="" . F S DDS4DA=$O(@DDSREFT@(DDSPG,DDS4B,DDS4PDA,"B",DDS4DA)) Q:'DDS4DA D VR Q ; VR ;Check that value is non-null for record S DDSREQ=$P($G(^DIST(.404,DDS4B,40,DDO,4)),U) S:$P($G(@DDSREFT@("F"_DDP,DDS4DA,DDS4FLD,"A")),U)]"" DDSREQ=$P(^("A"),U) ; I DDSREQ'=1,$G(DV)'["R" Q ; ;Required WP fields (quit if mult) I DDP,$D(@DDSREFT@("F"_DDP,DDS4DA,DDS4FLD,"M")) D:'^("M") Q . I $G(@DDSREFT@("F"_DDP,DDS4DA,DDS4FLD,"F")) S DDS4REF=$NA(^("D")) . E S DDS4REF=$P(@DDSREFT@("F"_DDP,DDS4DA,DDS4FLD,"M"),U,2),DDS4REF=U_$E(DDS4REF,1,$L(DDS4REF)-1)_")" . S (DDS4VAL,DDS4I)=0 . F S DDS4I=$O(@DDS4REF@(DDS4I)) Q:'DDS4I I $G(@DDS4REF@(DDS4I,0))'?." " S DDS4VAL=1 Q . D:'DDS4VAL LDERR . K DDS4REF,DDS4I,DDS4VAL ; I $G(@DDSREFT@("F"_DDP,DDS4DA,DDS4FLD,"D"))="" D LDERR Q ; LDERR ;Call ^DIALOG to load error N P I $D(DDS4ERR)[0 S DDS4ERR=1 D BLD^DIALOG(3091) S P(1)=DDSPID,P(2)=DDSCAP,P(3)="" I $L(DDS4DA,",")>2 D . N Y,C . S P(3)=$P(@(@DDSREFT@(DDSPG,DDS4B,$G(DDS4PDA,DDS4DA),"GL")_+DDS4DA_",0)"),U) . Q:P(3)="" . S Y=P(3),C=$P(^DD(DDP,.01,0),U,2) D Y^DIQ S P(3)=Y . S P(3)="(Subrecord: "_P(3)_")" D BLD^DIALOG(3092,.P) Q ; PRNT ; S (DDSABT,DX,DY)=0,$X=0,$Y=0 X IOXY W $P(DDGLCLR,DDGLDEL,2) ; I $G(DIERR) D . S DDSI=0 . F S DDSI=$O(^TMP("DIERR",$J,DDSI)) Q:'DDSI!DDSABT D .. S DDSJ=0 .. F S DDSJ=$O(^TMP("DIERR",$J,DDSI,"TEXT",DDSJ)) Q:'DDSJ!DDSABT D ... D:$G(^TMP("DIERR",$J,DDSI,"TEXT",DDSJ))]"" WLIN(^(DDSJ)) G:DDSABT PRNTEND ; I $D(@DDSREFT@("MSG")) D . S DDSI=0 . F S DDSI=$O(@DDSREFT@("MSG",DDSI)) Q:'DDSI!DDSABT D .. D:@DDSREFT@("MSG",DDSI)]"" WLIN(^(DDSI)) ; D EOP ; PRNTEND W $P(DDGLCLR,DDGLDEL,2) K DDSABT,DDSI,DDSJ K @DDSREFT@("MSG"),^TMP("DIERR",$J) Q ; WLIN(DDSX) ; ;Write a single line, wrap at word boundaries S DDSWIDTH=IOM-1 F Q:DDSX=""!DDSABT D . F DDSSP=$L(DDSX," "):-1:1 I $L($P(DDSX," ",1,DDSSP))IOSL D EOP I 'Y S DDSABT=1 Q .. W !,$P(DDSX," ",1,DDSSP) .. S DDSX=$P(DDSX," ",DDSSP+1,999) K DDSWIDTH Q EOP ; N X S DX=0,DY=IOSL-1 X IOXY R "Press RETURN to continue: ",X:DTIME S Y=X'[U&$T Q