ICDEXLK ;SLC/KER - ICD Extractor - Lookup ;12/19/2014
;;18.0;DRG Grouper;**57,67**;Oct 20, 2000;Build 1
;
; Global Variables
; ^ICDS( N/A
; ^TMP("ICD0") SACC 2.3.2.5.1
; ^TMP("ICD9") SACC 2.3.2.5.1
; ^TMP("ICDEXLK") SACC 2.3.2.5.1
;
; External References
; $$DT^XLFDT ICR 10103
;
; Local Variables NEWed or KILLed Elsewhere
; DIC,ICDFMT,ICDSYS,ICDVDT
;
LK ; Lookup
;
; This is the Special Lookup program for files 80 and 80.1.
; Only the ^DIC call honors the special lookup routines.
; Those calls that allow the user to specify the indexes
; (IX^DIC and MIX^DIC1), and the Data Base Server calls
; (FIND^DIC, $$FIND1^DIC, and UPDATE^DIE) all ignore the
; Special Lookup Program. Also, if DIC(0) contains an
; "I" then the Special Lookup program will be ignored.
;
; Local Variables Newed or Killed by Calling Application
;
; Versioning Date (Fileman format) (OLD, CSV)
;
; ICDVDT or
; ^TMP("ICDEXLK",$J,"ICDVDT"
;
; If supplied only active codes on that date
; will be included in the selection list.
;
; If not supplied, the date will default to
; TODAY and all codes may be selected, active
; and inactive.
;
; Coding System (from file 80.4) (new)
;
; ICDSYS or
; ^TMP("ICDEXLK",$J,"ICDSYS"
;
; 1 ICD ICD-9-CM
; 2 ICP ICD-9 Proc
; 30 10D ICD-10-CM
; 31 10P ICD-10-PCS
;
; Display Format (numeric, 1-4) (new)
;
; ICDFMT or
; ^TMP("ICDEXLK",$J,"ICDFMT"
;
; 1 = Fileman format, code and short text (default)
;
; 250.00 DMII CMP NT ST UNCNTR
;
; 2 = Fileman format, code and description
;
; 250.00 DIABETES MELLITUS NO MENTION OF
; COMPLICATION, TYPE II OR UNSPECIFIED TYPE
;
; 3 = Lexicon format, short text followed by code
;
; DMII CMP NT ST UNCNTR (250.00)
;
; 4 = Lexicon format, description followed by code
;
; DIABETES MELLITUS NO MENTION OF COMPLICATION,
; TYPE II OR UNSPECIFIED TYPE (250.00)
;
; Special Lookup
; ^DD(80,0,"DIC")="ICDEXLK"
; ^DD(80.1,0,"DIC")="ICDEXLK"
;
; FileMan Variables
;
; X If DIC(0) does not contain an A, then the variable
; X must be defined
;
; DIC Global root or File Number
;
; ^ICD9( or 80
; ^ICD0( or 80.1
;
; DIC(0) (Optional) A string of characters which alter how
; DIC responds. Default value for ICD files "AEM"
;
; Applicable to a versioned lookup
; A Ask
; E Echo
; F Forget lookup value
; I Ignore lookup program
; O Find one exact match
; Q Question Input ??
; S Suppresses display of .01
; X EXact match required
; Z Expand output Y variable
;
; Not Applicable/Used in a versioned lookup
;
; C, B, K, L, M, N, n, U, T and V
;
; DIC("A") (Optional) A prompt that is displayed prior to the
; reading of the X input.
;
; DIC("B") (Optional) The default answer which is presented to
; the user when the lookup prompt is issued.
;
; DIC("S") (Optional) DIC("S") Screen M code that sets the
; value of $T.
;
; DIC("W") (Optional) An M command string displays each entry
; that matches the user's input
;
; DIC("?N",<file>)=n
; (Optional) The number "n" should be an integer set
; to the number of entries to be displayed
;
; FileMan Variables KILLed: DLAYGO and DINUM
;
; Output
;
; Y IEN ^ Code Fileman
;
; If DIC(0) contains "Z"
;
; Y(0) 0 Node Fileman
; Y(0,0) Code Fileman
; Y(0,1) $$ICDDX or $$ICDOP Non-Fileman
; Y(0,2) Long Description Non-Fileman
;
K ^TMP("ICD9",$J),^TMP("ICD0",$J) D DIE^ICDEXLK6
N DIRUT,DIROUT,FILE,ROOT,SUB,SBI,ICDDICA,ICDDICB,ICDDICN,ICDDICW,ICDDICS,ICDDICST
N ICDDIC0,ICDOLD0,ICDDIC00,ICDCDT,ICDCSY,ICDISF,ICDOUT,ICDVER,ICDX,ICDXP,KEY,INP,INP2,INP1
N INPE,ERR,ICDOFND,ICDOSEL,ICDOINP,ICDREDO,ICDOREV,ICDISCD,ICDOUPA,ICDOTIM,ICDOPTR,ICDOVAL
S (ICDOFND,ICDOSEL,ICDOREV,ICDOUPA,ICDOTIM)=0,ICDXP=$$XT^ICDEXLK6($G(X)),ICDOPTR=+($O(DICR(" "),-1))
K DLAYGO,DINUM S (ICDOINP,ICDX)=$$XT^ICDEXLK6($S($E($G(X),1)'=" ":$$TM^ICDEXLK6($G(X)),1:$G(X)))
K X,Y,DTOUT,DUOUT S ICDCSY=0,ROOT=$G(DIC),FILE=$$FILE^ICDEX(ROOT),ICDOVAL=1
I "^80^80.1^"'[("^"_FILE_"^") S ERR="Invalid File" G ERR
S ROOT=$$ROOT^ICDEX(FILE)
I "^ICD9(^ICD0(^"'[("^"_$E(ROOT,2,$L($G(ROOT)))_"^") S ERR="Invalid Global Root" G ERR
; Exact code entered, no subordinates
I $L($G(ICDXP)),$G(DIC(0))'["A" D
. N ICDTMP F ICDTMP=ICDXP,($TR(ICDXP,"""","")_".") D Q:$G(ICDX)["`"
. . N ICD0,ICD1,ICD2,ICDF S ICD0=$TR(ICDTMP,"""","")
. . S ICD1=$O(@(ROOT_"""BA"","""_ICD0_""",0)"))
. . S ICD2=$O(@(ROOT_"""BA"","""_ICD0_""","" "")"),-1)
. . I ICD1>0,ICD1=ICD2 S (X,ICDX)="`"_+ICD1 Q
. . S ICD1=$O(@(ROOT_"""BA"","""_ICD0_" "",0)"))
. . S ICD2=$O(@(ROOT_"""BA"","""_ICD0_" "","" "")"),-1)
. . I ICD1>0,ICD1=ICD2 S (X,ICDX)="`"_+ICD1
I $G(ICDX)[";" D
. N ICD1,ICD2,ICD3 S ICD1=$P(ICDX,";",1),ICD2=("^"_$P(ICDX,";",2))
. Q:ICD2'=DIC Q:ICD1'?1N.N S ICD3=$P($G(@(ROOT_+ICD1_",0)")),"^",1)
. I $D(@(ROOT_+ICD1_",0)")) S (X,ICDX)="`"_+ICD1
; System
S ICDCSY=0
S:$L($G(ICDSYS)) ICDCSY=$G(ICDSYS)
S:'$L($G(ICDSYS))&($L($G(^TMP("ICDEXLK",$J,"ICDSYS")))) ICDCSY=$G(^TMP("ICDEXLK",$J,"ICDSYS"))
S ICDCSY=$$SYS^ICDEX($G(ICDCSY))
; Date
S:$L($G(ICDVDT)) ICDCDT=$G(ICDVDT)
S:'$L($G(ICDVDT))&($L($G(^TMP("ICDEXLK",$J,"ICDVDT")))) ICDCDT=$G(^TMP("ICDEXLK",$J,"ICDVDT"))
; Format
S ICDOUT=0 S:$L($G(ICDFMT)) ICDOUT=$G(ICDFMT)
I $D(DDS) S:$D(ICDFMT) ICDFMT=1 S ICDOUT=1
S:'$L($G(ICDFMT))&($L($G(^TMP("ICDEXLK",$J,"ICDFMT")))) ICDOUT=$G(^TMP("ICDEXLK",$J,"ICDFMT"))
S:+ICDOUT'>0 ICDOUT=1 S:+ICDOUT>4 ICDOUT=1
S:$L($G(ICDFMT))!($L($G(^TMP("ICDEXLK",$J,"ICDFMT")))) ICDISF=1
; Versioned Lookup
S ICDVER=$S($G(ICDCDT)?7N:1,1:0) S:$G(ICDCDT)'?7N ICDCDT=$$DT^XLFDT
; Enforce Business Rule for Date
I ICDVER'>0 S:$D(^ICDS(+ICDCSY,0)) ICDCDT=$$DTBR^ICDEX(ICDCDT,,+($G(ICDCSY)))
; Space Bar Return (passed)
I $D(ICDX),$G(ICDX)=" ",DIC(0)'["A" D SBR^ICDEXLK2 S:+($G(Y))>0&(X'=ICDX) ICDX=X G:+($G(Y))>0 QUIT K Y
; TMP global
S SUB=$TR(ROOT,"^(","") K ^TMP(SUB,$J)
; Save DIC
S ICDDICA=$G(DIC("A")),ICDDICB=$G(DIC("B")),ICDDICW=$G(DIC("W"))
S ICDDICS="",ICDDICST=$$DICS^ICDEXLK6($G(DIC("S"))) S:$L($G(ICDDICST)) ICDDICS=ICDDICST
S ICDDICN=$G(DIC("?N",FILE)) S:+ICDDICN'>0 ICDDICN=5
S ICDDIC00=$G(DIC(0)),(ICDDIC0,DIC(0))=$$DIC0^ICDEXLK6($G(DIC(0)))
K:+($G(ICDISF))>0 DIC("W") K:$D(DDS) DIC("W")
I $L($G(ICDX))'>4,ICDX'["." D
. S:ICDX?3N&($D(@(ROOT_"""BA"","""_ICDX_". "")"))) ICDX=ICDX_".",ICDXP=ICDXP_"."
. S:$E(ICDX,1)="E"&($E(ICDX,2,4)?3N)&($D(@(ROOT_"""BA"","""_ICDX_". "")"))) ICDX=ICDX_".",ICDXP=ICDXP_"."
. S:$E(ICDX,1)?1U&($E(ICDX,2,3)?2N)&($D(@(ROOT_"""BA"","""_ICDX_". "")"))) ICDX=ICDX_".",ICDXP=ICDXP_"."
I ICDX="?",$G(DIC(0))'["A" D I $L($G(DIE)),$L($G(DIC)),$G(DIE)'=$G(DIC) S Y=-1 W:'$D(DDS) ! Q
. D INPH^ICDEXLK2(FILE) S ICDX="" S:$G(DIC(0))'["A" DIC(0)=DIC(0)_"A"
I ICDX="??",$G(DIC(0))'["A" D I $L($G(DIE)),$L($G(DIC)),$G(DIE)'=$G(DIC) S Y=-1 W:'$D(DDS) ! Q
. D INPH2^ICDEXLK2(FILE) S ICDX="" S:$G(DIC(0))'["A" DIC(0)=DIC(0)_"A"
LKR ; Lookup Recursive
S:$G(DIC(0))'["A"&($L($G(ICDX)))&('$L($G(X))) X=ICDX
S (INPE,ICDOFND)=0,ICDOVAL=1 S:'$L($G(DIC(0))) DIC(0)="AEM" S ICDREDO=""
S:$L($G(DIC(0))) DIC(0)=$TR(DIC(0),"CL","")
; User Input
I +($G(ICDOREV))>0 D
. S (ICDOFND,ICDOSEL,ICDOREV)=0 K X S ICDX=""
S (ICDOUPA,ICDOTIM)=0 I $G(DIC(0))["A" D
. N ICDT S ICDOVAL=1,X=$$INP^ICDEXLK2(FILE,$G(ICDVER),$G(ICDCDT)) S ICDT=$$XT^ICDEXLK6(X)
. S:ICDT'=X ICDOVAL=0,X=ICDT
I '$L($G(X)),$G(DIC(0))'["T",+($G(ICDOUPA))'>1,+($G(ICDOVAL))>0 S X="",ICDOREV=1 G ERR
I '$L($G(X)),+($G(ICDOVAL))'>0,+($G(ICDOUPA))'>0,+($G(ICDOTIM))'>0 D G LKR
. W:ICDOUPA'>0&(ICDOTIM'>0)&('$D(DDS)) " ??"
S:ICDOTIM>0 DTOUT=1 G:ICDOTIM>0 ERR S:ICDOUPA>0 DUOUT=1 G:ICDOUPA>0 ERR
I ($G(DIC(0))["A"),('$L($G(X))!(X="^")),$G(DIC(0))["T" S X="" K Y G LKR
I $G(DIC(0))'["A"&($L($G(ICDX))) S X=$G(ICDX)
I $G(X)["^" S DUOUT="" G ERR
I '$L($G(X)) G ERR
S X=$$TM^ICDEXLK6(X),INP=X,INP1=$E(INP,1),INP2=$E(INP,2,245) S:INP1="`"&(INP2?1N.N) INPE=1
; Search #1 - Forced IEN
K Y S (ICDOUPA,ICDOTIM)=0 I INPE>0 D
. D IEN^ICDEXLK5 S ICDOUPA=+($G(ICDOUPA)),ICDOTIM=+($G(ICDOTIM))
. S:+($G(Y))>0&($L($P($G(Y),"^",2))>0) (ICDX,X)=$P($G(Y),"^",2)
. I '$L($G(X)),+($G(Y))<0,$G(DIC(0))'["A" D Q
. . S (X,ICDX,ICDXP,INP,INP1,INP2)="",Y="-1^No Selection Made"
. . S:$L($G(DICR("1"))) DICR("1")=""
. I +($G(ICDOFND))'>0,$G(DIC(0))["Q" D
. . W:(ICDOPTR'>0)&(ICDOUPA'>0)&(ICDOTIM'>0)&('$D(DDS))&(+($G(ICDOREV))'>0) " ??"
. . W:(ICDOPTR>0)&('$D(DDS)) !
. I +($G(ICDOFND))'>0 S (ICDX,X)="",Y=-1 S:$D(ICDOINP) ICDOINP=""
; Abort Search #1
I INPE>0,'$L($G(X)),+($G(Y))<0,$G(DIC(0))'["A" G QUIT
I INPE>0,$L($G(X)),+($G(Y))>0,$P($G(Y),"^",2)=$G(X) G QUIT
I INPE>0 G:($L($G(X))&(+($G(Y))>0))!($G(ICDOUPA)=2) QUIT G:+($G(ICDOTIM))>0 QUIT
I INPE>0 G:(+($G(ICDOFND))'>0!($G(ICDOUPA)=1))&($G(DIC(0))["A") LKR
I INPE>0 G:+($G(ICDOFND))>0&($G(ICDOSEL)'>0)&($G(ICDOREV)>0)&($G(DIC(0))["A") LKR
I $D(Y) S:+Y<0 X=INP G QUIT
; Search #2 - Lookup X
S (ICDOUPA,ICDOTIM)=0 N LOUD S LOUD="" S ICDX=X I +($G(ICDOFND))'>0 D
. ; Text Search
. S:$L($G(ICDX))&($L($G(ICDX))>1) ICDOFND=$$LK^ICDEXLK3($G(X),FILE,ICDCDT,ICDCSY,ICDVER,ICDOUT)
. ; Code Search
. S:$L($G(ICDX))&($L($G(ICDX))'>1) ICDOFND=$$CD^ICDEXLK3($G(X),FILE,ICDCDT,ICDCSY,ICDVER,ICDOUT)
. S ICDOFND=+($G(ICDOFND)) S:$L($G(ICDX)) X=$G(ICDX)
; Abort Search #2
I +($G(ICDOFND))'>0,$G(DIC(0))["Q" D
. W:(ICDOPTR'>0)&('$D(DDS))&(+($G(ICDOREV))'>0) " ??"
I +($G(ICDOFND))'>0,$L($G(INP)),$E(INP,1)'=" ",$G(DIC(0))["A" K ICDX,X,Y,INP,INP1,INP2 G LKR
S:+($G(ICDOFND))'>0 X=$G(INP)
; Nothing Found
I +($G(ICDOFND))'>0,$G(DIC(0))'["T" D G QUIT
. W:$G(DIC(0))["E"&(ICDOPTR'>0)&('$D(DDS)) !," No matches found"
. S X=$S($L($G(INP)):INP,1:$G(X)),Y="-1^No matches found"
I +($G(ICDOFND))'>0,$G(DIC(0))["T" K Y G LKR
; Results found
S (ICDOUPA,ICDOTIM)=0 D ASK^ICDEXLK2 G:$D(DTOUT) ERR
S:ICDOTIM>0 DTOUT=1 G:ICDOTIM>0 ERR
I +($G(ICDOUPA))>1 S DUOUT=1 W:'$D(DDS) ! G QUIT
G:+($G(ICDOUPA))=1&(DIC(0)'["A") QUIT
G:+($G(ICDOUPA))=1&(DIC(0)["A") LKR
I +($G(ICDOFND))>0,+($G(ICDOSEL))'>0,+($G(ICDOREV))>0,+($G(ICDOPTR))>0 D G QUIT
. S X=ICDX S:$G(DIC(0))'["A" (ICDX,INP1,INP2,ICDOINP,X)="",Y="-1^No selection made"
I +($G(ICDOFND))>0,+($G(ICDOSEL))'>0,+($G(ICDOREV))>0,+($G(ICDOPTR))'>0 D G:$G(ICDOUPA)>1!($G(DIC(0))'["A") QUIT G:DIC(0)["A" LKR
. S (ICDX,INP1,INP2,ICDOINP,X)="",Y="-1^No selection made"
G:+($G(Y))'>0 ERR D QUIT
Q
LKQ ; Quit
Q
ERR ; Quit On Error/Time Out
N ICDX,ICDY S ICDY=$G(Y),ICDX=$G(X) K X,Y S Y=-1
S:$L($P($G(ICDY),"^",2)) Y=Y_"^"_$P($G(ICDY),"^",2)
I $G(ICDOTIM)>0,$G(DIC(0))["E",'$D(DDS) W !!,?2,"Try again later" K ERR
I $G(ICDOUPA)>0,$G(DIC(0))["E" K ERR
I $G(ICDOUPA)>0,+($G(ICDOFND)>0),+($G(ICDOSEL)'>0),$G(DIC(0))["E" K ERR
I $L($G(ERR)),$G(DIC(0))["E",'$D(DDS) W !!,?2,$G(ERR)
S:$E(ICDY,1,2)="-1"&($L($P($G(ICDY),"^",2))) Y=ICDY S X=ICDX
I $E(Y,1,2)="-1",+($G(ICDOFND)>0),+($G(ICDOSEL)'>0) S Y="-1^No Selection Made"
D QUIT
Q
QUIT ; Quit without Error
K DUOUT,DTOUT S:ICDOUPA=1 DUOUT=1,X="^",Y="-1^Search aborted (up-arrow detected)"
S:ICDOUPA=2 DUOUT=1,X="^^",Y="-1^Search aborted (double up-arrow detected)"
S:ICDOTIM>0 DTOUT=1,X="",Y="-1^Search aborted (timed out)" Q:$D(DUOUT)!($D(DTOUT))
I $G(ICDOFND)>0,$G(ICDOREV)>0,$G(ICDOSEL)'>0 S X="",Y="-1^No Selection Made" Q
I '$L(($G(ICDX)_$G(X))),+Y<0,'$L($P($G(Y),"^",2)),$G(DIC(0))'["A" S Y="-1^No user input" Q
D:+Y>0 Y^ICDEXLK2($G(ROOT),+Y,$G(ICDCDT))
I $P($G(X),"`",2)=$P($G(Y),"^",1),$L($P($G(Y),"^",2)) S (ICDX,X)=$P($G(Y),"^",2)
I +($G(Y))>0,X=$P($G(Y),"^",1),$L($P($G(Y),"^",2)) S (ICDX,X)=$P($G(Y),"^",2)
I X=" ",$P($G(Y),"^",1)>0,$L($P($G(Y),"^",2)),$D(@(ROOT_+($P($G(Y),"^",1))_",0)")) S X=$P($G(Y),"^",2)
D DICU^ICDEXLK6 I $D(DDS) S:$L($G(ICDOINP))&(+Y'>0) X=$G(ICDOINP)
I ICDOTIM'>0,$G(DIC(0))["A",$L($G(INP)),+($G(Y))>0,$L($P($G(Y),"^",2)) S (ICDX,X)=INP
S:$L($G(ICDX)) X=$G(ICDX) S X=$G(X) D RED
Q
RED ; Re-Display
Q:+($G(Y))'>0 Q:'$L($P($G(Y),"^",2)) Q:$G(FILE)'>0 Q:$D(DDS) Q:$G(DIC(0))'["E"
Q:ICDOPTR>1 N CODE,EXP,CC,STA S CODE=$P(Y,"^",2) S CODE=CODE_$J(" ",(10-$L($G(CODE))))
S CC="" S:FILE=80 CC=$$VCC^ICDEX(+Y,$G(ICDCDT))
S CC=$S(CC="1":" (CC)",CC="2":" (Major CC)",1:"")
S STA=$O(@(ROOT_+Y_",66,""B"","_(+($G(ICDCDT))+.000001)_")"),-1)
S STA=$O(@(ROOT_+Y_",66,""B"","_+STA_","" "")"),-1)
S STA=$P($G(@(ROOT_+Y_",66,"_+STA_",0)")),"^",2)
S STA=$S($G(STA)?1N&(+$G(STA)'>0):" (Inactive)",$G(STA)'?1N&(+$G(STA)'>0):" (Pending)",1:"")
S:$G(ICDFMT)=2!($G(ICDFMT)=4) EXP=$$VLT^ICDEX(FILE,+Y,$G(ICDCDT))
S:$G(ICDFMT)=1!($G(ICDFMT)=3)!($G(ICDFMT)="") EXP=$$VST^ICDEX(FILE,+Y,$G(ICDCDT))
W:$L($G(CODE))&($L($G(EXP)))&($D(DPP(1))) !,?5 W:$L($G(CODE))&($L($G(EXP))) " ",$G(CODE),$G(EXP),$G(CC),$G(STA)
Q
CLR ; Clear Environment
K DDS,DICR N ICDTEST,DPP,DR
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HICDEXLK 13969 printed Dec 13, 2024@01:50:43 Page 2
ICDEXLK ;SLC/KER - ICD Extractor - Lookup ;12/19/2014
+1 ;;18.0;DRG Grouper;**57,67**;Oct 20, 2000;Build 1
+2 ;
+3 ; Global Variables
+4 ; ^ICDS( N/A
+5 ; ^TMP("ICD0") SACC 2.3.2.5.1
+6 ; ^TMP("ICD9") SACC 2.3.2.5.1
+7 ; ^TMP("ICDEXLK") SACC 2.3.2.5.1
+8 ;
+9 ; External References
+10 ; $$DT^XLFDT ICR 10103
+11 ;
+12 ; Local Variables NEWed or KILLed Elsewhere
+13 ; DIC,ICDFMT,ICDSYS,ICDVDT
+14 ;
LK ; Lookup
+1 ;
+2 ; This is the Special Lookup program for files 80 and 80.1.
+3 ; Only the ^DIC call honors the special lookup routines.
+4 ; Those calls that allow the user to specify the indexes
+5 ; (IX^DIC and MIX^DIC1), and the Data Base Server calls
+6 ; (FIND^DIC, $$FIND1^DIC, and UPDATE^DIE) all ignore the
+7 ; Special Lookup Program. Also, if DIC(0) contains an
+8 ; "I" then the Special Lookup program will be ignored.
+9 ;
+10 ; Local Variables Newed or Killed by Calling Application
+11 ;
+12 ; Versioning Date (Fileman format) (OLD, CSV)
+13 ;
+14 ; ICDVDT or
+15 ; ^TMP("ICDEXLK",$J,"ICDVDT"
+16 ;
+17 ; If supplied only active codes on that date
+18 ; will be included in the selection list.
+19 ;
+20 ; If not supplied, the date will default to
+21 ; TODAY and all codes may be selected, active
+22 ; and inactive.
+23 ;
+24 ; Coding System (from file 80.4) (new)
+25 ;
+26 ; ICDSYS or
+27 ; ^TMP("ICDEXLK",$J,"ICDSYS"
+28 ;
+29 ; 1 ICD ICD-9-CM
+30 ; 2 ICP ICD-9 Proc
+31 ; 30 10D ICD-10-CM
+32 ; 31 10P ICD-10-PCS
+33 ;
+34 ; Display Format (numeric, 1-4) (new)
+35 ;
+36 ; ICDFMT or
+37 ; ^TMP("ICDEXLK",$J,"ICDFMT"
+38 ;
+39 ; 1 = Fileman format, code and short text (default)
+40 ;
+41 ; 250.00 DMII CMP NT ST UNCNTR
+42 ;
+43 ; 2 = Fileman format, code and description
+44 ;
+45 ; 250.00 DIABETES MELLITUS NO MENTION OF
+46 ; COMPLICATION, TYPE II OR UNSPECIFIED TYPE
+47 ;
+48 ; 3 = Lexicon format, short text followed by code
+49 ;
+50 ; DMII CMP NT ST UNCNTR (250.00)
+51 ;
+52 ; 4 = Lexicon format, description followed by code
+53 ;
+54 ; DIABETES MELLITUS NO MENTION OF COMPLICATION,
+55 ; TYPE II OR UNSPECIFIED TYPE (250.00)
+56 ;
+57 ; Special Lookup
+58 ; ^DD(80,0,"DIC")="ICDEXLK"
+59 ; ^DD(80.1,0,"DIC")="ICDEXLK"
+60 ;
+61 ; FileMan Variables
+62 ;
+63 ; X If DIC(0) does not contain an A, then the variable
+64 ; X must be defined
+65 ;
+66 ; DIC Global root or File Number
+67 ;
+68 ; ^ICD9( or 80
+69 ; ^ICD0( or 80.1
+70 ;
+71 ; DIC(0) (Optional) A string of characters which alter how
+72 ; DIC responds. Default value for ICD files "AEM"
+73 ;
+74 ; Applicable to a versioned lookup
+75 ; A Ask
+76 ; E Echo
+77 ; F Forget lookup value
+78 ; I Ignore lookup program
+79 ; O Find one exact match
+80 ; Q Question Input ??
+81 ; S Suppresses display of .01
+82 ; X EXact match required
+83 ; Z Expand output Y variable
+84 ;
+85 ; Not Applicable/Used in a versioned lookup
+86 ;
+87 ; C, B, K, L, M, N, n, U, T and V
+88 ;
+89 ; DIC("A") (Optional) A prompt that is displayed prior to the
+90 ; reading of the X input.
+91 ;
+92 ; DIC("B") (Optional) The default answer which is presented to
+93 ; the user when the lookup prompt is issued.
+94 ;
+95 ; DIC("S") (Optional) DIC("S") Screen M code that sets the
+96 ; value of $T.
+97 ;
+98 ; DIC("W") (Optional) An M command string displays each entry
+99 ; that matches the user's input
+100 ;
+101 ; DIC("?N",<file>)=n
+102 ; (Optional) The number "n" should be an integer set
+103 ; to the number of entries to be displayed
+104 ;
+105 ; FileMan Variables KILLed: DLAYGO and DINUM
+106 ;
+107 ; Output
+108 ;
+109 ; Y IEN ^ Code Fileman
+110 ;
+111 ; If DIC(0) contains "Z"
+112 ;
+113 ; Y(0) 0 Node Fileman
+114 ; Y(0,0) Code Fileman
+115 ; Y(0,1) $$ICDDX or $$ICDOP Non-Fileman
+116 ; Y(0,2) Long Description Non-Fileman
+117 ;
+118 KILL ^TMP("ICD9",$JOB),^TMP("ICD0",$JOB)
DO DIE^ICDEXLK6
+119 NEW DIRUT,DIROUT,FILE,ROOT,SUB,SBI,ICDDICA,ICDDICB,ICDDICN,ICDDICW,ICDDICS,ICDDICST
+120 NEW ICDDIC0,ICDOLD0,ICDDIC00,ICDCDT,ICDCSY,ICDISF,ICDOUT,ICDVER,ICDX,ICDXP,KEY,INP,INP2,INP1
+121 NEW INPE,ERR,ICDOFND,ICDOSEL,ICDOINP,ICDREDO,ICDOREV,ICDISCD,ICDOUPA,ICDOTIM,ICDOPTR,ICDOVAL
+122 SET (ICDOFND,ICDOSEL,ICDOREV,ICDOUPA,ICDOTIM)=0
SET ICDXP=$$XT^ICDEXLK6($GET(X))
SET ICDOPTR=+($ORDER(DICR(" "),-1))
+123 KILL DLAYGO,DINUM
SET (ICDOINP,ICDX)=$$XT^ICDEXLK6($SELECT($EXTRACT($GET(X),1)'=" ":$$TM^ICDEXLK6($GET(X)),1:$GET(X)))
+124 KILL X,Y,DTOUT,DUOUT
SET ICDCSY=0
SET ROOT=$GET(DIC)
SET FILE=$$FILE^ICDEX(ROOT)
SET ICDOVAL=1
+125 IF "^80^80.1^"'[("^"_FILE_"^")
SET ERR="Invalid File"
GOTO ERR
+126 SET ROOT=$$ROOT^ICDEX(FILE)
+127 IF "^ICD9(^ICD0(^"'[("^"_$EXTRACT(ROOT,2,$LENGTH($GET(ROOT)))_"^")
SET ERR="Invalid Global Root"
GOTO ERR
+128 ; Exact code entered, no subordinates
+129 IF $LENGTH($GET(ICDXP))
IF $GET(DIC(0))'["A"
Begin DoDot:1
+130 NEW ICDTMP
FOR ICDTMP=ICDXP,($TRANSLATE(ICDXP,"""","")_".")
Begin DoDot:2
+131 NEW ICD0,ICD1,ICD2,ICDF
SET ICD0=$TRANSLATE(ICDTMP,"""","")
+132 SET ICD1=$ORDER(@(ROOT_"""BA"","""_ICD0_""",0)"))
+133 SET ICD2=$ORDER(@(ROOT_"""BA"","""_ICD0_""","" "")"),-1)
+134 IF ICD1>0
IF ICD1=ICD2
SET (X,ICDX)="`"_+ICD1
QUIT
+135 SET ICD1=$ORDER(@(ROOT_"""BA"","""_ICD0_" "",0)"))
+136 SET ICD2=$ORDER(@(ROOT_"""BA"","""_ICD0_" "","" "")"),-1)
+137 IF ICD1>0
IF ICD1=ICD2
SET (X,ICDX)="`"_+ICD1
End DoDot:2
if $GET(ICDX)["`"
QUIT
End DoDot:1
+138 IF $GET(ICDX)[";"
Begin DoDot:1
+139 NEW ICD1,ICD2,ICD3
SET ICD1=$PIECE(ICDX,";",1)
SET ICD2=("^"_$PIECE(ICDX,";",2))
+140 if ICD2'=DIC
QUIT
if ICD1'?1N.N
QUIT
SET ICD3=$PIECE($GET(@(ROOT_+ICD1_",0)")),"^",1)
+141 IF $DATA(@(ROOT_+ICD1_",0)"))
SET (X,ICDX)="`"_+ICD1
End DoDot:1
+142 ; System
+143 SET ICDCSY=0
+144 if $LENGTH($GET(ICDSYS))
SET ICDCSY=$GET(ICDSYS)
+145 if '$LENGTH($GET(ICDSYS))&($LENGTH($GET(^TMP("ICDEXLK",$JOB,"ICDSYS"))))
SET ICDCSY=$GET(^TMP("ICDEXLK",$JOB,"ICDSYS"))
+146 SET ICDCSY=$$SYS^ICDEX($GET(ICDCSY))
+147 ; Date
+148 if $LENGTH($GET(ICDVDT))
SET ICDCDT=$GET(ICDVDT)
+149 if '$LENGTH($GET(ICDVDT))&($LENGTH($GET(^TMP("ICDEXLK",$JOB,"ICDVDT"))))
SET ICDCDT=$GET(^TMP("ICDEXLK",$JOB,"ICDVDT"))
+150 ; Format
+151 SET ICDOUT=0
if $LENGTH($GET(ICDFMT))
SET ICDOUT=$GET(ICDFMT)
+152 IF $DATA(DDS)
if $DATA(ICDFMT)
SET ICDFMT=1
SET ICDOUT=1
+153 if '$LENGTH($GET(ICDFMT))&($LENGTH($GET(^TMP("ICDEXLK",$JOB,"ICDFMT"))))
SET ICDOUT=$GET(^TMP("ICDEXLK",$JOB,"ICDFMT"))
+154 if +ICDOUT'>0
SET ICDOUT=1
if +ICDOUT>4
SET ICDOUT=1
+155 if $LENGTH($GET(ICDFMT))!($LENGTH($GET(^TMP("ICDEXLK",$JOB,"ICDFMT"))))
SET ICDISF=1
+156 ; Versioned Lookup
+157 SET ICDVER=$SELECT($GET(ICDCDT)?7N:1,1:0)
if $GET(ICDCDT)'?7N
SET ICDCDT=$$DT^XLFDT
+158 ; Enforce Business Rule for Date
+159 IF ICDVER'>0
if $DATA(^ICDS(+ICDCSY,0))
SET ICDCDT=$$DTBR^ICDEX(ICDCDT,,+($GET(ICDCSY)))
+160 ; Space Bar Return (passed)
+161 IF $DATA(ICDX)
IF $GET(ICDX)=" "
IF DIC(0)'["A"
DO SBR^ICDEXLK2
if +($GET(Y))>0&(X'=ICDX)
SET ICDX=X
if +($GET(Y))>0
GOTO QUIT
KILL Y
+162 ; TMP global
+163 SET SUB=$TRANSLATE(ROOT,"^(","")
KILL ^TMP(SUB,$JOB)
+164 ; Save DIC
+165 SET ICDDICA=$GET(DIC("A"))
SET ICDDICB=$GET(DIC("B"))
SET ICDDICW=$GET(DIC("W"))
+166 SET ICDDICS=""
SET ICDDICST=$$DICS^ICDEXLK6($GET(DIC("S")))
if $LENGTH($GET(ICDDICST))
SET ICDDICS=ICDDICST
+167 SET ICDDICN=$GET(DIC("?N",FILE))
if +ICDDICN'>0
SET ICDDICN=5
+168 SET ICDDIC00=$GET(DIC(0))
SET (ICDDIC0,DIC(0))=$$DIC0^ICDEXLK6($GET(DIC(0)))
+169 if +($GET(ICDISF))>0
KILL DIC("W")
if $DATA(DDS)
KILL DIC("W")
+170 IF $LENGTH($GET(ICDX))'>4
IF ICDX'["."
Begin DoDot:1
+171 if ICDX?3N&($DATA(@(ROOT_"""BA"","""_ICDX_". "")")))
SET ICDX=ICDX_"."
SET ICDXP=ICDXP_"."
+172 if $EXTRACT(ICDX,1)="E"&($EXTRACT(ICDX,2,4)?3N)&($DATA(@(ROOT_"""BA"","""_ICDX_". "")")))
SET ICDX=ICDX_"."
SET ICDXP=ICDXP_"."
+173 if $EXTRACT(ICDX,1)?1U&($EXTRACT(ICDX,2,3)?2N)&($DATA(@(ROOT_"""BA"","""_ICDX_". "")")))
SET ICDX=ICDX_"."
SET ICDXP=ICDXP_"."
End DoDot:1
+174 IF ICDX="?"
IF $GET(DIC(0))'["A"
Begin DoDot:1
+175 DO INPH^ICDEXLK2(FILE)
SET ICDX=""
if $GET(DIC(0))'["A"
SET DIC(0)=DIC(0)_"A"
End DoDot:1
IF $LENGTH($GET(DIE))
IF $LENGTH($GET(DIC))
IF $GET(DIE)'=$GET(DIC)
SET Y=-1
if '$DATA(DDS)
WRITE !
QUIT
+176 IF ICDX="??"
IF $GET(DIC(0))'["A"
Begin DoDot:1
+177 DO INPH2^ICDEXLK2(FILE)
SET ICDX=""
if $GET(DIC(0))'["A"
SET DIC(0)=DIC(0)_"A"
End DoDot:1
IF $LENGTH($GET(DIE))
IF $LENGTH($GET(DIC))
IF $GET(DIE)'=$GET(DIC)
SET Y=-1
if '$DATA(DDS)
WRITE !
QUIT
LKR ; Lookup Recursive
+1 if $GET(DIC(0))'["A"&($LENGTH($GET(ICDX)))&('$LENGTH($GET(X)))
SET X=ICDX
+2 SET (INPE,ICDOFND)=0
SET ICDOVAL=1
if '$LENGTH($GET(DIC(0)))
SET DIC(0)="AEM"
SET ICDREDO=""
+3 if $LENGTH($GET(DIC(0)))
SET DIC(0)=$TRANSLATE(DIC(0),"CL","")
+4 ; User Input
+5 IF +($GET(ICDOREV))>0
Begin DoDot:1
+6 SET (ICDOFND,ICDOSEL,ICDOREV)=0
KILL X
SET ICDX=""
End DoDot:1
+7 SET (ICDOUPA,ICDOTIM)=0
IF $GET(DIC(0))["A"
Begin DoDot:1
+8 NEW ICDT
SET ICDOVAL=1
SET X=$$INP^ICDEXLK2(FILE,$GET(ICDVER),$GET(ICDCDT))
SET ICDT=$$XT^ICDEXLK6(X)
+9 if ICDT'=X
SET ICDOVAL=0
SET X=ICDT
End DoDot:1
+10 IF '$LENGTH($GET(X))
IF $GET(DIC(0))'["T"
IF +($GET(ICDOUPA))'>1
IF +($GET(ICDOVAL))>0
SET X=""
SET ICDOREV=1
GOTO ERR
+11 IF '$LENGTH($GET(X))
IF +($GET(ICDOVAL))'>0
IF +($GET(ICDOUPA))'>0
IF +($GET(ICDOTIM))'>0
Begin DoDot:1
+12 if ICDOUPA'>0&(ICDOTIM'>0)&('$DATA(DDS))
WRITE " ??"
End DoDot:1
GOTO LKR
+13 if ICDOTIM>0
SET DTOUT=1
if ICDOTIM>0
GOTO ERR
if ICDOUPA>0
SET DUOUT=1
if ICDOUPA>0
GOTO ERR
+14 IF ($GET(DIC(0))["A")
IF ('$LENGTH($GET(X))!(X="^"))
IF $GET(DIC(0))["T"
SET X=""
KILL Y
GOTO LKR
+15 IF $GET(DIC(0))'["A"&($LENGTH($GET(ICDX)))
SET X=$GET(ICDX)
+16 IF $GET(X)["^"
SET DUOUT=""
GOTO ERR
+17 IF '$LENGTH($GET(X))
GOTO ERR
+18 SET X=$$TM^ICDEXLK6(X)
SET INP=X
SET INP1=$EXTRACT(INP,1)
SET INP2=$EXTRACT(INP,2,245)
if INP1="`"&(INP2?1N.N)
SET INPE=1
+19 ; Search #1 - Forced IEN
+20 KILL Y
SET (ICDOUPA,ICDOTIM)=0
IF INPE>0
Begin DoDot:1
+21 DO IEN^ICDEXLK5
SET ICDOUPA=+($GET(ICDOUPA))
SET ICDOTIM=+($GET(ICDOTIM))
+22 if +($GET(Y))>0&($LENGTH($PIECE($GET(Y),"^",2))>0)
SET (ICDX,X)=$PIECE($GET(Y),"^",2)
+23 IF '$LENGTH($GET(X))
IF +($GET(Y))<0
IF $GET(DIC(0))'["A"
Begin DoDot:2
+24 SET (X,ICDX,ICDXP,INP,INP1,INP2)=""
SET Y="-1^No Selection Made"
+25 if $LENGTH($GET(DICR("1")))
SET DICR("1")=""
End DoDot:2
QUIT
+26 IF +($GET(ICDOFND))'>0
IF $GET(DIC(0))["Q"
Begin DoDot:2
+27 if (ICDOPTR'>0)&(ICDOUPA'>0)&(ICDOTIM'>0)&('$DATA(DDS))&(+($GET(ICDOREV))'>0)
WRITE " ??"
+28 if (ICDOPTR>0)&('$DATA(DDS))
WRITE !
End DoDot:2
+29 IF +($GET(ICDOFND))'>0
SET (ICDX,X)=""
SET Y=-1
if $DATA(ICDOINP)
SET ICDOINP=""
End DoDot:1
+30 ; Abort Search #1
+31 IF INPE>0
IF '$LENGTH($GET(X))
IF +($GET(Y))<0
IF $GET(DIC(0))'["A"
GOTO QUIT
+32 IF INPE>0
IF $LENGTH($GET(X))
IF +($GET(Y))>0
IF $PIECE($GET(Y),"^",2)=$GET(X)
GOTO QUIT
+33 IF INPE>0
if ($LENGTH($GET(X))&(+($GET(Y))>0))!($GET(ICDOUPA)=2)
GOTO QUIT
if +($GET(ICDOTIM))>0
GOTO QUIT
+34 IF INPE>0
if (+($GET(ICDOFND))'>0!($GET(ICDOUPA)=1))&($GET(DIC(0))["A")
GOTO LKR
+35 IF INPE>0
if +($GET(ICDOFND))>0&($GET(ICDOSEL)'>0)&($GET(ICDOREV)>0)&($GET(DIC(0))["A")
GOTO LKR
+36 IF $DATA(Y)
if +Y<0
SET X=INP
GOTO QUIT
+37 ; Search #2 - Lookup X
+38 SET (ICDOUPA,ICDOTIM)=0
NEW LOUD
SET LOUD=""
SET ICDX=X
IF +($GET(ICDOFND))'>0
Begin DoDot:1
+39 ; Text Search
+40 if $LENGTH($GET(ICDX))&($LENGTH($GET(ICDX))>1)
SET ICDOFND=$$LK^ICDEXLK3($GET(X),FILE,ICDCDT,ICDCSY,ICDVER,ICDOUT)
+41 ; Code Search
+42 if $LENGTH($GET(ICDX))&($LENGTH($GET(ICDX))'>1)
SET ICDOFND=$$CD^ICDEXLK3($GET(X),FILE,ICDCDT,ICDCSY,ICDVER,ICDOUT)
+43 SET ICDOFND=+($GET(ICDOFND))
if $LENGTH($GET(ICDX))
SET X=$GET(ICDX)
End DoDot:1
+44 ; Abort Search #2
+45 IF +($GET(ICDOFND))'>0
IF $GET(DIC(0))["Q"
Begin DoDot:1
+46 if (ICDOPTR'>0)&('$DATA(DDS))&(+($GET(ICDOREV))'>0)
WRITE " ??"
End DoDot:1
+47 IF +($GET(ICDOFND))'>0
IF $LENGTH($GET(INP))
IF $EXTRACT(INP,1)'=" "
IF $GET(DIC(0))["A"
KILL ICDX,X,Y,INP,INP1,INP2
GOTO LKR
+48 if +($GET(ICDOFND))'>0
SET X=$GET(INP)
+49 ; Nothing Found
+50 IF +($GET(ICDOFND))'>0
IF $GET(DIC(0))'["T"
Begin DoDot:1
+51 if $GET(DIC(0))["E"&(ICDOPTR'>0)&('$DATA(DDS))
WRITE !," No matches found"
+52 SET X=$SELECT($LENGTH($GET(INP)):INP,1:$GET(X))
SET Y="-1^No matches found"
End DoDot:1
GOTO QUIT
+53 IF +($GET(ICDOFND))'>0
IF $GET(DIC(0))["T"
KILL Y
GOTO LKR
+54 ; Results found
+55 SET (ICDOUPA,ICDOTIM)=0
DO ASK^ICDEXLK2
if $DATA(DTOUT)
GOTO ERR
+56 if ICDOTIM>0
SET DTOUT=1
if ICDOTIM>0
GOTO ERR
+57 IF +($GET(ICDOUPA))>1
SET DUOUT=1
if '$DATA(DDS)
WRITE !
GOTO QUIT
+58 if +($GET(ICDOUPA))=1&(DIC(0)'["A")
GOTO QUIT
+59 if +($GET(ICDOUPA))=1&(DIC(0)["A")
GOTO LKR
+60 IF +($GET(ICDOFND))>0
IF +($GET(ICDOSEL))'>0
IF +($GET(ICDOREV))>0
IF +($GET(ICDOPTR))>0
Begin DoDot:1
+61 SET X=ICDX
if $GET(DIC(0))'["A"
SET (ICDX,INP1,INP2,ICDOINP,X)=""
SET Y="-1^No selection made"
End DoDot:1
GOTO QUIT
+62 IF +($GET(ICDOFND))>0
IF +($GET(ICDOSEL))'>0
IF +($GET(ICDOREV))>0
IF +($GET(ICDOPTR))'>0
Begin DoDot:1
+63 SET (ICDX,INP1,INP2,ICDOINP,X)=""
SET Y="-1^No selection made"
End DoDot:1
if $GET(ICDOUPA)>1!($GET(DIC(0))'["A")
GOTO QUIT
if DIC(0)["A"
GOTO LKR
+64 if +($GET(Y))'>0
GOTO ERR
DO QUIT
+65 QUIT
LKQ ; Quit
+1 QUIT
ERR ; Quit On Error/Time Out
+1 NEW ICDX,ICDY
SET ICDY=$GET(Y)
SET ICDX=$GET(X)
KILL X,Y
SET Y=-1
+2 if $LENGTH($PIECE($GET(ICDY),"^",2))
SET Y=Y_"^"_$PIECE($GET(ICDY),"^",2)
+3 IF $GET(ICDOTIM)>0
IF $GET(DIC(0))["E"
IF '$DATA(DDS)
WRITE !!,?2,"Try again later"
KILL ERR
+4 IF $GET(ICDOUPA)>0
IF $GET(DIC(0))["E"
KILL ERR
+5 IF $GET(ICDOUPA)>0
IF +($GET(ICDOFND)>0)
IF +($GET(ICDOSEL)'>0)
IF $GET(DIC(0))["E"
KILL ERR
+6 IF $LENGTH($GET(ERR))
IF $GET(DIC(0))["E"
IF '$DATA(DDS)
WRITE !!,?2,$GET(ERR)
+7 if $EXTRACT(ICDY,1,2)="-1"&($LENGTH($PIECE($GET(ICDY),"^",2)))
SET Y=ICDY
SET X=ICDX
+8 IF $EXTRACT(Y,1,2)="-1"
IF +($GET(ICDOFND)>0)
IF +($GET(ICDOSEL)'>0)
SET Y="-1^No Selection Made"
+9 DO QUIT
+10 QUIT
QUIT ; Quit without Error
+1 KILL DUOUT,DTOUT
if ICDOUPA=1
SET DUOUT=1
SET X="^"
SET Y="-1^Search aborted (up-arrow detected)"
+2 if ICDOUPA=2
SET DUOUT=1
SET X="^^"
SET Y="-1^Search aborted (double up-arrow detected)"
+3 if ICDOTIM>0
SET DTOUT=1
SET X=""
SET Y="-1^Search aborted (timed out)"
if $DATA(DUOUT)!($DATA(DTOUT))
QUIT
+4 IF $GET(ICDOFND)>0
IF $GET(ICDOREV)>0
IF $GET(ICDOSEL)'>0
SET X=""
SET Y="-1^No Selection Made"
QUIT
+5 IF '$LENGTH(($GET(ICDX)_$GET(X)))
IF +Y<0
IF '$LENGTH($PIECE($GET(Y),"^",2))
IF $GET(DIC(0))'["A"
SET Y="-1^No user input"
QUIT
+6 if +Y>0
DO Y^ICDEXLK2($GET(ROOT),+Y,$GET(ICDCDT))
+7 IF $PIECE($GET(X),"`",2)=$PIECE($GET(Y),"^",1)
IF $LENGTH($PIECE($GET(Y),"^",2))
SET (ICDX,X)=$PIECE($GET(Y),"^",2)
+8 IF +($GET(Y))>0
IF X=$PIECE($GET(Y),"^",1)
IF $LENGTH($PIECE($GET(Y),"^",2))
SET (ICDX,X)=$PIECE($GET(Y),"^",2)
+9 IF X=" "
IF $PIECE($GET(Y),"^",1)>0
IF $LENGTH($PIECE($GET(Y),"^",2))
IF $DATA(@(ROOT_+($PIECE($GET(Y),"^",1))_",0)"))
SET X=$PIECE($GET(Y),"^",2)
+10 DO DICU^ICDEXLK6
IF $DATA(DDS)
if $LENGTH($GET(ICDOINP))&(+Y'>0)
SET X=$GET(ICDOINP)
+11 IF ICDOTIM'>0
IF $GET(DIC(0))["A"
IF $LENGTH($GET(INP))
IF +($GET(Y))>0
IF $LENGTH($PIECE($GET(Y),"^",2))
SET (ICDX,X)=INP
+12 if $LENGTH($GET(ICDX))
SET X=$GET(ICDX)
SET X=$GET(X)
DO RED
+13 QUIT
RED ; Re-Display
+1 if +($GET(Y))'>0
QUIT
if '$LENGTH($PIECE($GET(Y),"^",2))
QUIT
if $GET(FILE)'>0
QUIT
if $DATA(DDS)
QUIT
if $GET(DIC(0))'["E"
QUIT
+2 if ICDOPTR>1
QUIT
NEW CODE,EXP,CC,STA
SET CODE=$PIECE(Y,"^",2)
SET CODE=CODE_$JUSTIFY(" ",(10-$LENGTH($GET(CODE))))
+3 SET CC=""
if FILE=80
SET CC=$$VCC^ICDEX(+Y,$GET(ICDCDT))
+4 SET CC=$SELECT(CC="1":" (CC)",CC="2":" (Major CC)",1:"")
+5 SET STA=$ORDER(@(ROOT_+Y_",66,""B"","_(+($GET(ICDCDT))+.000001)_")"),-1)
+6 SET STA=$ORDER(@(ROOT_+Y_",66,""B"","_+STA_","" "")"),-1)
+7 SET STA=$PIECE($GET(@(ROOT_+Y_",66,"_+STA_",0)")),"^",2)
+8 SET STA=$SELECT($GET(STA)?1N&(+$GET(STA)'>0):" (Inactive)",$GET(STA)'?1N&(+$GET(STA)'>0):" (Pending)",1:"")
+9 if $GET(ICDFMT)=2!($GET(ICDFMT)=4)
SET EXP=$$VLT^ICDEX(FILE,+Y,$GET(ICDCDT))
+10 if $GET(ICDFMT)=1!($GET(ICDFMT)=3)!($GET(ICDFMT)="")
SET EXP=$$VST^ICDEX(FILE,+Y,$GET(ICDCDT))
+11 if $LENGTH($GET(CODE))&($LENGTH($GET(EXP)))&($DATA(DPP(1)))
WRITE !,?5
if $LENGTH($GET(CODE))&($LENGTH($GET(EXP)))
WRITE " ",$GET(CODE),$GET(EXP),$GET(CC),$GET(STA)
+12 QUIT
CLR ; Clear Environment
+1 KILL DDS,DICR
NEW ICDTEST,DPP,DR
+2 QUIT