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

LEXQIP3.m

Go to the documentation of this file.
  1. LEXQIP3 ;ISL/KER - Query - ICD Procedure - Save ;05/23/2017
  1. ;;2.0;LEXICON UTILITY;**62,73,80,86,103**;Sep 23, 1996;Build 2
  1. ;
  1. ; Global Variables
  1. ; ^TMP("LEXQIPO") SACC 2.3.2.5.1
  1. ;
  1. ; External References
  1. ; $$VSEX^ICDEX ICR 5747
  1. ; $$UP^XLFSTR ICR 10104
  1. ;
  1. ; Local Variables NEWed or KILLed Elsewhere
  1. ; LEXCDT Code Set Versioning Date
  1. ; LEXDG DRG Array
  1. ; LEXIEN Internal Entry Number
  1. ; LEXIIEN Include IENs flag
  1. ; LEXLEN Offset Length
  1. ; LEXSO Code
  1. ; LEXNAM Unversioned Name
  1. ; LEXST Status and Effective Dates
  1. ; LEXSD Versioned Short Description
  1. ; LEXLD Versioned Long Description
  1. ; LEXWN Warning
  1. ; LEXMOR Major O.R. Procedure
  1. ; LEXDG MDC/DRG
  1. ; LEXELDT External Last Date
  1. ; LEXLX Lexicon Expressioin
  1. ;
  1. EN ; Main Entry Point
  1. K ^TMP("LEXQIPO",$J) Q:'$L($G(LEXELDT)) I +($G(LEXST))<0 D FUT D:$D(^TMP("LEXQIPO",$J)) DSP^LEXQO("LEXQIPO") Q
  1. D FUL D:$D(^TMP("LEXQIPO",$J)) DSP^LEXQO("LEXQIPO")
  1. Q
  1. FUT ; Future Activation
  1. N LEX1,LEX2,LEX3,LEXEFF,LEXI,LEXL,LEXSTA S LEXI=+($G(LEXIEN)) Q:+LEXI'>0
  1. S LEXL=+($G(LEXLEN)) Q:+LEXL'>0 S:LEXL>62 LEXL=62
  1. Q:'$L(LEXSO) Q:'$L(LEXNAM) S LEXSTA=$G(LEXST)
  1. S LEXEFF=$P(LEXSTA,"^",5),LEXSTA=$P(LEXSTA,"^",4)
  1. Q:'$L(LEXSTA) Q:'$L(LEXEFF) S (LEX1,LEX2,LEX3)=""
  1. D BOD(LEXELDT),COD(LEXSO,LEXNAM,$G(LEXCDT),+($G(LEXL))),STA(.LEXST,+($G(LEXL)))
  1. Q
  1. BOD(X) ; Based on Date
  1. N LEXBOD S LEXBOD=$G(X),X="Display based on date: "_LEXBOD D BL,TL(X)
  1. Q
  1. COD(X,Y,LEXD,LEXLEN) ; Code Line
  1. N LEXC,LEXN,LEXT,LEXIEN,LEXNAM S LEXC=$G(X),LEXN=$G(Y),LEXD=$G(LEXD),LEXIEN=$$CI(LEXC,LEXD)
  1. S LEXNAM=$P(LEXN," (IEN ",1) S:$D(LEXIIEN)&($L(LEXIEN)) LEXNAM=LEXIEN
  1. S LEXT="Code: "_LEXC S LEXT=LEXT_$J(" ",((79-+($G(LEXLEN)))-$L(LEXT)))_LEXNAM D BL,TL(LEXT)
  1. Q
  1. STA(X,LEXLEN) ; Status Line
  1. N LEX,LEXC,LEXX,LEXE,LEXI,LEXN,LEXS,LEXT,LEXW,LEXEFF,LEXSTA
  1. S LEXX=$G(X),LEXSTA=$P(LEXX,"^",4),LEXEFF=$P(LEXX,"^",5)
  1. S LEXEFF=$TR(LEXEFF,"()",""),LEXW=$P(LEXX,"^",6)
  1. S LEXT=" Status: ",LEXT=LEXT_$J(" ",((79-+($G(LEXLEN)))-$L(LEXT)))_LEXSTA
  1. S LEXT=LEXT_$J(" ",(35-$L(LEXT)))
  1. S:LEXEFF'["future" LEXT=LEXT_"Effective: "
  1. S LEXT=LEXT_$$UP^XLFSTR($E(LEXEFF,1))_$E(LEXEFF,2,$L(LEXEFF)) D BL,TL(LEXT)
  1. I $L(LEXW) D
  1. . N LEX,LEXT,LEXC,LEXI,LEXN S LEX(1)=LEXW D PR^LEXU(.LEX,(LEXLEN-7))
  1. . Q:+($O(LEX(" "),-1))'>0 S LEXT=$J(" ",((79-+($G(LEXLEN)))))
  1. . S (LEXC,LEXI)=0 F S LEXI=$O(LEX(LEXI)) Q:+LEXI'>0 D
  1. . . N LEXN S LEXN=$$TM^LEXQM($G(LEX(LEXI))) S:$L(LEXN) LEXC=LEXC+1
  1. . . D:LEXC=1 BL D TL((LEXT_LEXN))
  1. Q
  1. FUL ; Full Display
  1. N LEXFUL,LEX,LEXL S LEXL=+($G(LEXLEN)) S:LEXL>62 LEXL=62
  1. S LEXFUL="" D FUT
  1. D LIM(+($G(LEXIEN)),+($G(LEXL)))
  1. D SD(.LEXSD,+($G(LEXL)))
  1. D LD(.LEXLD,+($G(LEXL)))
  1. D LX(.LEXLX,+($G(LEXL)))
  1. D WN(.LEXWN,+($G(LEXL)))
  1. D MOR(.LEXMOR,+($G(LEXL)))
  1. D DRG(.LEXDG,+($G(LEXL)))
  1. Q
  1. LIM(X,LEXLEN) ; Limitations - Sex
  1. N LEXC,LEXH,LEXI,LEXS,LEXT S LEXC=0,LEXI=+($G(X)) S LEXS=$$VSEX^ICDEX(80.1,+LEXI,$G(LEXCDT)) Q:"^M^F^"'[("^"_LEXS_"^")
  1. S LEXH="Use only with the " S:LEXS="F" LEXH=LEXH_"female sex" S:LEXS="M" LEXH=LEXH_"male sex"
  1. S LEXT=" Limitations: ",LEXT=LEXT_$J(" ",((79-+($G(LEXLEN)))-$L(LEXT)))_LEXH
  1. D BL,TL(LEXT) S LEXC=1
  1. Q
  1. SD(X,LEXLEN) ; Short Description
  1. 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)
  1. S LEXE=$G(X(0)),LEXT=" "_LEXE,LEXN=$G(X(2)),LEXT=LEXT_$J(" ",((79-+($G(LEXLEN)))-$L(LEXT)))_LEXN D TL(LEXT)
  1. Q
  1. LD(X,LEXLEN) ; Long Description
  1. 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)
  1. S LEXE=$G(X(0)),LEXT=" "_LEXE,LEXN=$G(X(2)),LEXT=LEXT_$J(" ",((79-+($G(LEXLEN)))-$L(LEXT)))_LEXN D TL(LEXT)
  1. 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)
  1. Q
  1. LX(X,LEXLEN) ; Lexicon Expression
  1. 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)
  1. S LEXE=$G(X(0)),LEXT=" "_LEXE,LEXN=$G(X(2)),LEXT=LEXT_$J(" ",((79-+($G(LEXLEN)))-$L(LEXT)))_LEXN D TL(LEXT)
  1. 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)
  1. Q
  1. WN(X,LEXLEN) ; Warning
  1. 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
  1. D:$L($G(LEXLD(2))) BL D TL(LEXT)
  1. 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)
  1. Q
  1. MOR(X,LEXLEN) ; Major OR Procedure
  1. Q
  1. N LEXE,LEXH,LEXI,LEXID,LEXN,LEXT Q:'$D(X(1)) Q:'$D(X(1,1)) S LEXID=$G(X(1)) Q:'$L(LEXID) S LEXN=$G(X(1,1)) Q:'$L(LEXN)
  1. S LEXT=" Major OR Proc",LEXE="Major O.R. Procedure",LEXE=LEXN,LEXT=LEXT_$J(" ",((79-+($G(LEXLEN)))-$L(LEXT)))_LEXE D BL,TL(LEXT)
  1. S LEXI=1 F S LEXI=$O(X(1,LEXI)) Q:+LEXI'>0 S LEXE=$G(X(1,LEXI)) I $L(LEXE) S LEXT=$J(" ",((79-+($G(LEXLEN)))))_LEXE D TL(LEXT)
  1. Q
  1. DRG(X,LEXLEN) ; Major Diagnostic Category/DRG
  1. Q
  1. N LEXE,LEXH,LEXI,LEXN,LEXT Q:'$D(X(1)) S LEXN=$G(X(1)) Q:'$L(LEXN) S LEXE=$G(X(0)) S:$L(LEXE,"/")'=3 LEXE=""
  1. S LEXT=" MDC/DRG:",LEXT=LEXT_$J(" ",((79-+($G(LEXLEN)))-$L(LEXT)))_LEXN D BL,TL(LEXT) S LEXN=$G(X(2))
  1. S LEXT=" "_LEXE,LEXT=LEXT_$J(" ",((79-+($G(LEXLEN)))-$L(LEXT))) D TL((LEXT_LEXN)) S LEXT=$J(" ",(79-+($G(LEXLEN)))),LEXI=2
  1. F S LEXI=$O(X(LEXI)) Q:+LEXI'>0 S LEXN=$G(X(LEXI)) D:$L(LEXN) TL((LEXT_LEXN))
  1. Q
  1. ;
  1. ; Miscellaneous
  1. CI(X,LEXD) ; Code IENs
  1. N LEXSO,LEXSDO,LEXLEX,LEXSAB S LEXSO=$G(X) Q:'$L(LEXSO) S LEXD=$G(LEXD) I LEXD'?7N D
  1. . N LEXEF,LEXTD S LEXTD="",LEXEF=9999999 F S LEXEF=$O(^LEX(757.02,"ACT",(LEXSO_" "),3,LEXEF),-1) Q:+LEXEF'>0 D
  1. . . 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
  1. . . . N LEXSR S LEXSR=$P($G(^LEX(757.02,+LEXIE,0)),"^",3) S:"^2^31^"[("^"_LEXSR_"^") LEXTD=LEXEF
  1. . S:LEXTD?7N LEXD=LEXTD
  1. S:LEXD'?7N LEXD=$$DT^XLFDT S LEXSDO=$O(^ICD0("BA",(LEXSO_" "),0)),LEXSAB=+($G(^ICD0(+LEXSDO,1))),LEXSAB=$S(LEXSAB=2:"ICP",1:"10P")
  1. S LEXLEX=$$STATCHK^LEXSRC2(LEXSO,LEXD,,LEXSAB),LEXLEX=$P(LEXLEX,"^",2)
  1. S LEXSDO=$S(+LEXSDO>0:("ICD Procedure IEN "_+LEXSDO),1:"") S LEXLEX=$S(+LEXLEX>0:("Lexicon IEN "_+LEXLEX),1:"")
  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)
  1. Q X
  1. BL ; Blank Line
  1. D TL(" ") Q
  1. TL(X) ; Text Line
  1. I $D(LEXTEST) W !,$G(X) Q
  1. N LEXI,LEXTEST S LEXI=+($O(^TMP("LEXQIPO",$J," "),-1))+1 S ^TMP("LEXQIPO",$J,LEXI)=$G(X),^TMP("LEXQIPO",$J,0)=LEXI
  1. Q