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>