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

ICDCODLK.m

Go to the documentation of this file.
  1. ICDCODLK ;KUM - LOOK UP ICD-10 PROCEDURE CODE;12/07/2011
  1. ;;18.0;DRG Grouper;**64**;Oct 20, 2000;Build 103
  1. ;
  1. ; ICDDATE is EFFECTIVE DATE that passed from Calling Routine
  1. ;
  1. EN ; Initialize variables
  1. W @IOF D LOOK
  1. G EXIT
  1. LOOK ; Look-up term
  1. W !! K X S ICDPRC="" D ASK K DIC
  1. AGAIN ; Try again?
  1. W !,"Try another" S %=$S(+($$X):1,1:2)
  1. D YN^DICN I %=-1!(%=2) Q
  1. I '% W !!,"You have searched for a string in the Lexicon, do you want to" G AGAIN
  1. I +($$X)&(%=1) G LOOK
  1. I '+($$X)&(%=1) G LOOK
  1. I (+($$X)&(%=2))!('+($$X)&(%=1)) Q
  1. G LOOK Q
  1. ASK ; Get user input
  1. N DUOUT,DTOUT,DIR,DIRUT,DIROUT,ICDDATE1,ICDT1,ICDX,ICDXX,ICDPRT
  1. I $G(ICDXX1) S ICDPRT="Enter Operation/Procedure (ICD 10):"
  1. I $G(ICDDATE)="" D EFFDATE^ICDDRGM G EXIT:$D(DUOUT),EXIT:$D(DTOUT)
  1. I $G(ICDDATE)'="" S ICDDATE1=ICDDATE
  1. S ICDRES=1
  1. I $G(ICDPRC)="" S ICDPRC="" D GICDPRC
  1. I ICDPRC="" S ICDX=0
  1. I ICDPRC'="" S ICDX=1
  1. I ICDPRC'["*" G ASKCONT1
  1. I ICDPRC["*" S ICDPRC=$P(ICDPRC,"*",1) ; D GICDPRC
  1. ;S ICDPRC="",ICDX=0
  1. F ICDT1=1:1 Q:($L($G(ICDPRC))>=7)!(ICDPRC["^")!(ICDRES=0) D
  1. . S ICDRES=$$PCSDIG^LEX10CS(ICDPRC,ICDDATE1)
  1. . I ICDRES=1 D
  1. . . D LOAD
  1. . . D PRCDESCB
  1. . . D PRCDESC
  1. . . S X=$$SEL^ICDSELPS(.ICDS,5)
  1. . . I X'=-1 S ICDPRC=ICDPRC_$P(X,"^",1)
  1. . . S ICDX=1
  1. . . D GICDPRC
  1. . I ICDRES'=1 W !,ICDPRC_" IS NOT A VALID ICD PROCEDURE CODE" G EXIT
  1. I $G(ICDXX1),ICDPRC["^^" S ICDPRC=$E(ICDPRC,1,$L(ICDPRC)-2)
  1. I '$G(ICDXX1),ICDPRC["^" G EXIT
  1. ASKCONT1 ; Tag to continue when ICDPRC doesnt have *
  1. I $L($G(ICDPRC))=7&(ICDPRC'["^") D
  1. . S ICDRES=$$PCSDIG^LEX10CS(ICDPRC,ICDDATE1)
  1. . I ICDRES=1 D
  1. . . S ICDPDESC=LEXPCDAT("PCSDESC")
  1. . . S ICDPSTS=LEXPCDAT("STATUS")
  1. . . D PRCDESCB
  1. . . D PRCDESC
  1. . . W !!,ICDPRC,?15,ICDPDESC,! ;add printing of descript disclaimer msg
  1. . . I $G(ICDXX1) S ICDXX=+$$CODEN^ICDEX(ICDPRC,80.1)
  1. . . I '$P(ICDPSTS,"^",1) W " **CODE INACTIVE" I $P(ICDPSTS,"^",2)'="" S Y=$P(ICDPSTS,"^",2) D DD^%DT W " AS OF ",Y," **",!
  1. . I ICDRES'=1 D
  1. . . W !,ICDPRC_" IS NOT A VALID PROCEDURE CODE."
  1. I $L($G(ICDPRC))=7&(ICDPRC'["^")&(ICDRES=1)&('$P($G(ICDPSTS),"^",1)) G ASKCNT2
  1. I $L($G(ICDPRC))'=7,ICDPRC'="",ICDPRC'["^" S ICDRES=0 W !,ICDPRC_" IS NOT A VALID ICD PROCEDURE CODE"_$S($G(ICDXX1):". IGNORING THE PROCEDURE CODE",1:".")
  1. S (X,Y)=""
  1. I ICDPRC["^" S X="^",Y=""
  1. S:$G(ICDXX) (X,Y)=ICDXX
  1. I $G(ICDXX1) D
  1. . I (ICDRES'=1)!(($L($G(ICDPRC))'=7)&(ICDPRC'="")&(ICDPRC'["^")) S X=0 R ICDQWE:300 K ICDQWE Q
  1. . I ICDPRC'="" D
  1. . . W !,"OK? (Yes/No) " S %=1
  1. . . D YN^DICN
  1. . . I %'=1 S X=0
  1. ASKCNT2 K ICDDATE1,ICDRES,ICDPDESC,ICDPSTS,LEXPCDAT,ICDPRCT,ICDPRCX,ICDLEX
  1. Q
  1. INPHLP ; Look-up help
  1. Q:X["^^" "^^" Q:X["^" "^"
  1. W !," Enter a ""free text"" term. Best results occur using one to "
  1. W !," three full or partial words without a suffix"
  1. W:$G(X)'["??" "."
  1. W:$G(X)["??" " (i.e., ""DIABETES"","
  1. W:$G(X)["??" !," ""DIAB MELL"",""DIAB MELL INSUL"")"
  1. W !," or "
  1. W !," Enter a classification code (ICD/CPT etc) to find the single "
  1. W !," term associated with the code."
  1. W:$G(X)["??" " Example, a lookup of code 239.0 "
  1. W:$G(X)["??" !," returns one and only one term, that is the preferred "
  1. W:$G(X)["??" !," term for the code 239.0, ""Neoplasm of unspecified nature "
  1. W:$G(X)["??" !," of digestive system"""
  1. W !," or "
  1. W !," Enter a classification code (ICD/CPT etc) followed by a plus"
  1. W !," sign (+) to retrieve all terms associated with the code."
  1. W:$G(X)["??" " Example,"
  1. W:$G(X)["??" !," a lookup of 239.0+ returns all terms that are linked to the "
  1. W:$G(X)["??" !," code 239.0."
  1. Q
  1. EXIT ; Clean up environment and quit
  1. K %,DIC,DIR,DIROUT,DIRUT,DTOUT,DUOUT,X,Y,ICDLEX,ICDPRCX,ICDPRCT
  1. Q
  1. X(ICDLEX) ; Evaluate X
  1. Q:$L($G(X)) 1 Q 0
  1. Y(ICDLEX) ; Evaluate Y
  1. Q:+($G(Y))>1 1 Q 0
  1. LOAD ; Load data
  1. K ICDS
  1. S ICDLOAD1=1
  1. S ICDLOADP=""
  1. S ICDLOAD="" F S ICDLOAD=$O(LEXPCDAT("NEXLEV",ICDLOAD)) Q:ICDLOAD="" D
  1. . I ICDLOAD'=ICDLOADP D
  1. . . S ICDS(ICDLOAD1,0)=ICDLOAD
  1. . . S ICDS(ICDLOAD1,"LEX")=LEXPCDAT("NEXLEV",ICDLOAD,"DESC")
  1. . . S ICDLOAD1=ICDLOAD1+1
  1. . . S ICDLOADP=ICDLOAD
  1. K ICDLOAD1,ICDLOADP,ICDLOAD
  1. Q
  1. PRCDESC ; Display Descriptions of each character
  1. S ICDPRCT=ICDPRC,ICDPRCT1="",ICDX=0
  1. F ICDTEMP=1:1 Q:ICDPRCT="" D
  1. . S ICDC=$E(ICDPRCT,1,1)
  1. . S ICDRES=$$PCSDIG^LEX10CS(ICDPRCT1,ICDDATE1)
  1. . I ICDRES'=1 D
  1. . . S ICDPRCT=""
  1. . I ICDRES=1 D
  1. . . S ICDLOAD="" F S ICDLOAD=$O(LEXPCDAT("NEXLEV",ICDLOAD)) Q:ICDLOAD=""!(ICDLOAD=ICDC)
  1. . . I ICDLOAD=ICDC W ICDC_" - "_LEXPCDAT("NEXLEV",ICDLOAD,"DESC") W !
  1. . . S ICDPRCT=$E(ICDPRCT,2,$L(ICDPRCT))
  1. . . S ICDPRCT1=ICDPRCT1_ICDC
  1. K ICDTEMP,ICDPRCT,ICDPRCT1,ICDC,ICDLOAD
  1. Q
  1. GICDPRC ; Get ICDPRC from User
  1. S ICDPRCX="" S ICDPRCT=""
  1. AA ; Read character by character
  1. W @IOF
  1. I $G(ICDX)=1 D PRCDESC W !
  1. W "Press '*' to display available choices for next character or '^' to exit."
  1. I $G(ICDPRT)="" S ICDPRT="ICD-10 Procedure code:"
  1. W !,ICDPRT_ICDPRC S ICDREAD="R *ICDA:300 I '$T S ICDA=13"
  1. X ICDREAD
  1. ; Show choices on "*"
  1. I ICDA=42 G BB
  1. ; Exit when Enter and is full length else ignore
  1. ;I ICDA=13 G:$L(ICDPRC)>6 BB S ICDX=1 G AA
  1. I ICDA=13,$G(ICDXX1) S:$L(ICDPRC)'=7 ICDPRC=ICDPRC_$C(94)_$C(94) G BB
  1. I ICDA=13,'$G(ICDXX1) G:$L(ICDPRC)>6 BB S ICDX=1 G AA
  1. ; If Backspace is entered, truncate last character and display the ICDPRC
  1. I ICDA=127 S ICDPRC=$E(ICDPRC,1,$L(ICDPRC)-1) S ICDX=1 G AA
  1. ; If ^ is entered, exit
  1. I ICDA=94 S ICDPRC=ICDPRC_$C(ICDA) G BB
  1. ; check for valid characters
  1. I ICDA<48!((ICDA>57)&(ICDA<65))!((ICDA>90)&(ICDA<97))!(ICDA>122) G AA
  1. ; Any character other than Enter or Backspace
  1. I ICDA'=127 D
  1. . S ICDPRC=ICDPRC_$C(ICDA)
  1. . S ICDX=1 G AA
  1. BB ;Exit
  1. W !
  1. K ICDA,ICDREAD
  1. Q
  1. PRCDESCB ; Call Before PRCDESC
  1. W @IOF
  1. W "Press '*' to display available choices for next character or '^' to exit."
  1. W !,"ICD-10 Procedure code:"_ICDPRC
  1. W !
  1. Q