Annotation of freem_fileman/DICF4.m, revision 1.1
1.1 ! snw 1: DICF4 ;SEA/TOAD-VA FileMan: Finder, Part 4 (No Index) ;10/14/94 12:29 ;
! 2: ;;21.0;VA FileMan;;Dec 28, 1994
! 3: ;Per VHA Directive 10-93-142, this routine should not be modified.
! 4:
! 5: UPRIGHT(DIFILE,DIEN,DIFLAGS,DIROOT,DIVALUE,DICOUNT,DISCREEN,DIDENT,DILIST)
! 6: ; FIND--manual selection engine, check upright file for matches
! 7: ; proc, DIFILE & DIROOT by value
! 8: N DINDEX,DIFNODE,DIFPIECE,DIOUT
! 9: I DIFLAGS["O" S DIFLAGS=DIFLAGS_"X"
! 10: S DIDA=0,DIOUT=0
! 11: D PREP(DIFILE,.DIFLAGS,.DIVALUE,.DINDEX,.DISCREEN,.DIOUT)
! 12: I DIOUT Q
! 13: 41 F D I DIOUT D DECIDE^DICF2(.DIFLAGS,.DINDEX,DICOUNT,.DIOUT) Q:DIOUT S DIDA=0
! 14: . S DIDA=$O(@DIROOT@(DIDA))
! 15: . I 'DIDA S DIOUT=1 Q
! 16: . S $P(DIEN,",")=DIDA
! 17: . D CHECK(DIFILE,.DIEN,.DIFLAGS,.DIVALUE,.DIROOT,.DINDEX,.DICOUNT,.DISCREEN,.DIDENT,.DILIST)
! 18: . S $P(DIEN,",")=""
! 19: . I DIFLAGS["q" S DIOUT=1 Q
! 20: Q
! 21:
! 22: PREP(DIFILE,DIFLAGS,DIVALUE,DINDEX,DISCREEN,DIOUT)
! 23: ; UPRIGHT--lookup .01 type, add transform values to DIVALUE
! 24: ; proc, DIFILE & DIFLAGS by value
! 25: N DIFFLAG
! 26: S DINDEX(0,"COUNT")=0
! 27: S DINDEX(0,"DEF")=$G(^DD(DIFILE,.01,0))
! 28: 51 I DINDEX(0,"DEF")="" S DIOUT=1 Q
! 29: S DIFFLAG=$P(DINDEX(0,"DEF"),U,2)
! 30: I DIFFLAG["P"!(DIFFLAG["V") S DIFLAGS=DIFLAGS_"p"
! 31: S DINDEX(0,"TRANSFORM")=DIFFLAG'["F"&(DIFFLAG'["N")
! 32: I 'DINDEX(0,"TRANSFORM") Q
! 33: S DINDEX(0,"FIRST")=10
! 34: S DINDEX(0,"LAST")=9
! 35: 52 I DIFFLAG["D" D PREPD^DICF2(.DIVALUE,.DINDEX,.DISCREEN) Q
! 36: I DIFFLAG["S" D PREPS^DICF6(DIFLAGS,.DIVALUE,.DINDEX,.DISCREEN) Q
! 37: Q
! 38:
! 39: CHECK(DIFILE,DIEN,DIFLAGS,DIVALUE,DIROOT,DINDEX,DICOUNT,DISCREEN,DIDENT,DILIST)
! 40: ; UPRIGHT--check one record for possible matches
! 41: ; proc, DIFILE, DIFLAGS, & DIROOT by value
! 42: N DIKEY,DITRY,DIXFORM
! 43: S DIKEY=$P($G(@DIROOT@(+DIEN,0)),U)
! 44: I DIKEY="" Q
! 45: S DIXFORM=0
! 46: F D I DIXFORM="" Q
! 47: . S DIXFORM=$O(@DILIST("LVA")@("V")) I DIXFORM="" Q
! 48: . S DIVALUE=@DILIST("LVA")@("V")
! 49: . S DISCREEN=@DILIST("LVA")@("S")
! 50: . S DITRY=1
! 51: . I DIVALUE?.NP,+DIVALUE=DIVALUE S DITRY=DIFLAGS'["p"
! 52: . I DITRY,$P(DIKEY,DIVALUE)="" D
! 53: . . S DINDEX="#"
! 54: . . D ENTRY^DICF3(DIFILE,.DIEN,.DIFLAGS,.DIROOT,.DIVALUE,DINDEX,.DICOUNT,.DISCREEN)
! 55: . . I DIFLAGS["q" S DIXFORM="" Q
! 56: Q
! 57:
! 58: SOUNDEX(DIVALUE)
! 59: ; func, convert value to soundex value
! 60: N DICODE S DICODE="01230129022455012623019202"
! 61: N DISOUND S DISOUND=$C($A(DIVALUE)-(DIVALUE?1L.E*32))
! 62: N DIPREV S DIPREV=$E(DICODE,$A(DIVALUE)-64)
! 63: N DICHAR,DIPOS
! 64: F DIPOS=2:1 S DICHAR=$E(DIVALUE,DIPOS) Q:","[DICHAR D Q:$L(DISOUND)=4
! 65: . Q:DICHAR'?1A
! 66: . N DITRANS S DITRANS=$E(DICODE,$A(DICHAR)-$S(DICHAR?1U:64,1:96))
! 67: . Q:DITRANS=DIPREV Q:DITRANS=9
! 68: . S DIPREV=DITRANS
! 69: . I DITRANS'=0 S DISOUND=DISOUND_DITRANS
! 70: Q $E(DISOUND_"000",1,4)
! 71:
! 72: ISSNDX(DIFILE,DIFIELD,DINDEX)
! 73: ; func, return whether DINDEX is a soundex index
! 74: N DIDEF,DIEN,DINAME S DIDEF="",DIEN=0
! 75: F S DIEN=$O(^DD(DIFILE,DIFIELD,1,DIEN)) Q:'DIEN D Q:DINDEX=DINAME
! 76: . S DIDEF=$G(^DD(DIFILE,DIFIELD,1,DIEN,0))
! 77: . S DINAME=$P(DIDEF,U,2)
! 78: Q $P(DIDEF,U,3)="SOUNDEX"
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>