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

LEXAB.m

Go to the documentation of this file.
  1. LEXAB ;ISL/KER - Look-up Exact Match "B" index ;05/23/2017
  1. ;;2.0;LEXICON UTILITY;**25,80,86,103**;Sep 23, 1996;Build 2
  1. ;
  1. ; Global Variables
  1. ; ^LEX(757 SACC 1.3
  1. ; ^LEX(757.01 SACC 1.3
  1. ; ^TMP("LEXFND") SACC 2.3.2.5.1
  1. ; ^TMP("LEXSCH") SACC 2.3.2.5.1
  1. ;
  1. ; External References
  1. ; $$UP^XLFSTR ICR 10104
  1. ;
  1. ; Killed in LEXA
  1. ; LEXFIL
  1. ;
  1. ; Exact match S X=$$EN^LEXAB("LEXSCH",LEXVDT)
  1. ;
  1. ; INPUT
  1. ; LEXSCH User input string to search for
  1. ; LEXVDT Date used to screen out inactive codes
  1. ;
  1. ; Notes:
  1. ;
  1. ; 1. If an exact match is found, it is placed at
  1. ; the top of the selection list at
  1. ; ^TMP("LEXFND",$J)
  1. ;
  1. ; 2. Returns
  1. ;
  1. ; 0 - Exact match not found
  1. ; 1 - Exact match found
  1. ;
  1. EN(LEXSCH,LEXVDT) ; Check "B" index for exact match
  1. Q:'$L(LEXSCH) 0
  1. N LEXLKGL,LEXEM,LEXEMC,LEXLKT S LEXLKT="AB",LEXLKGL=$G(^TMP("LEXSCH",$J,"GBL",0)),LEXEMC=0
  1. I $D(^TMP("LEXSCH",$J,"FMT",0)) S:'$D(LEXAFMT)!($G(LEXAFMT)'?1N) LEXAFMT=$G(^TMP("LEXSCH",$J,"FMT",0))
  1. Q:$G(LEXLKGL)'["757.01" 0
  1. D VDT^LEXU N LEXSHOW S LEXSHOW=$G(^TMP("LEXSCH",$J,"DIS",0))
  1. N LEXO,LEXE,LEXOK,LEXDES,LEXDSP
  1. S (LEXE,LEXOK)=0,LEXO=$$SCH(LEXSCH)
  1. F S LEXO=$O(^LEX(757.01,"B",LEXO)) Q:LEXO=""!(LEXSCH'[LEXO) D
  1. . S (LEXE,LEXOK)=0
  1. . F S LEXE=$O(^LEX(757.01,"B",LEXO,LEXE)) Q:+LEXE=0 D
  1. . . Q:'$D(LEXIGN)&(+($P($G(^LEX(757.01,LEXE,1)),"^",5))=1)
  1. . . I $$UP^XLFSTR(LEXSCH)=$$UP^XLFSTR($G(^LEX(757.01,LEXE,0))) D
  1. . . . S LEXEMC=+($G(LEXEMC)),LEXEMC=LEXEMC+1,LEXEM=LEXE
  1. S:+($G(LEXEMC))=1 LEXOK=$G(LEXEM) S:+($G(LEXEMC))'=1 LEXOK=0
  1. ; Exact Match Found
  1. I +LEXOK>0 D
  1. . N LEXFILR S LEXE=LEXOK
  1. . ; Filter
  1. . I $L($G(LEXFIL)),LEXE>0 S LEXFILR=$$EN^LEXAFIL($G(LEXFIL),LEXE) Q:LEXFILR=0
  1. . ; Deactivated
  1. . Q:'$D(LEXIGN)&(+($P($G(^LEX(757.01,LEXE,1)),"^",5))=1)
  1. . S LEXDES=$$DES(LEXE)
  1. . S LEXDSP="" S:$L($G(LEXSHOW)) LEXDSP=$$DSP(LEXE,$G(LEXSHOW),$G(LEXVDT))
  1. . D ADDE^LEXAL(LEXE,LEXDES,LEXDSP)
  1. . S ^TMP("LEXSCH",$J,"EXM",0)=LEXE
  1. . S ^TMP("LEXSCH",$J,"EXM",1)=$G(^LEX(757.01,+LEXE,0))
  1. . I '$D(^LEX(757,"B",LEXE)) D
  1. . . N LEXME,LEXM S LEXM=+($G(^LEX(757.01,LEXE,1))) Q:LEXM=0
  1. . . S LEXME=+($G(^LEX(757,LEXM,0))) Q:LEXM=0 Q:LEXE=LEXME
  1. . . I +($G(^LEX(757.01,LEXME,1)))=LEXM D
  1. . . . S LEXDES=$$DES(LEXME),LEXDSP="" S:$L($G(LEXSHOW)) LEXDSP=$$DSP(LEXE,$G(LEXSHOW),$G(LEXVDT))
  1. . . . D ADDEM^LEXAL(LEXME,LEXDES,LEXDSP)
  1. . . . S ^TMP("LEXSCH",$J,"EXC",0)=LEXME
  1. . . . S ^TMP("LEXSCH",$J,"EXC",1)=$G(^LEX(757.01,+LEXME,0))
  1. I $D(^TMP("LEXFND",$J)),'$D(^TMP("LEXSCH",$J,"SCH",0)) D BEG^LEXAL
  1. Q:$D(^TMP("LEXFND",$J)) 1
  1. Q 0
  1. DES(LEXX) ; Get description flag
  1. N LEXDES,LEXE,LEXM S LEXDES="",LEXE=+LEXX
  1. S LEXM=$P($G(^LEX(757.01,+($G(LEXX)),1)),"^",1)
  1. S LEXM=+($G(^LEX(757,+($G(LEXM)),0)))
  1. S:$D(^LEX(757.01,LEXM,3)) LEXDES="*"
  1. S LEXX=$G(LEXDES) Q LEXX
  1. TERM(LEXX) ; Get expression
  1. Q $G(^LEX(757.01,LEXX,0))
  1. DSP(X,Y,LEXVDT) ; Return displayable text
  1. N LEXX,LEXDSP,LEXMCE S LEXX=+($G(X)),LEXDSP=$G(Y),LEXMCE=+($G(^LEX(757,+($G(^LEX(757.01,LEXX,1))),0)))
  1. I +LEXMCE>0,$D(^LEX(757.01,+LEXMCE,0)) D Q X
  1. . I +($G(LEXAFMT))'>0 S X=$$SO^LEXASO(LEXX,LEXDSP,1,$G(LEXVDT)) Q
  1. . S X="" I +($G(LEXAFMT))>0 S X=$$SOA^LEXASO(LEXX,LEXDSP,1,$G(LEXVDT),.LEXSOA)
  1. S LEXX=$$SO^LEXASO(LEXX,LEXDSP,1,$G(LEXVDT))
  1. Q LEXX
  1. SCH(LEXX) ; Search for LEXX a $Orderable variable
  1. S LEXX=$$UP^XLFSTR($E(LEXX,1,63)) N LEXIGN
  1. S LEXX=$E(LEXX,1,($L(LEXX)-1))_$C($A($E(LEXX,$L(LEXX)))-1)_"~" Q LEXX