LEXQID4 ;ISL/KER - Query - ICD Diagnosis - Save ;05/23/2017
 ;;2.0;LEXICON UTILITY;**62,80,103**;Sep 23, 1996;Build 2
 ;               
 ; Global Variables
 ;    ^TMP("LEXQID")      SACC 2.3.2.5.1
 ;    ^TMP("LEXQIDO")     SACC 2.3.2.5.1
 ;               
 ; External References
 ;    $$UPDX^ICDEX        ICR   5747
 ;    $$VAGEH^ICDEXD      ICR   5747
 ;    $$VAGEL^ICDEXD      ICR   5747
 ;    $$VSEX^ICDEXD       ICR   5747
 ;    $$UP^XLFSTR         ICR  10104
 ;               
 ; Local Variables NEWed or KILLed in LEXQID
 ;    LEXIEN              ICD Internal Entry Number
 ;    LEXIIEN             Include IENs flag
 ;    LEXCDT              Code Set Date
 ;    LEXLEN              Offset Length
 ;    LEXST               ICD Status and Effective Dates
 ;    LEXSD               Versioned Short Description
 ;    LEXLD               Versioned Long Description
 ;    LEXLX               Versioned Lexicon Term
 ;    LEXWN               Warning
 ;    LEXCC               Code CC Status
 ;    LEXMC               Major Diagnostic Category
 ;    LEXELDT             External Last Date
 ;               
EN ; Main Entry Point
 K ^TMP("LEXQIDO",$J) Q:'$L($G(LEXELDT))  I +($G(LEXST))<0 D FUT D:$D(^TMP("LEXQIDO",$J)) DSP^LEXQO("LEXQIDO") Q
 D FUL D:$D(^TMP("LEXQIDO",$J)) DSP^LEXQO("LEXQIDO")
 Q
FUT ; Future Activation
 N LEX1,LEX2,LEX3,LEXEFF,LEXI,LEXL,LEXSTA S LEXI=+($G(LEXIEN)) Q:+LEXI'>0
 S LEXL=+($G(LEXLEN)) Q:+LEXL'>0  S:LEXL>62 LEXL=62
 Q:'$L($G(LEXSO))  Q:'$L($G(LEXNAM))  S LEXSTA=$G(LEXST)
 S LEXEFF=$P(LEXSTA,"^",5),LEXSTA=$P(LEXSTA,"^",4)
 Q:'$L(LEXSTA)  Q:'$L(LEXEFF)  S (LEX1,LEX2,LEX3)=""
 D BOD(LEXELDT),COD(LEXSO,LEXNAM,$G(LEXCDT),+($G(LEXL))),STA(.LEXST,+($G(LEXL)))
 Q
BOD(X) ;   Based on Date
 N LEXBOD S LEXBOD=$G(X),X="Display based on date:  "_LEXBOD D BL,TL(X)
 Q
COD(X,Y,LEXD,LEXLEN) ;   Code Line
 N LEXC,LEXN,LEXT,LEXIEN,LEXNAM S LEXC=$G(X),LEXN=$G(Y),LEXD=$G(LEXD),LEXIEN=$$CI(LEXC,LEXD)
 S LEXNAM=$P(LEXN," (IEN ",1) S:$D(LEXIIEN)&($L(LEXIEN)) LEXNAM=LEXIEN
 S LEXT="Code:  "_LEXC,LEXT=LEXT_$J(" ",((79-+($G(LEXLEN)))-$L(LEXT)))_LEXNAM D BL,TL(LEXT)
 Q
STA(X,LEXLEN) ;   Status Line
 N LEX,LEXC,LEXX,LEXE,LEXI,LEXN,LEXS,LEXT,LEXW,LEXEFF,LEXSTA
 S LEXX=$G(X),LEXSTA=$P(LEXX,"^",4),LEXEFF=$P(LEXX,"^",5)
 S LEXEFF=$TR(LEXEFF,"()",""),LEXW=$P(LEXX,"^",6)
 S LEXT="  Status:  ",LEXT=LEXT_$J(" ",((79-+($G(LEXLEN)))-$L(LEXT)))_LEXSTA
 S LEXT=LEXT_$J(" ",(35-$L(LEXT)))
 S:LEXEFF'["future" LEXT=LEXT_"Effective:  "
 S LEXT=LEXT_$$UP^XLFSTR($E(LEXEFF,1))_$E(LEXEFF,2,$L(LEXEFF)) D BL,TL(LEXT)
 I $L(LEXW) D
 . N LEX,LEXT,LEXC,LEXI,LEXN S LEX(1)=LEXW D PR^LEXU(.LEX,(LEXLEN-7))
 . Q:+($O(LEX(" "),-1))'>0  S LEXT=$J(" ",((79-+($G(LEXLEN)))))
 . S (LEXC,LEXI)=0 F  S LEXI=$O(LEX(LEXI)) Q:+LEXI'>0  D
 . . N LEXN S LEXN=$$TM^LEXQM($G(LEX(LEXI))) S:$L(LEXN) LEXC=LEXC+1
 . . D:LEXC=1 BL D TL((LEXT_LEXN))
 Q
FUL ; Full Display
 N LEXFUL,LEX,LEXL S LEXL=+($G(LEXLEN)) S:LEXL>62 LEXL=62
 S LEXFUL=""  D FUT
 D LIM(+($G(LEXIEN)),+($G(LEXL)))
 D SD(.LEXSD,+($G(LEXL)))
 D LD(.LEXLD,+($G(LEXL)))
 D LX(.LEXLX,+($G(LEXL)))
 D WN(.LEXWN,+($G(LEXL)))
 D:$L($G(LEXCC(1)))!($L($G(LEXMC(1)))) BL
 ;D CC(.LEXCC,+($G(LEXL)))
 ;D MC(.LEXMC,+($G(LEXL)))
 ;D DRG(+($G(LEXL)))
 ;D NOT(+($G(LEXL)))
 ;D REQ(+($G(LEXL)))
 ;D NCC(+($G(LEXL)))
 Q
