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

ICDEXLK.m

Go to the documentation of this file.
  1. ICDEXLK ;SLC/KER - ICD Extractor - Lookup ;12/19/2014
  1. ;;18.0;DRG Grouper;**57,67**;Oct 20, 2000;Build 1
  1. ;
  1. ; Global Variables
  1. ; ^ICDS( N/A
  1. ; ^TMP("ICD0") SACC 2.3.2.5.1
  1. ; ^TMP("ICD9") SACC 2.3.2.5.1
  1. ; ^TMP("ICDEXLK") SACC 2.3.2.5.1
  1. ;
  1. ; External References
  1. ; $$DT^XLFDT ICR 10103
  1. ;
  1. ; Local Variables NEWed or KILLed Elsewhere
  1. ; DIC,ICDFMT,ICDSYS,ICDVDT
  1. ;
  1. LK ; Lookup
  1. ;
  1. ; This is the Special Lookup program for files 80 and 80.1.
  1. ; Only the ^DIC call honors the special lookup routines.
  1. ; Those calls that allow the user to specify the indexes
  1. ; (IX^DIC and MIX^DIC1), and the Data Base Server calls
  1. ; (FIND^DIC, $$FIND1^DIC, and UPDATE^DIE) all ignore the
  1. ; Special Lookup Program. Also, if DIC(0) contains an
  1. ; "I" then the Special Lookup program will be ignored.
  1. ;
  1. ; Local Variables Newed or Killed by Calling Application
  1. ;
  1. ; Versioning Date (Fileman format) (OLD, CSV)
  1. ;
  1. ; ICDVDT or
  1. ; ^TMP("ICDEXLK",$J,"ICDVDT"
  1. ;
  1. ; If supplied only active codes on that date
  1. ; will be included in the selection list.
  1. ;
  1. ; If not supplied, the date will default to
  1. ; TODAY and all codes may be selected, active
  1. ; and inactive.
  1. ;
  1. ; Coding System (from file 80.4) (new)
  1. ;
  1. ; ICDSYS or
  1. ; ^TMP("ICDEXLK",$J,"ICDSYS"
  1. ;
  1. ; 1 ICD ICD-9-CM
  1. ; 2 ICP ICD-9 Proc
  1. ; 30 10D ICD-10-CM
  1. ; 31 10P ICD-10-PCS
  1. ;
  1. ; Display Format (numeric, 1-4) (new)
  1. ;
  1. ; ICDFMT or
  1. ; ^TMP("ICDEXLK",$J,"ICDFMT"
  1. ;
  1. ; 1 = Fileman format, code and short text (default)
  1. ;
  1. ; 250.00 DMII CMP NT ST UNCNTR
  1. ;
  1. ; 2 = Fileman format, code and description
  1. ;
  1. ; 250.00 DIABETES MELLITUS NO MENTION OF
  1. ; COMPLICATION, TYPE II OR UNSPECIFIED TYPE
  1. ;
  1. ; 3 = Lexicon format, short text followed by code
  1. ;
  1. ; DMII CMP NT ST UNCNTR (250.00)
  1. ;
  1. ; 4 = Lexicon format, description followed by code
  1. ;
  1. ; DIABETES MELLITUS NO MENTION OF COMPLICATION,
  1. ; TYPE II OR UNSPECIFIED TYPE (250.00)
  1. ;
  1. ; Special Lookup
  1. ; ^DD(80,0,"DIC")="ICDEXLK"
  1. ; ^DD(80.1,0,"DIC")="ICDEXLK"
  1. ;
  1. ; FileMan Variables
  1. ;
  1. ; X If DIC(0) does not contain an A, then the variable
  1. ; X must be defined
  1. ;
  1. ; DIC Global root or File Number
  1. ;
  1. ; ^ICD9( or 80
  1. ; ^ICD0( or 80.1
  1. ;
  1. ; DIC(0) (Optional) A string of characters which alter how
  1. ; DIC responds. Default value for ICD files "AEM"
  1. ;
  1. ; Applicable to a versioned lookup
  1. ; A Ask
  1. ; E Echo
  1. ; F Forget lookup value
  1. ; I Ignore lookup program
  1. ; O Find one exact match
  1. ; Q Question Input ??
  1. ; S Suppresses display of .01
  1. ; X EXact match required
  1. ; Z Expand output Y variable
  1. ;
  1. ; Not Applicable/Used in a versioned lookup
  1. ;
  1. ; C, B, K, L, M, N, n, U, T and V
  1. ;
  1. ; DIC("A") (Optional) A prompt that is displayed prior to the
  1. ; reading of the X input.
  1. ;
  1. ; DIC("B") (Optional) The default answer which is presented to
  1. ; the user when the lookup prompt is issued.
  1. ;
  1. ; DIC("S") (Optional) DIC("S") Screen M code that sets the
  1. ; value of $T.
  1. ;
  1. ; DIC("W") (Optional) An M command string displays each entry
  1. ; that matches the user's input
  1. ;
  1. ; DIC("?N",<file>)=n
  1. ; (Optional) The number "n" should be an integer set
  1. ; to the number of entries to be displayed
  1. ;
  1. ; FileMan Variables KILLed: DLAYGO and DINUM
  1. ;
  1. ; Output
  1. ;
  1. ; Y IEN ^ Code Fileman
  1. ;
  1. ; If DIC(0) contains "Z"
  1. ;
  1. ; Y(0) 0 Node Fileman
  1. ; Y(0,0) Code Fileman
  1. ; Y(0,1) $$ICDDX or $$ICDOP Non-Fileman
  1. ; Y(0,2) Long Description Non-Fileman
  1. ;
  1. K ^TMP("ICD9",$J),^TMP("ICD0",$J) D DIE^ICDEXLK6
  1. N DIRUT,DIROUT,FILE,ROOT,SUB,SBI,ICDDICA,ICDDICB,ICDDICN,ICDDICW,ICDDICS,ICDDICST
  1. N ICDDIC0,ICDOLD0,ICDDIC00,ICDCDT,ICDCSY,ICDISF,ICDOUT,ICDVER,ICDX,ICDXP,KEY,INP,INP2,INP1
  1. N INPE,ERR,ICDOFND,ICDOSEL,ICDOINP,ICDREDO,ICDOREV,ICDISCD,ICDOUPA,ICDOTIM,ICDOPTR,ICDOVAL
  1. S (ICDOFND,ICDOSEL,ICDOREV,ICDOUPA,ICDOTIM)=0,ICDXP=$$XT^ICDEXLK6($G(X)),ICDOPTR=+($O(DICR(" "),-1))
  1. K DLAYGO,DINUM S (ICDOINP,ICDX)=$$XT^ICDEXLK6($S($E($G(X),1)'=" ":$$TM^ICDEXLK6($G(X)),1:$G(X)))
  1. K X,Y,DTOUT,DUOUT S ICDCSY=0,ROOT=$G(DIC),FILE=$$FILE^ICDEX(ROOT),ICDOVAL=1
  1. I "^80^80.1^"'[("^"_FILE_"^") S ERR="Invalid File" G ERR
  1. S ROOT=$$ROOT^ICDEX(FILE)
  1. I "^ICD9(^ICD0(^"'[("^"_$E(ROOT,2,$L($G(ROOT)))_"^") S ERR="Invalid Global Root" G ERR
  1. ; Exact code entered, no subordinates
  1. I $L($G(ICDXP)),$G(DIC(0))'["A" D
  1. . N ICDTMP F ICDTMP=ICDXP,($TR(ICDXP,"""","")_".") D Q:$G(ICDX)["`"
  1. . . N ICD0,ICD1,ICD2,ICDF S ICD0=$TR(ICDTMP,"""","")
  1. . . S ICD1=$O(@(ROOT_"""BA"","""_ICD0_""",0)"))
  1. . . S ICD2=$O(@(ROOT_"""BA"","""_ICD0_""","" "")"),-1)
  1. . . I ICD1>0,ICD1=ICD2 S (X,ICDX)="`"_+ICD1 Q
  1. . . S ICD1=$O(@(ROOT_"""BA"","""_ICD0_" "",0)"))
  1. . . S ICD2=$O(@(ROOT_"""BA"","""_ICD0_" "","" "")"),-1)
  1. . . I ICD1>0,ICD1=ICD2 S (X,ICDX)="`"_+ICD1
  1. I $G(ICDX)[";" D
  1. . N ICD1,ICD2,ICD3 S ICD1=$P(ICDX,";",1),ICD2=("^"_$P(ICDX,";",2))
  1. . Q:ICD2'=DIC Q:ICD1'?1N.N S ICD3=$P($G(@(ROOT_+ICD1_",0)")),"^",1)
  1. . I $D(@(ROOT_+ICD1_",0)")) S (X,ICDX)="`"_+ICD1
  1. ; System
  1. S ICDCSY=0
  1. S:$L($G(ICDSYS)) ICDCSY=$G(ICDSYS)
  1. S:'$L($G(ICDSYS))&($L($G(^TMP("ICDEXLK",$J,"ICDSYS")))) ICDCSY=$G(^TMP("ICDEXLK",$J,"ICDSYS"))
  1. S ICDCSY=$$SYS^ICDEX($G(ICDCSY))
  1. ; Date
  1. S:$L($G(ICDVDT)) ICDCDT=$G(ICDVDT)
  1. S:'$L($G(ICDVDT))&($L($G(^TMP("ICDEXLK",$J,"ICDVDT")))) ICDCDT=$G(^TMP("ICDEXLK",$J,"ICDVDT"))
  1. ; Format
  1. S ICDOUT=0 S:$L($G(ICDFMT)) ICDOUT=$G(ICDFMT)
  1. I $D(DDS) S:$D(ICDFMT) ICDFMT=1 S ICDOUT=1
  1. S:'$L($G(ICDFMT))&($L($G(^TMP("ICDEXLK",$J,"ICDFMT")))) ICDOUT=$G(^TMP("ICDEXLK",$J,"ICDFMT"))
  1. S:+ICDOUT'>0 ICDOUT=1 S:+ICDOUT>4 ICDOUT=1
  1. S:$L($G(ICDFMT))!($L($G(^TMP("ICDEXLK",$J,"ICDFMT")))) ICDISF=1
  1. ; Versioned Lookup
  1. S ICDVER=$S($G(ICDCDT)?7N:1,1:0) S:$G(ICDCDT)'?7N ICDCDT=$$DT^XLFDT
  1. ; Enforce Business Rule for Date
  1. I ICDVER'>0 S:$D(^ICDS(+ICDCSY,0)) ICDCDT=$$DTBR^ICDEX(ICDCDT,,+($G(ICDCSY)))
  1. ; Space Bar Return (passed)
  1. 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
  1. ; TMP global
  1. S SUB=$TR(ROOT,"^(","") K ^TMP(SUB,$J)
  1. ; Save DIC
  1. S ICDDICA=$G(DIC("A")),ICDDICB=$G(DIC("B")),ICDDICW=$G(DIC("W"))
  1. S ICDDICS="",ICDDICST=$$DICS^ICDEXLK6($G(DIC("S"))) S:$L($G(ICDDICST)) ICDDICS=ICDDICST
  1. S ICDDICN=$G(DIC("?N",FILE)) S:+ICDDICN'>0 ICDDICN=5
  1. S ICDDIC00=$G(DIC(0)),(ICDDIC0,DIC(0))=$$DIC0^ICDEXLK6($G(DIC(0)))
  1. K:+($G(ICDISF))>0 DIC("W") K:$D(DDS) DIC("W")
  1. I $L($G(ICDX))'>4,ICDX'["." D
  1. . S:ICDX?3N&($D(@(ROOT_"""BA"","""_ICDX_". "")"))) ICDX=ICDX_".",ICDXP=ICDXP_"."
  1. . S:$E(ICDX,1)="E"&($E(ICDX,2,4)?3N)&($D(@(ROOT_"""BA"","""_ICDX_". "")"))) ICDX=ICDX_".",ICDXP=ICDXP_"."
  1. . S:$E(ICDX,1)?1U&($E(ICDX,2,3)?2N)&($D(@(ROOT_"""BA"","""_ICDX_". "")"))) ICDX=ICDX_".",ICDXP=ICDXP_"."
  1. 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
  1. . D INPH^ICDEXLK2(FILE) S ICDX="" S:$G(DIC(0))'["A" DIC(0)=DIC(0)_"A"
  1. 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
  1. . D INPH2^ICDEXLK2(FILE) S ICDX="" S:$G(DIC(0))'["A" DIC(0)=DIC(0)_"A"
  1. LKR ; Lookup Recursive
  1. S:$G(DIC(0))'["A"&($L($G(ICDX)))&('$L($G(X))) X=ICDX
  1. S (INPE,ICDOFND)=0,ICDOVAL=1 S:'$L($G(DIC(0))) DIC(0)="AEM" S ICDREDO=""
  1. S:$L($G(DIC(0))) DIC(0)=$TR(DIC(0),"CL","")
  1. ; User Input
  1. I +($G(ICDOREV))>0 D
  1. . S (ICDOFND,ICDOSEL,ICDOREV)=0 K X S ICDX=""
  1. S (ICDOUPA,ICDOTIM)=0 I $G(DIC(0))["A" D
  1. . N ICDT S ICDOVAL=1,X=$$INP^ICDEXLK2(FILE,$G(ICDVER),$G(ICDCDT)) S ICDT=$$XT^ICDEXLK6(X)
  1. . S:ICDT'=X ICDOVAL=0,X=ICDT
  1. I '$L($G(X)),$G(DIC(0))'["T",+($G(ICDOUPA))'>1,+($G(ICDOVAL))>0 S X="",ICDOREV=1 G ERR
  1. I '$L($G(X)),+($G(ICDOVAL))'>0,+($G(ICDOUPA))'>0,+($G(ICDOTIM))'>0 D G LKR
  1. . W:ICDOUPA'>0&(ICDOTIM'>0)&('$D(DDS)) " ??"
  1. S:ICDOTIM>0 DTOUT=1 G:ICDOTIM>0 ERR S:ICDOUPA>0 DUOUT=1 G:ICDOUPA>0 ERR
  1. I ($G(DIC(0))["A"),('$L($G(X))!(X="^")),$G(DIC(0))["T" S X="" K Y G LKR
  1. I $G(DIC(0))'["A"&($L($G(ICDX))) S X=$G(ICDX)
  1. I $G(X)["^" S DUOUT="" G ERR
  1. I '$L($G(X)) G ERR
  1. S X=$$TM^ICDEXLK6(X),INP=X,INP1=$E(INP,1),INP2=$E(INP,2,245) S:INP1="`"&(INP2?1N.N) INPE=1
  1. ; Search #1 - Forced IEN
  1. K Y S (ICDOUPA,ICDOTIM)=0 I INPE>0 D
  1. . D IEN^ICDEXLK5 S ICDOUPA=+($G(ICDOUPA)),ICDOTIM=+($G(ICDOTIM))
  1. . S:+($G(Y))>0&($L($P($G(Y),"^",2))>0) (ICDX,X)=$P($G(Y),"^",2)
  1. . I '$L($G(X)),+($G(Y))<0,$G(DIC(0))'["A" D Q
  1. . . S (X,ICDX,ICDXP,INP,INP1,INP2)="",Y="-1^No Selection Made"
  1. . . S:$L($G(DICR("1"))) DICR("1")=""
  1. . I +($G(ICDOFND))'>0,$G(DIC(0))["Q" D
  1. . . W:(ICDOPTR'>0)&(ICDOUPA'>0)&(ICDOTIM'>0)&('$D(DDS))&(+($G(ICDOREV))'>0) " ??"
  1. . . W:(ICDOPTR>0)&('$D(DDS)) !
  1. . I +($G(ICDOFND))'>0 S (ICDX,X)="",Y=-1 S:$D(ICDOINP) ICDOINP=""
  1. ; Abort Search #1
  1. I INPE>0,'$L($G(X)),+($G(Y))<0,$G(DIC(0))'["A" G QUIT
  1. I INPE>0,$L($G(X)),+($G(Y))>0,$P($G(Y),"^",2)=$G(X) G QUIT
  1. I INPE>0 G:($L($G(X))&(+($G(Y))>0))!($G(ICDOUPA)=2) QUIT G:+($G(ICDOTIM))>0 QUIT
  1. I INPE>0 G:(+($G(ICDOFND))'>0!($G(ICDOUPA)=1))&($G(DIC(0))["A") LKR
  1. I INPE>0 G:+($G(ICDOFND))>0&($G(ICDOSEL)'>0)&($G(ICDOREV)>0)&($G(DIC(0))["A") LKR
  1. I $D(Y) S:+Y<0 X=INP G QUIT
  1. ; Search #2 - Lookup X
  1. S (ICDOUPA,ICDOTIM)=0 N LOUD S LOUD="" S ICDX=X I +($G(ICDOFND))'>0 D
  1. . ; Text Search
  1. . S:$L($G(ICDX))&($L($G(ICDX))>1) ICDOFND=$$LK^ICDEXLK3($G(X),FILE,ICDCDT,ICDCSY,ICDVER,ICDOUT)
  1. . ; Code Search
  1. . S:$L($G(ICDX))&($L($G(ICDX))'>1) ICDOFND=$$CD^ICDEXLK3($G(X),FILE,ICDCDT,ICDCSY,ICDVER,ICDOUT)
  1. . S ICDOFND=+($G(ICDOFND)) S:$L($G(ICDX)) X=$G(ICDX)
  1. ; Abort Search #2
  1. I +($G(ICDOFND))'>0,$G(DIC(0))["Q" D
  1. . W:(ICDOPTR'>0)&('$D(DDS))&(+($G(ICDOREV))'>0) " ??"
  1. I +($G(ICDOFND))'>0,$L($G(INP)),$E(INP,1)'=" ",$G(DIC(0))["A" K ICDX,X,Y,INP,INP1,INP2 G LKR
  1. S:+($G(ICDOFND))'>0 X=$G(INP)
  1. ; Nothing Found
  1. I +($G(ICDOFND))'>0,$G(DIC(0))'["T" D G QUIT
  1. . W:$G(DIC(0))["E"&(ICDOPTR'>0)&('$D(DDS)) !," No matches found"
  1. . S X=$S($L($G(INP)):INP,1:$G(X)),Y="-1^No matches found"
  1. I +($G(ICDOFND))'>0,$G(DIC(0))["T" K Y G LKR
  1. ; Results found
  1. S (ICDOUPA,ICDOTIM)=0 D ASK^ICDEXLK2 G:$D(DTOUT) ERR
  1. S:ICDOTIM>0 DTOUT=1 G:ICDOTIM>0 ERR
  1. I +($G(ICDOUPA))>1 S DUOUT=1 W:'$D(DDS) ! G QUIT
  1. G:+($G(ICDOUPA))=1&(DIC(0)'["A") QUIT
  1. G:+($G(ICDOUPA))=1&(DIC(0)["A") LKR
  1. I +($G(ICDOFND))>0,+($G(ICDOSEL))'>0,+($G(ICDOREV))>0,+($G(ICDOPTR))>0 D G QUIT
  1. . S X=ICDX S:$G(DIC(0))'["A" (ICDX,INP1,INP2,ICDOINP,X)="",Y="-1^No selection made"
  1. 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
  1. . S (ICDX,INP1,INP2,ICDOINP,X)="",Y="-1^No selection made"
  1. G:+($G(Y))'>0 ERR D QUIT
  1. Q
  1. LKQ ; Quit
  1. Q
  1. ERR ; Quit On Error/Time Out
  1. N ICDX,ICDY S ICDY=$G(Y),ICDX=$G(X) K X,Y S Y=-1
  1. S:$L($P($G(ICDY),"^",2)) Y=Y_"^"_$P($G(ICDY),"^",2)
  1. I $G(ICDOTIM)>0,$G(DIC(0))["E",'$D(DDS) W !!,?2,"Try again later" K ERR
  1. I $G(ICDOUPA)>0,$G(DIC(0))["E" K ERR
  1. I $G(ICDOUPA)>0,+($G(ICDOFND)>0),+($G(ICDOSEL)'>0),$G(DIC(0))["E" K ERR
  1. I $L($G(ERR)),$G(DIC(0))["E",'$D(DDS) W !!,?2,$G(ERR)
  1. S:$E(ICDY,1,2)="-1"&($L($P($G(ICDY),"^",2))) Y=ICDY S X=ICDX
  1. I $E(Y,1,2)="-1",+($G(ICDOFND)>0),+($G(ICDOSEL)'>0) S Y="-1^No Selection Made"
  1. D QUIT
  1. Q
  1. QUIT ; Quit without Error
  1. K DUOUT,DTOUT S:ICDOUPA=1 DUOUT=1,X="^",Y="-1^Search aborted (up-arrow detected)"
  1. S:ICDOUPA=2 DUOUT=1,X="^^",Y="-1^Search aborted (double up-arrow detected)"
  1. S:ICDOTIM>0 DTOUT=1,X="",Y="-1^Search aborted (timed out)" Q:$D(DUOUT)!($D(DTOUT))
  1. I $G(ICDOFND)>0,$G(ICDOREV)>0,$G(ICDOSEL)'>0 S X="",Y="-1^No Selection Made" Q
  1. I '$L(($G(ICDX)_$G(X))),+Y<0,'$L($P($G(Y),"^",2)),$G(DIC(0))'["A" S Y="-1^No user input" Q
  1. D:+Y>0 Y^ICDEXLK2($G(ROOT),+Y,$G(ICDCDT))
  1. I $P($G(X),"`",2)=$P($G(Y),"^",1),$L($P($G(Y),"^",2)) S (ICDX,X)=$P($G(Y),"^",2)
  1. I +($G(Y))>0,X=$P($G(Y),"^",1),$L($P($G(Y),"^",2)) S (ICDX,X)=$P($G(Y),"^",2)
  1. 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)
  1. D DICU^ICDEXLK6 I $D(DDS) S:$L($G(ICDOINP))&(+Y'>0) X=$G(ICDOINP)
  1. I ICDOTIM'>0,$G(DIC(0))["A",$L($G(INP)),+($G(Y))>0,$L($P($G(Y),"^",2)) S (ICDX,X)=INP
  1. S:$L($G(ICDX)) X=$G(ICDX) S X=$G(X) D RED
  1. Q
  1. RED ; Re-Display
  1. Q:+($G(Y))'>0 Q:'$L($P($G(Y),"^",2)) Q:$G(FILE)'>0 Q:$D(DDS) Q:$G(DIC(0))'["E"
  1. Q:ICDOPTR>1 N CODE,EXP,CC,STA S CODE=$P(Y,"^",2) S CODE=CODE_$J(" ",(10-$L($G(CODE))))
  1. S CC="" S:FILE=80 CC=$$VCC^ICDEX(+Y,$G(ICDCDT))
  1. S CC=$S(CC="1":" (CC)",CC="2":" (Major CC)",1:"")
  1. S STA=$O(@(ROOT_+Y_",66,""B"","_(+($G(ICDCDT))+.000001)_")"),-1)
  1. S STA=$O(@(ROOT_+Y_",66,""B"","_+STA_","" "")"),-1)
  1. S STA=$P($G(@(ROOT_+Y_",66,"_+STA_",0)")),"^",2)
  1. S STA=$S($G(STA)?1N&(+$G(STA)'>0):" (Inactive)",$G(STA)'?1N&(+$G(STA)'>0):" (Pending)",1:"")
  1. S:$G(ICDFMT)=2!($G(ICDFMT)=4) EXP=$$VLT^ICDEX(FILE,+Y,$G(ICDCDT))
  1. S:$G(ICDFMT)=1!($G(ICDFMT)=3)!($G(ICDFMT)="") EXP=$$VST^ICDEX(FILE,+Y,$G(ICDCDT))
  1. 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)
  1. Q
  1. CLR ; Clear Environment
  1. K DDS,DICR N ICDTEST,DPP,DR
  1. Q