Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: DIEV

DIEV.m

Go to the documentation of this file.
  1. DIEV ;SFISC/DPC-DATA VALIDATOR ;22SEP2009
  1. ;;22.2;VA FileMan;;Jan 05, 2016;Build 42
  1. ;;Per VA Directive 6402, this routine should not be modified.
  1. ;;Submitted to OSEHRA 5 January 2015 by the VISTA Expertise Network.
  1. ;;Based on Medsphere Systems Corporation's MSC FileMan 1051.
  1. ;;Licensed under the terms of the Apache License, Version 2.0.
  1. ;
  1. VAL(DIEVF,DIEVIEN,DIEVFLD,DIEVFLG,DIEVAL,DIEVANS,DIEVFAR,DIOUTAR) ;
  1. VALX ;
  1. N DIEV0,DIEVP2,DA,D,I,C,G K DIEVANS
  1. I '$D(DIQUIET) N DIQUIET S DIQUIET=1
  1. I '$D(DIFM) N DIFM S DIFM=1 D INIZE^DIEFU
  1. S DIEVFLG=$G(DIEVFLG) I '$$VERFLG^DIEFU(DIEVFLG,"HFERYUK") G OUT
  1. D FLDVAL G:$G(DIEVAL)=U OUT
  1. IENS S G=$G(DIEVIEN) I G]"" S:G'?.E1"," G=G_"," S C=$L(G,",")-1 F I=1:1:C S D="D"_(C-I) N @D S @D=$P(G,",",I) I @D="" D BLD^DIALOG(308,$G(DIEVIEN)) G OUT
  1. S DIEVIEN=G D DA^DIEFU(G,.DA)
  1. D AUXVAL(DIEVF,DIEVIEN,DIEVFLD,DIEVFLG,DIEVAL,.DIEVANS,.DIEV0,.DIEVP2)
  1. I $G(DIEVANS)=U!("@"[DIEVAL) G OUT
  1. MINVAL ;
  1. D INT(DIEVF,DIEVFLD,DIEVFLG,DIEVAL,.DIEVANS,$G(DIEV0),$G(DIEVP2))
  1. I DIEVANS=U D ERR G OUT
  1. I DIEVFLG'["U",$G(DIEVIEN)'?."," D KEY(DIEVF,DIEVIEN,DIEVFLD,DIEVFLG,DIEVANS,.DIEVANS)
  1. OUT S DIEVANS=$G(DIEVANS,U)
  1. I DIEVFLG["F",DIEVANS'=U D FDA
  1. I $G(DIOUTAR)]"" D CALLOUT^DIEFU(DIOUTAR)
  1. Q
  1. ;
  1. FLDVAL ;
  1. N DIEVOUT S DIEVOUT=0
  1. I '$$VFILE^DIEFU(DIEVF,"D") S DIEVAL=U Q
  1. I '$$VFIELD^DIEFU(DIEVF,DIEVFLD,"D") S DIEVAL=U Q
  1. S DIEV0=^DD(DIEVF,DIEVFLD,0),DIEVP2=$P(DIEV0,U,2)
  1. D DTYPE
  1. I DIEVOUT=1 S DIEVAL=U
  1. Q
  1. ;
  1. AUXVAL(DIEVF,DIEVIEN,DIEVFLD,DIEVFLG,DIEVAL,DIEVANS,DIEV0,DIEVP2) ;
  1. N DIEVOUT S DIEVOUT=0
  1. I '$D(DIOVRD),$P($G(^DD($$FNO^DILIBF(DIEVF),0,"DI")),U,2)="Y",DIEVFLG'["Y" D G AUXERR
  1. . N INT,EXT S INT(1)=$$FILENM^DIEFU(DIEVF),EXT("FILE")=DIEVF
  1. . D BLD^DIALOG(405,.INT,.EXT)
  1. I $P(DIEV0,U,5,99)["DINUM","@"'[DIEVAL D G AUXERR
  1. . N EXT,INT S EXT("FILE")=DIEVF,EXT("FIELD")=DIEVFLD,(INT(1),EXT(1))="DINUMed"
  1. . D BLD^DIALOG(520,.INT,.EXT)
  1. I $E(DIEVAL)="?"!(DIEVP2["V"&(DIEVAL[".?")) N P S P(1)=DIEVF,P(2)=DIEVFLD D BLD^DIALOG(1610,"",.P) G AUXERR
  1. I DIEVFLG["R" G:'$$VENTRY^DIEFU(DIEVF,DIEVIEN,"D9") AUXERR
  1. I DIEVP2["I",$$DATA(DIEVF,DIEVFLD) N P S P("FIELD")=DIEVFLD,P("FILE")=DIEVF D BLD^DIALOG(710,.P,.P) G AUXERR
  1. I "@"[DIEVAL D DELETE G:DIEVOUT AUXERR Q
  1. I DIEVFLG["I" D
  1. . S DIEVANS=DIEVAL
  1. . I DIEVFLG["E" S DIEVANS(0)=$$EXTERNAL^DILFD(DIEVF,DIEVFLD,"",DIEVAL)
  1. Q
  1. AUXERR S DIEVANS=U
  1. Q
  1. ;
  1. DTYPE ;
  1. I DIEVP2 D S DIEVOUT=1 Q
  1. . N T,INT,EXT D DTYP^DIOU(DIEVF,DIEVFLD,.T)
  1. . I T=5 S INT(1)="word-processing",EXT("FIELD")=DIEVFLD,EXT("FILE")=DIEVF D BLD^DIALOG(520,.INT,.EXT) Q
  1. . S INT(1)="multi-valued",EXT("FIELD")=DIEVFLD,EXT("FILE")=DIEVF D BLD^DIALOG(520,.INT,.EXT)
  1. I DIEVP2["C" N INT,EXT S INT(1)="computed",EXT("FIELD")=DIEVFLD,EXT("FILE")=DIEVF D BLD^DIALOG(520,.INT,.EXT) S DIEVOUT=1 Q
  1. Q
  1. ;
  1. DELETE ;
  1. I $D(^DD(DIEVF,DIEVFLD,"DEL")) D
  1. . N DIEVECNT S DIEVECNT=$G(DIERR)
  1. . N I S I="" F S I=$O(^DD(DIEVF,DIEVFLD,"DEL",I)) Q:I="" X $G(^(I,0)) I S DIEVOUT=1
  1. . I DIEVECNT'=$G(DIERR) S DIEVOUT=1 D HKERR^DILIBF(DIEVF,$G(DIEVIEN),DIEVFLD,"DEL node")
  1. I DIEVP2["R" D
  1. . I DIEVFLD'=.01 S DIEVOUT=1 Q
  1. . I '$D(^DD(DIEVF,0,"UP")) Q
  1. . I $P($G(@$$ROOT^DILFD(DIEVF,DIEVIEN,1)@(0)),U,4)=1 S DIEVOUT=1
  1. I 'DIEVOUT,DIEVFLG'["U",DIEVFLD'=.01 D Q:DIEVOUT
  1. . N DIEVKEY
  1. . S DIEVKEY=0
  1. . F S DIEVKEY=$O(^DD("KEY","F",DIEVF,DIEVFLD,DIEVKEY)) Q:'DIEVKEY D
  1. . . Q:$D(^DD("KEY",DIEVKEY,0))[0
  1. . . D ERR742^DIEVK1(DIEVF,DIEVFLD,DIEVKEY,DIEVIEN)
  1. . . S DIEVOUT=1
  1. I 'DIEVOUT S DIEVANS="" S:DIEVFLG["E" DIEVANS(0)=""
  1. E D
  1. . N INT,EXT
  1. . S INT(1)=$$FLDNM^DIEFU(DIEVF,DIEVFLD),INT(2)=$$FILENM^DIEFU(DIEVF)
  1. . S EXT("FILE")=DIEVF,EXT("FIELD")=DIEVFLD
  1. . D BLD^DIALOG(712,.INT,.EXT)
  1. Q
  1. ;
  1. DATA(DIEVF,DIEVFLD) ;
  1. N DIEVNODE,DIEVSPOT,N S DIEVSPOT=" ",N=0
  1. D GLRF^DIOU(DIEVF,DIEVFLD,.DIEVNODE,.DIEVSPOT)
  1. I +DIEVSPOT D
  1. . I $P($G(@DIEVNODE),U,DIEVSPOT)'="" S N=1
  1. E I $E(DIEVSPOT)="E" D
  1. . N F,T
  1. . S F=$P($P(DIEVSPOT,"E",2),",",1),T=$P(DIEVSPOT,",",2)
  1. . I $TR($E($G(@DIEVNODE),F,T)," ")'="" S N=1
  1. Q N
  1. ;
  1. INT(%B1,%B2,DIEVFLG,X,DIEVANS,%B3,%B) ;
  1. N %A,%E,%C,DIR,DIC,Y,DIE,%J,%T,%BA,DP,DIFLD,DDH,%BU,%I,%K,DQ,DIFILE,C,DIEVECNT,DIRDINUM
  1. I $G(%B3)="" S %B3=^DD(%B1,%B2,0),%B=$P(%B3,U,2)
  1. I %B["V" D VP^DIEV1(%B1,%B2,DIEVFLG,X,%B3,.DIEVANS) Q
  1. I %B["N" D Q:$G(DIEVANS)=U
  1. . I $L($P(X,"."))>24 S DIEVANS=U Q
  1. I %B["S" S X=$$UP^DILIBF(X)
  1. S %A=%B1_","_%B2_",V",%E=0,DIR("V")="",%T=$E(%B1)
  1. S DIEVECNT=$G(DIERR)
  1. S:DIEVFLG["N" DIRDINUM=1 D 1^DIR1 ;input transform to 52,3 KILLs off "Y" variable!
  1. I DIEVECNT'=$G(DIERR) S DIEVANS=U D HKERR^DILIBF(%B1,$G(DIEVIEN),%B2,"screen on a pointer or set of codes or in an input transform") K:$G(DIRDINUM) DINUM Q
  1. I %E S DIEVANS=U K:$G(DIRDINUM) DINUM Q
  1. S DIEVANS=$S(%B'["P":Y,1:$P(Y,U))
  1. I DIEVFLG["E" D
  1. . I %B["S"!(%B["D") S DIEVANS(0)=$P(Y(0),U)
  1. . E I %B["P" S DIEVANS(0)=Y(0,0)
  1. . E I %B["O" D
  1. . . S DIEVECNT=$G(DIERR)
  1. . . X $G(^DD(%B1,%B2,2))
  1. . . I DIEVECNT'=$G(DIERR) D HKERR^DILIBF(%B1,$G(DIEVIEN),%B2,"output transform") Q
  1. . . S DIEVANS(0)=Y
  1. . . Q
  1. . E S DIEVANS(0)=Y
  1. . Q
  1. Q
  1. ;
  1. KEY(DIEVF,DIEVIEN,DIEVFLD,DIEVFLG,DIEVAL,DIEVANS) ;checks Key integrity for a value
  1. N DIEVKEY,DIEVFDA S DIEVKEY=""
  1. S DIEVFDA(DIEVF,DIEVIEN,DIEVFLD)=DIEVAL
  1. I '$$KEYVAL^DIEVK($E("K",DIEVFLG["K"),"DIEVFDA") K DIEVANS S DIEVANS=U
  1. Q
  1. ;
  1. FDA ;
  1. I $G(DIEVFAR)="" D BLD^DIALOG(202,"FDA") Q
  1. D LOAD^DIEF1(DIEVF,DIEVIEN,DIEVFLD,"",DIEVANS,DIEVFAR)
  1. Q
  1. ;
  1. ERR ;
  1. N INT,EXT
  1. S INT(1)=$$FLDNM^DIEFU(DIEVF,DIEVFLD),INT(2)=$$FILENM^DIEFU(DIEVF),(INT(3),EXT(3))=DIEVAL
  1. S EXT("FILE")=DIEVF,EXT("FIELD")=DIEVFLD,EXT("IENS")=$G(DIEVIEN)
  1. D BLD^DIALOG(701,.INT,.EXT)
  1. I DIEVFLG["H" D GET^DIEH(DIEVF,"",DIEVFLD,"?b") ;DA() and D0,D1,etc. passed thru symbol table
  1. Q
  1. ;
  1. CHKX ;
  1. N DIEV0,DIEVP2 K DIEVANS
  1. I '$D(DIQUIET) N DIQUIET S DIQUIET=1
  1. I '$D(DIFM) N DIFM S DIFM=1 D INIZE^DIEFU
  1. S DIEVFLG=$G(DIEVFLG) I '$$VERFLG^DIEFU(DIEVFLG,"HEN") G OUT
  1. D FLDVAL I $G(DIEVAL)=U D OUT Q
  1. D MINVAL
  1. Q