LIM(X,LEXLEN) ;   Limitations - Age Low, Age High and Sex
 N LEXC,LEXI,LEXH,LEXL,LEXS,LEXT,LEXU,LEXP S LEXC=0,LEXI=+($G(X))
 S LEXL=$$VAGEL^ICDEX(+($G(LEXIEN)),$G(LEXCDT)) S:'$L(LEXL) LEXL="N/A"
 S LEXH=$$VAGEH^ICDEX(+($G(LEXIEN)),$G(LEXCDT)) S:'$L(LEXH) LEXH="N/A"
 S LEXS=$$VSEX^ICDEX(80,+($G(LEXIEN)),$G(LEXCDT))
 S LEXS=$S(LEXS="M":"Male",LEXS="F":"Female",1:"") S:'$L(LEXS) LEXS="N/A"
 S LEXU=$$UPDX^ICDEX(+($G(LEXIEN))) S:'$L(LEXU)!(LEXU=0) LEXU="N/A"
 I (LEXH_LEXL_LEXS+LEXU)'="N/AN/AN/AN/A" D
 . N LEXLDR S LEXLDR="  Limitations: ",LEXC=0
 . I LEXL'="N/A" D
 . . S LEXT="" S LEXT=LEXLDR_$J(" ",((79-+($G(LEXLEN)))-$L(LEXLDR)))_"Minimum Age:   "_LEXL
 . . S LEXLDR="               " I $L(LEXT) D BL,TL(LEXT) S LEXC=1
 . I LEXH'="N/A" D
 . . S LEXT="" S LEXT=LEXLDR_$J(" ",((79-+($G(LEXLEN)))-$L(LEXLDR)))_"Maximum Age:   "_LEXH
 . . S LEXLDR="               " I $L(LEXT) D:'LEXC BL D TL(LEXT) S LEXC=1
 . I LEXS'="N/A" D
 . . S LEXT="" S LEXT=LEXLDR_$J(" ",((79-+($G(LEXLEN)))-$L(LEXLDR)))_"Applies to:    "_LEXS_" patients"
 . . S LEXLDR="               " I $L(LEXT) D:'LEXC BL D TL(LEXT) S LEXC=1
 . I LEXU'="N/A" D
 . . S LEXT="" S LEXT=LEXLDR_$J(" ",((79-+($G(LEXLEN)))-$L(LEXLDR)))_"Principle DX:  "_"Code is unacceptable as a principal DX"
 . . S LEXLDR="               " I $L(LEXT) D:'LEXC BL D TL(LEXT) S LEXC=1
 Q
SD(X,LEXLEN) ;   Short Description
 N LEXI,LEXH,LEXE,LEXN,LEXT Q:'$D(X(1))  S LEXN=$G(X(1)),LEXT="  Short Name: ",LEXT=LEXT_$J(" ",((79-+($G(LEXLEN)))-$L(LEXT)))_LEXN D BL,TL(LEXT)
 S LEXE=$G(X(0)),LEXT="    "_LEXE,LEXN=$G(X(2)),LEXT=LEXT_$J(" ",((79-+($G(LEXLEN)))-$L(LEXT)))_LEXN D TL(LEXT)
 Q
LD(X,LEXLEN) ;   Long Description
 N LEXI,LEXH,LEXE,LEXN,LEXT Q:'$D(X(1))  S LEXN=$G(X(1)),LEXT="  Description: ",LEXT=LEXT_$J(" ",((79-+($G(LEXLEN)))-$L(LEXT)))_LEXN D BL,TL(LEXT)
 S LEXE=$G(X(0)),LEXT="    "_LEXE,LEXN=$G(X(2)),LEXT=LEXT_$J(" ",((79-+($G(LEXLEN)))-$L(LEXT)))_LEXN D TL(LEXT)
 S LEXT=$J(" ",((79-+($G(LEXLEN))))) S LEXI=2 F  S LEXI=$O(X(LEXI)) Q:+LEXI'>0  S LEXN=LEXT_$G(X(LEXI)) D TL(LEXN)
 Q
LX(X,LEXLEN) ;   Lexicon Expression
 N LEXI,LEXH,LEXE,LEXN,LEXT Q:'$D(X(1))  S LEXN=$G(X(1)),LEXT="  Lexicon Term:",LEXT=LEXT_$J(" ",((79-+($G(LEXLEN)))-$L(LEXT)))_LEXN D BL,TL(LEXT)
 S LEXE=$G(X(0)),LEXT="    "_LEXE,LEXN=$G(X(2)),LEXT=LEXT_$J(" ",((79-+($G(LEXLEN)))-$L(LEXT)))_LEXN D TL(LEXT)
 S LEXT=$J(" ",((79-+($G(LEXLEN))))),LEXI=2 F  S LEXI=$O(X(LEXI)) Q:+LEXI'>0  S LEXN=LEXT_$G(X(LEXI)) D TL(LEXN)
 Q
WN(X,LEXLEN) ;   Warning
 N LEXI,LEXH,LEXE,LEXN,LEXT,LEXC Q:'$D(X(1))  S LEXC=0,LEXN=$G(X(1)),LEXT="",LEXT=LEXT_$J(" ",((79-+($G(LEXLEN)))-$L(LEXT)))_LEXN D BL,TL(LEXT)
 S LEXT=$J(" ",((79-+($G(LEXLEN))))),LEXI=1 F  S LEXI=$O(X(LEXI)) Q:+LEXI'>0  S LEXN=LEXT_$G(X(LEXI)) D TL(LEXN)
 Q
CC(X,LEXLEN) ;   Complication/Comorbidity
 Q
 N LEXI,LEXH,LEXE,LEXN,LEXT Q:'$D(X(1))  S LEXN=$G(X(1)),LEXE=$G(X(0)),LEXT="  CC:",LEXT=LEXT_$J(" ",((79-+($G(LEXLEN)))-$L(LEXT)))_LEXN
 S LEXT=LEXT_$J(" ",(66-$L(LEXT)))_LEXE D TL(LEXT)
 Q
MC(X,LEXLEN) ;   Major Diagnostic Category
 Q
 N LEXI,LEXH,LEXE,LEXN,LEXT Q:'$D(X(1))  S LEXN=$G(X(1)),LEXE=$G(X(0)),LEXT="  MDC:",LEXT=LEXT_$J(" ",((79-+($G(LEXLEN)))-$L(LEXT)))_LEXN
 S LEXT=LEXT_$J(" ",(66-$L(LEXT)))_LEXE D TL(LEXT)
 Q
