1 | LEXAB ; ISL/KER Look-up Exact Match "B" index ; 05/14/2003
|
---|
2 | ;;2.0;LEXICON UTILITY;**25**;Sep 23, 1996
|
---|
3 | ;
|
---|
4 | ; External References
|
---|
5 | ; DBIA 10104 $$UP^XLFSTR
|
---|
6 | ;
|
---|
7 | ; Exact match S X=$$EN^LEXAB("LEXSCH",LEXVDT)
|
---|
8 | ;
|
---|
9 | ; INPUT
|
---|
10 | ; LEXSCH User input string to search for
|
---|
11 | ; LEXVDT Date used to screen out inactive codes
|
---|
12 | ;
|
---|
13 | ; Notes:
|
---|
14 | ;
|
---|
15 | ; 1. If an exact match is found, it is placed at
|
---|
16 | ; the top of the selection list at
|
---|
17 | ; ^TMP("LEXFND",$J)
|
---|
18 | ;
|
---|
19 | ; 2. Returns
|
---|
20 | ;
|
---|
21 | ; 0 - Exact match not found
|
---|
22 | ; 1 - Exact match found
|
---|
23 | ;
|
---|
24 | EN(LEXSCH,LEXVDT) ; Check "B" index for exact match
|
---|
25 | Q:'$L(LEXSCH) 0
|
---|
26 | N LEXLKGL,LEXEM,LEXEMC S LEXLKGL=$G(^TMP("LEXSCH",$J,"GBL",0)),LEXEMC=0
|
---|
27 | Q:$G(LEXLKGL)'["757.01" 0
|
---|
28 | N LEXSHOW S LEXSHOW=$G(^TMP("LEXSCH",$J,"DIS",0))
|
---|
29 | N LEXO,LEXE,LEXOK,LEXDES,LEXDSP
|
---|
30 | S (LEXE,LEXOK)=0,LEXO=$$SCH(LEXSCH)
|
---|
31 | F S LEXO=$O(^LEX(757.01,"B",LEXO)) Q:LEXO=""!(LEXSCH'[LEXO) D
|
---|
32 | . S (LEXE,LEXOK)=0
|
---|
33 | . F S LEXE=$O(^LEX(757.01,"B",LEXO,LEXE)) Q:+LEXE=0 D
|
---|
34 | . . Q:+($P($G(^LEX(757.01,LEXE,1)),"^",5))=1
|
---|
35 | . . I $$UP^XLFSTR(LEXSCH)=$$UP^XLFSTR($G(^LEX(757.01,LEXE,0))) D
|
---|
36 | . . . S LEXEMC=+($G(LEXEMC)),LEXEMC=LEXEMC+1,LEXEM=LEXE
|
---|
37 | S:+($G(LEXEMC))=1 LEXOK=$G(LEXEM) S:+($G(LEXEMC))'=1 LEXOK=0
|
---|
38 | ; Exact Match Found
|
---|
39 | I +LEXOK>0 D
|
---|
40 | . S LEXE=LEXOK
|
---|
41 | . ; Filter
|
---|
42 | . S LEXFILR=$$EN^LEXAFIL($G(LEXFIL),LEXE) Q:LEXFILR=0
|
---|
43 | . ; Deactivated
|
---|
44 | . Q:+($P($G(^LEX(757.01,LEXE,1)),"^",5))=1
|
---|
45 | . S LEXDES=$$DES(LEXE)
|
---|
46 | . S LEXDSP="" S:$L($G(LEXSHOW)) LEXDSP=$$DSP(LEXE,$G(LEXSHOW),$G(LEXVDT))
|
---|
47 | . D ADDE^LEXAL(LEXE,LEXDES,LEXDSP)
|
---|
48 | . S ^TMP("LEXSCH",$J,"EXM",0)=LEXE
|
---|
49 | . S ^TMP("LEXSCH",$J,"EXM",1)=$G(^LEX(757.01,+LEXE,0))
|
---|
50 | . I '$D(^LEX(757,"B",LEXE)) D
|
---|
51 | . . N LEXME,LEXM S LEXM=+($G(^LEX(757.01,LEXE,1))) Q:LEXM=0
|
---|
52 | . . S LEXME=+($G(^LEX(757,LEXM,0))) Q:LEXM=0 Q:LEXE=LEXME
|
---|
53 | . . I +($G(^LEX(757.01,LEXME,1)))=LEXM D
|
---|
54 | . . . S LEXDES=$$DES(LEXME),LEXDSP="" S:$L($G(LEXSHOW)) LEXDSP=$$DSP(LEXE,$G(LEXSHOW),$G(LEXVDT))
|
---|
55 | . . . D ADDEM^LEXAL(LEXME,LEXDES,LEXDSP)
|
---|
56 | . . . S ^TMP("LEXSCH",$J,"EXC",0)=LEXME
|
---|
57 | . . . S ^TMP("LEXSCH",$J,"EXC",1)=$G(^LEX(757.01,+LEXME,0))
|
---|
58 | Q:$D(^TMP("LEXFND",$J)) 1
|
---|
59 | Q 0
|
---|
60 | DES(LEXX) ; Get description flag
|
---|
61 | N LEXDES,LEXE,LEXM S LEXDES="",LEXE=+LEXX
|
---|
62 | S LEXM=$P($G(^LEX(757.01,+($G(LEXX)),1)),"^",1)
|
---|
63 | S LEXM=+($G(^LEX(757,+($G(LEXM)),0)))
|
---|
64 | S:$D(^LEX(757.01,LEXM,3)) LEXDES="*"
|
---|
65 | S LEXX=$G(LEXDES) Q LEXX
|
---|
66 | TERM(LEXX) ; Get expression
|
---|
67 | Q $G(^LEX(757.01,LEXX,0))
|
---|
68 | DSP(LEXX,LEXDSP,LEXVDT) ; Return displayable text
|
---|
69 | N LEXMCE S LEXMCE=+($G(^LEX(757,+($G(^LEX(757.01,LEXX,1))),0)))
|
---|
70 | I +LEXMCE>0,$D(^LEX(757.01,+LEXMCE,0)) S LEXX=$$SO^LEXASO(+LEXMCE,LEXDSP,1,$G(LEXVDT)) Q LEXX
|
---|
71 | S LEXX=$$SO^LEXASO(LEXX,LEXDSP,1,$G(LEXVDT)) Q LEXX
|
---|
72 | SCH(LEXX) ; Search for LEXX a $Orderable variable
|
---|
73 | S LEXX=$$UP^XLFSTR($E(LEXX,1,63))
|
---|
74 | S LEXX=$E(LEXX,1,($L(LEXX)-1))_$C($A($E(LEXX,$L(LEXX)))-1)_"~" Q LEXX
|
---|