DRG(LEXLEN) ;   Diagnosis Related Groups
 Q
 Q:$O(^TMP("LEXQID",$J,"DRG",3,0))'>0  Q:'$D(^TMP("LEXQID",$J,"DRG",3,1))  Q:'$D(^TMP("LEXQID",$J,"DRG",1,1))
 Q:'$D(^TMP("LEXQID",$J,"DRG",1,2))  Q:'$D(^TMP("LEXQID",$J,"DRG",2,1))  N LEXI,LEXH,LEXE,LEXN,LEXT
 S LEXT="  "_$G(^TMP("LEXQID",$J,"DRG",1,1))_":",LEXN=$G(^TMP("LEXQID",$J,"DRG",2,1)) S LEXT=LEXT_$J(" ",((79-+($G(LEXLEN)))-$L(LEXT)))_LEXN D BL,TL(LEXT)
 S LEXE=$G(^TMP("LEXQID",$J,"DRG",1,2)),LEXT="    "_LEXE,LEXN=$G(^TMP("LEXQID",$J,"DRG",3,1)) S LEXT=LEXT_$J(" ",((79-+($G(LEXLEN)))-$L(LEXT)))_LEXN D TL(LEXT)
 S LEXT=$J(" ",((79-+($G(LEXLEN))))),LEXI=1 F  S LEXI=$O(^TMP("LEXQID",$J,"DRG",3,LEXI)) Q:+LEXI'>0  D
 . S LEXN=LEXT_$G(^TMP("LEXQID",$J,"DRG",3,LEXI)) D TL(LEXN)
 K ^TMP("LEXQID",$J,"DRG")
 Q
NOT(LEXLEN) ;   ICD codes not used with
 Q
 Q:'$L($O(^TMP("LEXQID",$J,"NOT",3,"")))  Q:'$D(^TMP("LEXQID",$J,"NOT",1,1))  Q:'$D(^TMP("LEXQID",$J,"NOT",2,1))
 N LEXI,LEXH,LEXE,LEXN,LEXT S LEXT="  "_$G(^TMP("LEXQID",$J,"NOT",1,1))_":",LEXN=$G(^TMP("LEXQID",$J,"NOT",2,1))
 S LEXT=LEXT_$J(" ",((79-+($G(LEXLEN)))-$L(LEXT)))_LEXN D BL,TL(LEXT)
 S LEXT=$J(" ",((79-+($G(LEXLEN))))),LEXN=$$TM^LEXQM($G(^TMP("LEXQID",$J,"NOT",2,2))) I $L(LEXN) D TL((LEXT_LEXN))
 S LEXI=" " F  S LEXI=$O(^TMP("LEXQID",$J,"NOT",3,LEXI)) Q:'$L(LEXI)  D
 . S LEXN=$G(^TMP("LEXQID",$J,"NOT",3,LEXI)) I $L(LEXN)'>62 D TL((LEXT_LEXN)) Q
 . N LEXC,LEXD,LEXA,LEXS,LEXI,LEXLEN S LEXLEN=50,LEXD=$$TM^LEXQM($P(LEXN," ",2,4000)) Q:'$L(LEXD)
 . S LEXC=$P(LEXN,LEXD,1) Q:'$L(LEXC)  S LEXS=$L(LEXC)  K LEXA S LEXA(1)=LEXD D PR^LEXU(.LEXA,LEXLEN)
 . F LEXI=1:1:3 D
 . . D:$L($G(LEXA(LEXI))) TL((LEXT_LEXC_$G(LEXA(LEXI)))) S LEXC=$J(" ",LEXS)
 K ^TMP("LEXQID",$J,"NOT")
 Q
REQ(LEXLEN) ;   ICD codes requried with
 Q
 Q:'$L($O(^TMP("LEXQID",$J,"REQ",3,"")))  Q:'$D(^TMP("LEXQID",$J,"REQ",1,1))  Q:'$D(^TMP("LEXQID",$J,"REQ",2,1))
 N LEXI,LEXH,LEXE,LEXN,LEXT S LEXT="  "_$G(^TMP("LEXQID",$J,"REQ",1,1))_":",LEXN=$G(^TMP("LEXQID",$J,"REQ",2,1))
 S LEXT=LEXT_$J(" ",((79-+($G(LEXLEN)))-$L(LEXT)))_LEXN D BL,TL(LEXT)
 S LEXT=$J(" ",((79-+($G(LEXLEN))))),LEXN=$$TM^LEXQM($G(^TMP("LEXQID",$J,"REQ",2,2))) I $L(LEXN) D TL((LEXT_LEXN))
 S LEXI=" " F  S LEXI=$O(^TMP("LEXQID",$J,"REQ",3,LEXI)) Q:'$L(LEXI)  D
 . S LEXN=$G(^TMP("LEXQID",$J,"REQ",3,LEXI)) I $L(LEXN)'>62 D TL((LEXT_LEXN)) Q
 . N LEXC,LEXD,LEXA,LEXS,LEXI,LEXLEN S LEXLEN=50,LEXD=$$TM^LEXQM($P(LEXN," ",2,4000)) Q:'$L(LEXD)
 . S LEXC=$P(LEXN,LEXD,1) Q:'$L(LEXC)  S LEXS=$L(LEXC)  K LEXA S LEXA(1)=LEXD D PR^LEXU(.LEXA,LEXLEN)
 . F LEXI=1:1:3 D
 . . D:$L($G(LEXA(LEXI))) TL((LEXT_LEXC_$G(LEXA(LEXI)))) S LEXC=$J(" ",LEXS)
 K ^TMP("LEXQID",$J,"REQ")
 Q
NCC(LEXLEN) ;   Not CC with
 Q
 Q:'$L($O(^TMP("LEXQID",$J,"NCC",3,"")))  Q:'$D(^TMP("LEXQID",$J,"NCC",1,1))  Q:'$D(^TMP("LEXQID",$J,"NCC",2,1))
 N LEXI,LEXH,LEXE,LEXN,LEXT S LEXT="  "_$G(^TMP("LEXQID",$J,"NCC",1,1))_":",LEXN=$G(^TMP("LEXQID",$J,"NCC",2,1))
 S LEXT=LEXT_$J(" ",((79-+($G(LEXLEN)))-$L(LEXT)))_LEXN D BL,TL(LEXT)
 S LEXT=$J(" ",((79-+($G(LEXLEN))))),LEXN=$$TM^LEXQM($G(^TMP("LEXQID",$J,"NCC",2,2))) I $L(LEXN) D TL((LEXT_LEXN))
 S LEXI=" " F  S LEXI=$O(^TMP("LEXQID",$J,"NCC",3,LEXI)) Q:'$L(LEXI)  D
 . S LEXN=$G(^TMP("LEXQID",$J,"NCC",3,LEXI)) I $L(LEXN)'>62 D TL((LEXT_LEXN)) Q
 . N LEXC,LEXD,LEXA,LEXS,LEXI,LEXLEN S LEXLEN=50,LEXD=$$TM^LEXQM($P(LEXN," ",2,4000)) Q:'$L(LEXD)
 . S LEXC=$P(LEXN,LEXD,1) Q:'$L(LEXC)  S LEXS=$L(LEXC) K LEXA S LEXA(1)=LEXD D PR^LEXU(.LEXA,LEXLEN)
 . F LEXI=1:1:3 D
 . . D:$L($G(LEXA(LEXI))) TL((LEXT_LEXC_$G(LEXA(LEXI)))) S LEXC=$J(" ",LEXS)
 K ^TMP("LEXQID",$J,"NCC")
 Q
 ;
 ; Miscellaneous
CI(X,LEXD) ;   Code IENs
 N LEXSO,LEXSDO,LEXLEX,LEXSAB S LEXSO=$G(X) Q:'$L(LEXSO)  S LEXD=$G(LEXD) I LEXD'?7N D
 . N LEXEF,LEXTD S LEXTD="",LEXEF=9999999 F  S LEXEF=$O(^LEX(757.02,"ACT",(LEXSO_" "),3,LEXEF),-1) Q:+LEXEF'>0  D
 . . N LEXIE S LEXIE=$O(^LEX(757.02," "),-1) F  S LEXIE=$O(^LEX(757.02,"ACT",(LEXSO_" "),3,+LEXEF,LEXIE),-1) Q:+LEXIE'>0  D
 . . . N LEXSR S LEXSR=$P($G(^LEX(757.02,+LEXIE,0)),"^",3) S:"^1^30^"[("^"_LEXSR_"^") LEXTD=LEXEF
 . S:LEXTD?7N LEXD=LEXTD
 S:LEXD'?7N LEXD=$$DT^XLFDT S LEXSDO=$O(^ICD9("BA",(LEXSO_" "),0)),LEXSAB=+($G(^ICD9(+LEXSDO,1))),LEXSAB=$S(LEXSAB=1:"ICD",1:"10D")
 S LEXLEX=$$STATCHK^LEXSRC2(LEXSO,LEXD,,LEXSAB),LEXLEX=$P(LEXLEX,"^",2)
 S LEXSDO=$S(+LEXSDO>0:("ICD Diagnosis IEN "_+LEXSDO),1:"") S LEXLEX=$S(+LEXLEX>0:("Lexicon IEN "_+LEXLEX),1:"")
 S X="" S:$L(LEXSDO)&('$L(LEXLEX)) X=LEXSDO S:'$L(LEXSDO)&($L(LEXLEX)) X=LEXLEX S:$L(LEXSDO)&($L(LEXLEX)) X=(LEXSDO_"/"_LEXLEX)
 Q X
BL ;   Blank Line
 D TL(" ") Q
TL(X) ;   Text Line
 I $D(LEXTEST) W !,$G(X) Q
 N LEXI,LEXTEST S LEXI=+($O(^TMP("LEXQIDO",$J," "),-1))+1 S ^TMP("LEXQIDO",$J,LEXI)=$G(X),^TMP("LEXQIDO",$J,0)=LEXI
 Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HLEXQID4   11338     printed  Sep 23, 2025@19:44:41                                                                                                                                                                                                    Page 2
LEXQID4   ;ISL/KER - Query - ICD Diagnosis - Save ;05/23/2017
 +1       ;;2.0;LEXICON UTILITY;**62,80,103**;Sep 23, 1996;Build 2
 +2       ;               
 +3       ; Global Variables
 +4       ;    ^TMP("LEXQID")      SACC 2.3.2.5.1
 +5       ;    ^TMP("LEXQIDO")     SACC 2.3.2.5.1
 +6       ;               
 +7       ; External References
 +8       ;    $$UPDX^ICDEX        ICR   5747
 +9       ;    $$VAGEH^ICDEXD      ICR   5747
 +10      ;    $$VAGEL^ICDEXD      ICR   5747
 +11      ;    $$VSEX^ICDEXD       ICR   5747
 +12      ;    $$UP^XLFSTR         ICR  10104
 +13      ;               
 +14      ; Local Variables NEWed or KILLed in LEXQID
 +15      ;    LEXIEN              ICD Internal Entry Number
 +16      ;    LEXIIEN             Include IENs flag
 +17      ;    LEXCDT              Code Set Date
 +18      ;    LEXLEN              Offset Length
 +19      ;    LEXST               ICD Status and Effective Dates
 +20      ;    LEXSD               Versioned Short Description
 +21      ;    LEXLD               Versioned Long Description
 +22      ;    LEXLX               Versioned Lexicon Term
 +23      ;    LEXWN               Warning
 +24      ;    LEXCC               Code CC Status
 +25      ;    LEXMC               Major Diagnostic Category
 +26      ;    LEXELDT             External Last Date
 +27      ;               
EN        ; Main Entry Point
 +1        KILL ^TMP("LEXQIDO",$JOB)
           if '$LENGTH($GET(LEXELDT))
               QUIT 
           IF +($GET(LEXST))<0
               DO FUT
               if $DATA(^TMP("LEXQIDO",$JOB))
                   DO DSP^LEXQO("LEXQIDO")
               QUIT 
 +2        DO FUL
           if $DATA(^TMP("LEXQIDO",$JOB))
               DO DSP^LEXQO("LEXQIDO")
 +3        QUIT 
FUT       ; Future Activation
 +1        NEW LEX1,LEX2,LEX3,LEXEFF,LEXI,LEXL,LEXSTA
           SET LEXI=+($GET(LEXIEN))
           if +LEXI'>0
               QUIT 
 +2        SET LEXL=+($GET(LEXLEN))
           if +LEXL'>0
               QUIT 
           if LEXL>62
               SET LEXL=62
 +3        if '$LENGTH($GET(LEXSO))
               QUIT 
           if '$LENGTH($GET(LEXNAM))
               QUIT 
           SET LEXSTA=$GET(LEXST)
 +4        SET LEXEFF=$PIECE(LEXSTA,"^",5)
           SET LEXSTA=$PIECE(LEXSTA,"^",4)
 +5        if '$LENGTH(LEXSTA)
               QUIT 
           if '$LENGTH(LEXEFF)
               QUIT 
           SET (LEX1,LEX2,LEX3)=""
 +6        DO BOD(LEXELDT)
           DO COD(LEXSO,LEXNAM,$GET(LEXCDT),+($GET(LEXL)))
           DO STA(.LEXST,+($GET(LEXL)))
 +7        QUIT 
BOD(X)    ;   Based on Date
 +1        NEW LEXBOD
           SET LEXBOD=$GET(X)
           SET X="Display based on date:  "_LEXBOD
           DO BL
           DO TL(X)
 +2        QUIT 
COD(X,Y,LEXD,LEXLEN) ;   Code Line
 +1        NEW LEXC,LEXN,LEXT,LEXIEN,LEXNAM
           SET LEXC=$GET(X)
           SET LEXN=$GET(Y)
           SET LEXD=$GET(LEXD)
           SET LEXIEN=$$CI(LEXC,LEXD)
 +2        SET LEXNAM=$PIECE(LEXN," (IEN ",1)
           if $DATA(LEXIIEN)&($LENGTH(LEXIEN))
               SET LEXNAM=LEXIEN
 +3        SET LEXT="Code:  "_LEXC
           SET LEXT=LEXT_$JUSTIFY(" ",((79-+($GET(LEXLEN)))-$LENGTH(LEXT)))_LEXNAM
           DO BL
           DO TL(LEXT)
 +4        QUIT 
STA(X,LEXLEN) ;   Status Line
 +1        NEW LEX,LEXC,LEXX,LEXE,LEXI,LEXN,LEXS,LEXT,LEXW,LEXEFF,LEXSTA
 +2        SET LEXX=$GET(X)
           SET LEXSTA=$PIECE(LEXX,"^",4)
           SET LEXEFF=$PIECE(LEXX,"^",5)
 +3        SET LEXEFF=$TRANSLATE(LEXEFF,"()","")
           SET LEXW=$PIECE(LEXX,"^",6)
 +4        SET LEXT="  Status:  "
           SET LEXT=LEXT_$JUSTIFY(" ",((79-+($GET(LEXLEN)))-$LENGTH(LEXT)))_LEXSTA
 +5        SET LEXT=LEXT_$JUSTIFY(" ",(35-$LENGTH(LEXT)))
 +6        if LEXEFF'["future"
               SET LEXT=LEXT_"Effective:  "
 +7        SET LEXT=LEXT_$$UP^XLFSTR($EXTRACT(LEXEFF,1))_$EXTRACT(LEXEFF,2,$LENGTH(LEXEFF))
           DO BL
           DO TL(LEXT)
 +8        IF $LENGTH(LEXW)
               Begin DoDot:1
 +9                NEW LEX,LEXT,LEXC,LEXI,LEXN
                   SET LEX(1)=LEXW
                   DO PR^LEXU(.LEX,(LEXLEN-7))
 +10               if +($ORDER(LEX(" "),-1))'>0
                       QUIT 
                   SET LEXT=$JUSTIFY(" ",((79-+($GET(LEXLEN)))))
 +11               SET (LEXC,LEXI)=0
                   FOR 
                       SET LEXI=$ORDER(LEX(LEXI))
                       if +LEXI'>0
                           QUIT 
                       Begin DoDot:2
 +12                       NEW LEXN
                           SET LEXN=$$TM^LEXQM($GET(LEX(LEXI)))
                           if $LENGTH(LEXN)
                               SET LEXC=LEXC+1
 +13                       if LEXC=1
                               DO BL
                           DO TL((LEXT_LEXN))
                       End DoDot:2
               End DoDot:1
 +14       QUIT 
FUL       ; Full Display
 +1        NEW LEXFUL,LEX,LEXL
           SET LEXL=+($GET(LEXLEN))
           if LEXL>62
               SET LEXL=62
 +2        SET LEXFUL=""
           DO FUT
 +3        DO LIM(+($GET(LEXIEN)),+($GET(LEXL)))
 +4        DO SD(.LEXSD,+($GET(LEXL)))
 +5        DO LD(.LEXLD,+($GET(LEXL)))
 +6        DO LX(.LEXLX,+($GET(LEXL)))
 +7        DO WN(.LEXWN,+($GET(LEXL)))
 +8        if $LENGTH($GET(LEXCC(1)))!($LENGTH($GET(LEXMC(1))))
               DO BL
 +9       ;D CC(.LEXCC,+($G(LEXL)))
 +10      ;D MC(.LEXMC,+($G(LEXL)))
 +11      ;D DRG(+($G(LEXL)))
 +12      ;D NOT(+($G(LEXL)))
 +13      ;D REQ(+($G(LEXL)))
 +14      ;D NCC(+($G(LEXL)))
 +15       QUIT 
LIM(X,LEXLEN) ;   Limitations - Age Low, Age High and Sex
 +1        NEW LEXC,LEXI,LEXH,LEXL,LEXS,LEXT,LEXU,LEXP
           SET LEXC=0
           SET LEXI=+($GET(X))
 +2        SET LEXL=$$VAGEL^ICDEX(+($GET(LEXIEN)),$GET(LEXCDT))
           if '$LENGTH(LEXL)
               SET LEXL="N/A"
 +3        SET LEXH=$$VAGEH^ICDEX(+($GET(LEXIEN)),$GET(LEXCDT))
           if '$LENGTH(LEXH)
               SET LEXH="N/A"
 +4        SET LEXS=$$VSEX^ICDEX(80,+($GET(LEXIEN)),$GET(LEXCDT))
 +5        SET LEXS=$SELECT(LEXS="M":"Male",LEXS="F":"Female",1:"")
           if '$LENGTH(LEXS)
               SET LEXS="N/A"
 +6        SET LEXU=$$UPDX^ICDEX(+($GET(LEXIEN)))
           if '$LENGTH(LEXU)!(LEXU=0)
               SET LEXU="N/A"
 +7        IF (LEXH_LEXL_LEXS+LEXU)'="N/AN/AN/AN/A"
               Begin DoDot:1
 +8                NEW LEXLDR
                   SET LEXLDR="  Limitations: "
                   SET LEXC=0
 +9                IF LEXL'="N/A"
                       Begin DoDot:2
 +10                       SET LEXT=""
                           SET LEXT=LEXLDR_$JUSTIFY(" ",((79-+($GET(LEXLEN)))-$LENGTH(LEXLDR)))_"Minimum Age:   "_LEXL
 +11                       SET LEXLDR="               "
                           IF $LENGTH(LEXT)
                               DO BL
                               DO TL(LEXT)
                               SET LEXC=1
                       End DoDot:2
 +12               IF LEXH'="N/A"
                       Begin DoDot:2
 +13                       SET LEXT=""
                           SET LEXT=LEXLDR_$JUSTIFY(" ",((79-+($GET(LEXLEN)))-$LENGTH(LEXLDR)))_"Maximum Age:   "_LEXH
 +14                       SET LEXLDR="               "
                           IF $LENGTH(LEXT)
                               if 'LEXC
                                   DO BL
                               DO TL(LEXT)
                               SET LEXC=1
                       End DoDot:2
 +15               IF LEXS'="N/A"
                       Begin DoDot:2
 +16                       SET LEXT=""
                           SET LEXT=LEXLDR_$JUSTIFY(" ",((79-+($GET(LEXLEN)))-$LENGTH(LEXLDR)))_"Applies to:    "_LEXS_" patients"
 +17                       SET LEXLDR="               "
                           IF $LENGTH(LEXT)
                               if 'LEXC
                                   DO BL
                               DO TL(LEXT)
                               SET LEXC=1
                       End DoDot:2
 +18               IF LEXU'="N/A"
                       Begin DoDot:2
 +19                       SET LEXT=""
                           SET LEXT=LEXLDR_$JUSTIFY(" ",((79-+($GET(LEXLEN)))-$LENGTH(LEXLDR)))_"Principle DX:  "_"Code is unacceptable as a principal DX"
 +20                       SET LEXLDR="               "
                           IF $LENGTH(LEXT)
                               if 'LEXC
                                   DO BL
                               DO TL(LEXT)
                               SET LEXC=1
                       End DoDot:2
               End DoDot:1
 +21       QUIT 
SD(X,LEXLEN) ;   Short Description
 +1        NEW LEXI,LEXH,LEXE,LEXN,LEXT
           if '$DATA(X(1))
               QUIT 
           SET LEXN=$GET(X(1))
           SET LEXT="  Short Name: "
           SET LEXT=LEXT_$JUSTIFY(" ",((79-+($GET(LEXLEN)))-$LENGTH(LEXT)))_LEXN
           DO BL
           DO TL(LEXT)
 +2        SET LEXE=$GET(X(0))
           SET LEXT="    "_LEXE
           SET LEXN=$GET(X(2))
           SET LEXT=LEXT_$JUSTIFY(" ",((79-+($GET(LEXLEN)))-$LENGTH(LEXT)))_LEXN
           DO TL(LEXT)
 +3        QUIT 
LD(X,LEXLEN) ;   Long Description
 +1        NEW LEXI,LEXH,LEXE,LEXN,LEXT
           if '$DATA(X(1))
               QUIT 
           SET LEXN=$GET(X(1))
           SET LEXT="  Description: "
           SET LEXT=LEXT_$JUSTIFY(" ",((79-+($GET(LEXLEN)))-$LENGTH(LEXT)))_LEXN
           DO BL
           DO TL(LEXT)
 +2        SET LEXE=$GET(X(0))
           SET LEXT="    "_LEXE
           SET LEXN=$GET(X(2))
           SET LEXT=LEXT_$JUSTIFY(" ",((79-+($GET(LEXLEN)))-$LENGTH(LEXT)))_LEXN
           DO TL(LEXT)
 +3        SET LEXT=$JUSTIFY(" ",((79-+($GET(LEXLEN)))))
           SET LEXI=2
           FOR 
               SET LEXI=$ORDER(X(LEXI))
               if +LEXI'>0
                   QUIT 
               SET LEXN=LEXT_$GET(X(LEXI))
               DO TL(LEXN)
 +4        QUIT 
LX(X,LEXLEN) ;   Lexicon Expression
 +1        NEW LEXI,LEXH,LEXE,LEXN,LEXT
           if '$DATA(X(1))
               QUIT 
           SET LEXN=$GET(X(1))
           SET LEXT="  Lexicon Term:"
           SET LEXT=LEXT_$JUSTIFY(" ",((79-+($GET(LEXLEN)))-$LENGTH(LEXT)))_LEXN
           DO BL
           DO TL(LEXT)
 +2        SET LEXE=$GET(X(0))
           SET LEXT="    "_LEXE
           SET LEXN=$GET(X(2))
           SET LEXT=LEXT_$JUSTIFY(" ",((79-+($GET(LEXLEN)))-$LENGTH(LEXT)))_LEXN
           DO TL(LEXT)
 +3        SET LEXT=$JUSTIFY(" ",((79-+($GET(LEXLEN)))))
           SET LEXI=2
           FOR 
               SET LEXI=$ORDER(X(LEXI))
               if +LEXI'>0
                   QUIT 
               SET LEXN=LEXT_$GET(X(LEXI))
               DO TL(LEXN)
 +4        QUIT 
WN(X,LEXLEN) ;   Warning
 +1        NEW LEXI,LEXH,LEXE,LEXN,LEXT,LEXC
           if '$DATA(X(1))
               QUIT 
           SET LEXC=0
           SET LEXN=$GET(X(1))
           SET LEXT=""
           SET LEXT=LEXT_$JUSTIFY(" ",((79-+($GET(LEXLEN)))-$LENGTH(LEXT)))_LEXN
           DO BL
           DO TL(LEXT)
 +2        SET LEXT=$JUSTIFY(" ",((79-+($GET(LEXLEN)))))
           SET LEXI=1
           FOR 
               SET LEXI=$ORDER(X(LEXI))
               if +LEXI'>0
                   QUIT 
               SET LEXN=LEXT_$GET(X(LEXI))
               DO TL(LEXN)
 +3        QUIT 
CC(X,LEXLEN) ;   Complication/Comorbidity
 +1        QUIT 
 +2        NEW LEXI,LEXH,LEXE,LEXN,LEXT
           if '$DATA(X(1))
               QUIT 
           SET LEXN=$GET(X(1))
           SET LEXE=$GET(X(0))
           SET LEXT="  CC:"
           SET LEXT=LEXT_$JUSTIFY(" ",((79-+($GET(LEXLEN)))-$LENGTH(LEXT)))_LEXN
 +3        SET LEXT=LEXT_$JUSTIFY(" ",(66-$LENGTH(LEXT)))_LEXE
           DO TL(LEXT)
 +4        QUIT 
MC(X,LEXLEN) ;   Major Diagnostic Category
 +1        QUIT 
 +2        NEW LEXI,LEXH,LEXE,LEXN,LEXT
           if '$DATA(X(1))
               QUIT 
           SET LEXN=$GET(X(1))
           SET LEXE=$GET(X(0))
           SET LEXT="  MDC:"
           SET LEXT=LEXT_$JUSTIFY(" ",((79-+($GET(LEXLEN)))-$LENGTH(LEXT)))_LEXN
 +3        SET LEXT=LEXT_$JUSTIFY(" ",(66-$LENGTH(LEXT)))_LEXE
           DO TL(LEXT)
 +4        QUIT 
DRG(LEXLEN) ;   Diagnosis Related Groups
 +1        QUIT 
 +2        if $ORDER(^TMP("LEXQID",$JOB,"DRG",3,0))'>0
               QUIT 
           if '$DATA(^TMP("LEXQID",$JOB,"DRG",3,1))
               QUIT 
           if '$DATA(^TMP("LEXQID",$JOB,"DRG",1,1))
               QUIT 
 +3        if '$DATA(^TMP("LEXQID",$JOB,"DRG",1,2))
               QUIT 
           if '$DATA(^TMP("LEXQID",$JOB,"DRG",2,1))
               QUIT 
           NEW LEXI,LEXH,LEXE,LEXN,LEXT
 +4        SET LEXT="  "_$GET(^TMP("LEXQID",$JOB,"DRG",1,1))_":"
           SET LEXN=$GET(^TMP("LEXQID",$JOB,"DRG",2,1))
           SET LEXT=LEXT_$JUSTIFY(" ",((79-+($GET(LEXLEN)))-$LENGTH(LEXT)))_LEXN
           DO BL
           DO TL(LEXT)
 +5        SET LEXE=$GET(^TMP("LEXQID",$JOB,"DRG",1,2))
           SET LEXT="    "_LEXE
           SET LEXN=$GET(^TMP("LEXQID",$JOB,"DRG",3,1))
           SET LEXT=LEXT_$JUSTIFY(" ",((79-+($GET(LEXLEN)))-$LENGTH(LEXT)))_LEXN
           DO TL(LEXT)
 +6        SET LEXT=$JUSTIFY(" ",((79-+($GET(LEXLEN)))))
           SET LEXI=1
           FOR 
               SET LEXI=$ORDER(^TMP("LEXQID",$JOB,"DRG",3,LEXI))
               if +LEXI'>0
                   QUIT 
               Begin DoDot:1
 +7                SET LEXN=LEXT_$GET(^TMP("LEXQID",$JOB,"DRG",3,LEXI))
                   DO TL(LEXN)
               End DoDot:1
 +8        KILL ^TMP("LEXQID",$JOB,"DRG")
 +9        QUIT 
NOT(LEXLEN) ;   ICD codes not used with
 +1        QUIT 
 +2        if '$LENGTH($ORDER(^TMP("LEXQID",$JOB,"NOT",3,"")))
               QUIT 
           if '$DATA(^TMP("LEXQID",$JOB,"NOT",1,1))
               QUIT 
           if '$DATA(^TMP("LEXQID",$JOB,"NOT",2,1))
               QUIT 
 +3        NEW LEXI,LEXH,LEXE,LEXN,LEXT
           SET LEXT="  "_$GET(^TMP("LEXQID",$JOB,"NOT",1,1))_":"
           SET LEXN=$GET(^TMP("LEXQID",$JOB,"NOT",2,1))
 +4        SET LEXT=LEXT_$JUSTIFY(" ",((79-+($GET(LEXLEN)))-$LENGTH(LEXT)))_LEXN
           DO BL
           DO TL(LEXT)
 +5        SET LEXT=$JUSTIFY(" ",((79-+($GET(LEXLEN)))))
           SET LEXN=$$TM^LEXQM($GET(^TMP("LEXQID",$JOB,"NOT",2,2)))
           IF $LENGTH(LEXN)
               DO TL((LEXT_LEXN))
 +6        SET LEXI=" "
           FOR 
               SET LEXI=$ORDER(^TMP("LEXQID",$JOB,"NOT",3,LEXI))
               if '$LENGTH(LEXI)
                   QUIT 
               Begin DoDot:1
 +7                SET LEXN=$GET(^TMP("LEXQID",$JOB,"NOT",3,LEXI))
                   IF $LENGTH(LEXN)'>62
                       DO TL((LEXT_LEXN))
                       QUIT 
 +8                NEW LEXC,LEXD,LEXA,LEXS,LEXI,LEXLEN
                   SET LEXLEN=50
                   SET LEXD=$$TM^LEXQM($PIECE(LEXN," ",2,4000))
                   if '$LENGTH(LEXD)
                       QUIT 
 +9                SET LEXC=$PIECE(LEXN,LEXD,1)
                   if '$LENGTH(LEXC)
                       QUIT 
                   SET LEXS=$LENGTH(LEXC)
                   KILL LEXA
                   SET LEXA(1)=LEXD
                   DO PR^LEXU(.LEXA,LEXLEN)
 +10               FOR LEXI=1:1:3
                       Begin DoDot:2
 +11                       if $LENGTH($GET(LEXA(LEXI)))
                               DO TL((LEXT_LEXC_$GET(LEXA(LEXI))))
                           SET LEXC=$JUSTIFY(" ",LEXS)
                       End DoDot:2
               End DoDot:1
 +12       KILL ^TMP("LEXQID",$JOB,"NOT")
 +13       QUIT 
REQ(LEXLEN) ;   ICD codes requried with
 +1        QUIT 
 +2        if '$LENGTH($ORDER(^TMP("LEXQID",$JOB,"REQ",3,"")))
               QUIT 
           if '$DATA(^TMP("LEXQID",$JOB,"REQ",1,1))
               QUIT 
           if '$DATA(^TMP("LEXQID",$JOB,"REQ",2,1))
               QUIT 
 +3        NEW LEXI,LEXH,LEXE,LEXN,LEXT
           SET LEXT="  "_$GET(^TMP("LEXQID",$JOB,"REQ",1,1))_":"
           SET LEXN=$GET(^TMP("LEXQID",$JOB,"REQ",2,1))
 +4        SET LEXT=LEXT_$JUSTIFY(" ",((79-+($GET(LEXLEN)))-$LENGTH(LEXT)))_LEXN
           DO BL
           DO TL(LEXT)
 +5        SET LEXT=$JUSTIFY(" ",((79-+($GET(LEXLEN)))))
           SET LEXN=$$TM^LEXQM($GET(^TMP("LEXQID",$JOB,"REQ",2,2)))
           IF $LENGTH(LEXN)
               DO TL((LEXT_LEXN))
 +6        SET LEXI=" "
           FOR 
               SET LEXI=$ORDER(^TMP("LEXQID",$JOB,"REQ",3,LEXI))
               if '$LENGTH(LEXI)
                   QUIT 
               Begin DoDot:1
 +7                SET LEXN=$GET(^TMP("LEXQID",$JOB,"REQ",3,LEXI))
                   IF $LENGTH(LEXN)'>62
                       DO TL((LEXT_LEXN))
                       QUIT 
 +8                NEW LEXC,LEXD,LEXA,LEXS,LEXI,LEXLEN
                   SET LEXLEN=50
                   SET LEXD=$$TM^LEXQM($PIECE(LEXN," ",2,4000))
                   if '$LENGTH(LEXD)
                       QUIT 
 +9                SET LEXC=$PIECE(LEXN,LEXD,1)
                   if '$LENGTH(LEXC)
                       QUIT 
                   SET LEXS=$LENGTH(LEXC)
                   KILL LEXA
                   SET LEXA(1)=LEXD
                   DO PR^LEXU(.LEXA,LEXLEN)
 +10               FOR LEXI=1:1:3
                       Begin DoDot:2
 +11                       if $LENGTH($GET(LEXA(LEXI)))
                               DO TL((LEXT_LEXC_$GET(LEXA(LEXI))))
                           SET LEXC=$JUSTIFY(" ",LEXS)
                       End DoDot:2
               End DoDot:1
 +12       KILL ^TMP("LEXQID",$JOB,"REQ")
 +13       QUIT 
NCC(LEXLEN) ;   Not CC with
 +1        QUIT 
 +2        if '$LENGTH($ORDER(^TMP("LEXQID",$JOB,"NCC",3,"")))
               QUIT 
           if '$DATA(^TMP("LEXQID",$JOB,"NCC",1,1))
               QUIT 
           if '$DATA(^TMP("LEXQID",$JOB,"NCC",2,1))
               QUIT 
 +3        NEW LEXI,LEXH,LEXE,LEXN,LEXT
           SET LEXT="  "_$GET(^TMP("LEXQID",$JOB,"NCC",1,1))_":"
           SET LEXN=$GET(^TMP("LEXQID",$JOB,"NCC",2,1))
 +4        SET LEXT=LEXT_$JUSTIFY(" ",((79-+($GET(LEXLEN)))-$LENGTH(LEXT)))_LEXN
           DO BL
           DO TL(LEXT)
 +5        SET LEXT=$JUSTIFY(" ",((79-+($GET(LEXLEN)))))
           SET LEXN=$$TM^LEXQM($GET(^TMP("LEXQID",$JOB,"NCC",2,2)))
           IF $LENGTH(LEXN)
               DO TL((LEXT_LEXN))
 +6        SET LEXI=" "
           FOR 
               SET LEXI=$ORDER(^TMP("LEXQID",$JOB,"NCC",3,LEXI))
               if '$LENGTH(LEXI)
                   QUIT 
               Begin DoDot:1
 +7                SET LEXN=$GET(^TMP("LEXQID",$JOB,"NCC",3,LEXI))
                   IF $LENGTH(LEXN)'>62
                       DO TL((LEXT_LEXN))
                       QUIT 
 +8                NEW LEXC,LEXD,LEXA,LEXS,LEXI,LEXLEN
                   SET LEXLEN=50
                   SET LEXD=$$TM^LEXQM($PIECE(LEXN," ",2,4000))
                   if '$LENGTH(LEXD)
                       QUIT 
 +9                SET LEXC=$PIECE(LEXN,LEXD,1)
                   if '$LENGTH(LEXC)
                       QUIT 
                   SET LEXS=$LENGTH(LEXC)
                   KILL LEXA
                   SET LEXA(1)=LEXD
                   DO PR^LEXU(.LEXA,LEXLEN)
 +10               FOR LEXI=1:1:3
                       Begin DoDot:2
 +11                       if $LENGTH($GET(LEXA(LEXI)))
                               DO TL((LEXT_LEXC_$GET(LEXA(LEXI))))
                           SET LEXC=$JUSTIFY(" ",LEXS)
                       End DoDot:2
               End DoDot:1
 +12       KILL ^TMP("LEXQID",$JOB,"NCC")
 +13       QUIT 
 +14      ;
 +15      ; Miscellaneous
CI(X,LEXD) ;   Code IENs
 +1        NEW LEXSO,LEXSDO,LEXLEX,LEXSAB
           SET LEXSO=$GET(X)
           if '$LENGTH(LEXSO)
               QUIT 
           SET LEXD=$GET(LEXD)
           IF LEXD'?7N
               Begin DoDot:1
 +2                NEW LEXEF,LEXTD
                   SET LEXTD=""
                   SET LEXEF=9999999
                   FOR 
                       SET LEXEF=$ORDER(^LEX(757.02,"ACT",(LEXSO_" "),3,LEXEF),-1)
                       if +LEXEF'>0
                           QUIT 
                       Begin DoDot:2
 +3                        NEW LEXIE
                           SET LEXIE=$ORDER(^LEX(757.02," "),-1)
                           FOR 
                               SET LEXIE=$ORDER(^LEX(757.02,"ACT",(LEXSO_" "),3,+LEXEF,LEXIE),-1)
                               if +LEXIE'>0
                                   QUIT 
                               Begin DoDot:3
 +4                                NEW LEXSR
                                   SET LEXSR=$PIECE($GET(^LEX(757.02,+LEXIE,0)),"^",3)
                                   if "^1^30^"[("^"_LEXSR_"^")
                                       SET LEXTD=LEXEF
                               End DoDot:3
                       End DoDot:2
 +5                if LEXTD?7N
                       SET LEXD=LEXTD
               End DoDot:1
 +6        if LEXD'?7N
               SET LEXD=$$DT^XLFDT
           SET LEXSDO=$ORDER(^ICD9("BA",(LEXSO_" "),0))
           SET LEXSAB=+($GET(^ICD9(+LEXSDO,1)))
           SET LEXSAB=$SELECT(LEXSAB=1:"ICD",1:"10D")
 +7        SET LEXLEX=$$STATCHK^LEXSRC2(LEXSO,LEXD,,LEXSAB)
           SET LEXLEX=$PIECE(LEXLEX,"^",2)
 +8        SET LEXSDO=$SELECT(+LEXSDO>0:("ICD Diagnosis IEN "_+LEXSDO),1:"")
           SET LEXLEX=$SELECT(+LEXLEX>0:("Lexicon IEN "_+LEXLEX),1:"")
 +9        SET X=""
           if $LENGTH(LEXSDO)&('$LENGTH(LEXLEX))
               SET X=LEXSDO
           if '$LENGTH(LEXSDO)&($LENGTH(LEXLEX))
               SET X=LEXLEX
           if $LENGTH(LEXSDO)&($LENGTH(LEXLEX))
               SET X=(LEXSDO_"/"_LEXLEX)
 +10       QUIT X
BL        ;   Blank Line
 +1        DO TL(" ")
           QUIT 
TL(X)     ;   Text Line
 +1        IF $DATA(LEXTEST)
               WRITE !,$GET(X)
               QUIT 
 +2        NEW LEXI,LEXTEST
           SET LEXI=+($ORDER(^TMP("LEXQIDO",$JOB," "),-1))+1
           SET ^TMP("LEXQIDO",$JOB,LEXI)=$GET(X)
           SET ^TMP("LEXQIDO",$JOB,0)=LEXI
 +3        QUIT