1 | PXRMVALU ; SLC/KER - Validate Codes (utility) ; 05/16/2000
|
---|
2 | ;;2.0;CLINICAL REMINDERS;;Feb 04, 2005
|
---|
3 | ;
|
---|
4 | Q
|
---|
5 | FILE(X) ; Get File
|
---|
6 | ;
|
---|
7 | ; Requires:
|
---|
8 | ;
|
---|
9 | ; X in the form of a classification code
|
---|
10 | ;
|
---|
11 | ; Returns:
|
---|
12 | ;
|
---|
13 | ; <file #>^<DIC>^<code type>
|
---|
14 | ;
|
---|
15 | S X=$G(X) Q:'$L(X) "80^ICD9(^ICD-9-CM diagnostic code"
|
---|
16 | N FI,DIC,TYPE S (FI,DIC,TYPE)=""
|
---|
17 | I +X>0 D Q (FI_"^"_DIC_"^"_TYPE)
|
---|
18 | . I $L($P(X,".",1))>3,X'["." S FI=81,DIC="ICPT(",TYPE="CPT-4 procedure code" Q
|
---|
19 | . I $L($P(X,".",1))>2 S FI=80,DIC="ICD9(",TYPE="ICD-9-CM diagnosis code" Q
|
---|
20 | . I $L($P(X,".",1))'>2 D
|
---|
21 | . . N I,OK,SEARCH,CONTROL S SEARCH=$E(X,1,($L(X)-1))_$C($A($E(X,$L(X)))-1)_"~",CONTROL=X
|
---|
22 | . . S OK=0 F I=1:1 D Q:OK=1!($L($P(SEARCH,".",1))>3)
|
---|
23 | . . . I $O(^ICD9("BA",(SEARCH_" ")))=(CONTROL_" ") D Q
|
---|
24 | . . . . S OK=1,FI=80,DIC="ICD9(",TYPE="ICD-9-CM diagnosis code" Q
|
---|
25 | . . . I $O(^ICD0("BA",(SEARCH_" ")))=(CONTROL_" ") D Q
|
---|
26 | . . . . S OK=1,FI=80.1,DIC="ICD9(",TYPE="ICD-9-CM procedure code" Q
|
---|
27 | . . . S SEARCH="0"_SEARCH,CONTROL="0"_CONTROL
|
---|
28 | . . I 'OK S SEARCH=$E(X,1,($L(X)-1))_$C($A($E(X,$L(X)))-1)_"~",CONTROL=X F I=1:1 D Q:OK=1!($L($P(SEARCH,".",1))>3)
|
---|
29 | . . . I $P($O(^ICD9("BA",(SEARCH_" "))),".",1)=$P(CONTROL,".",1),+($P($O(^ICD9("BA",(SEARCH_" "))),".",2))=0,+($P(CONTROL,".",2))=0 D Q
|
---|
30 | . . . . S OK=1,FI=80,DIC="ICD9(",TYPE="ICD-9-CM diagnosis code" Q
|
---|
31 | . . . I $P($O(^ICD0("BA",(SEARCH_" "))),".",1)=$P(CONTROL,".",1),+($P($O(^ICD0("BA",(SEARCH_" "))),".",2))=0,+($P(CONTROL,".",2))=0 D Q
|
---|
32 | . . . . S OK=1,FI=80.1,DIC="ICD9(",TYPE="ICD-9-CM procedure code" Q
|
---|
33 | . . . S SEARCH="0"_SEARCH,CONTROL="0"_CONTROL
|
---|
34 | . S:TYPE="" FI=80,DIC="ICD9(",TYPE="ICD-9-CM diagnosis code"
|
---|
35 | I +X=0 D Q (FI_"^"_DIC_"^"_TYPE)
|
---|
36 | . I $L($P(X,".",1))>4,X'["." S FI=81,DIC="ICPT(",TYPE="HCPCS procedure code" Q
|
---|
37 | . I X["-" S FI=81,DIC="ICPT(",TYPE="HCPCS procedure code" Q
|
---|
38 | . I $E(X,1)="E",X["." S FI=80,DIC="ICD9(",TYPE="ICD-9-CM ""E"" code (external causes)" Q
|
---|
39 | . I $E(X,1)="E",$L($E(X,2,$L(X)))=3 S FI=80,DIC="ICD9(",TYPE="ICD-9-CM ""E"" code (external causes)" Q
|
---|
40 | . I $E(X,1)="V",X["." S FI=80,DIC="ICD9(",TYPE="ICD-9-CM ""V"" code (health factors)" Q
|
---|
41 | . I $E(X,1)="V",$L($E(X,2,$L(X)))=2 S FI=80,DIC="ICD9(",TYPE="ICD-9-CM ""V"" code (health factors)" Q
|
---|
42 | . S FI=80,DIC="ICD9(",TYPE="ICD-9-CM diagnosis code"
|
---|
43 | Q "80^ICD9(^ICD-9-CM diagnostic code"
|
---|
44 | TYPE(X,Y) ; Code type
|
---|
45 | ;
|
---|
46 | ; Requires:
|
---|
47 | ;
|
---|
48 | ; X in the form of a classification code
|
---|
49 | ; Y file number or global root
|
---|
50 | ;
|
---|
51 | ; Returns:
|
---|
52 | ;
|
---|
53 | ; <type> free text string description of code type
|
---|
54 | ;
|
---|
55 | ; ICD-9-CM diagnosis
|
---|
56 | ; ICD-9-CM "E" external causes
|
---|
57 | ; ICD-9-CM "V" health factors
|
---|
58 | ; ICD-9-CM procedures
|
---|
59 | ; CPT-4 procedures
|
---|
60 | ; HCPCS procedures
|
---|
61 | ;
|
---|
62 | N TYPE,FI,CO S FI=$G(Y),CO=$G(X),TYPE="" S:+CO>0&(FI=80!(FI["ICD9")) TYPE="ICD-9-CM diagnosis" S:$E(CO,1)="E"&(FI=80!(FI["ICD9")) TYPE="ICD-9-CM ""E"" external causes"
|
---|
63 | S:$E(CO,1)="V"&(FI=80!(FI["ICD9")) TYPE="ICD-9-CM ""V"" health factors" S:+CO>0&(FI=80.1!(FI["ICD0")) TYPE="ICD-9-CM procedures"
|
---|
64 | S:+CO>0&(FI=81!(FI["ICPT")) TYPE="CPT-4 procedures" S:+CO=0&(FI=81!(FI["ICPT")) TYPE="HCPCS procedures"
|
---|
65 | S X=TYPE Q X
|
---|
66 | NEXT(X,FILE) ; Next code in file
|
---|
67 | ;
|
---|
68 | ; Requires:
|
---|
69 | ;
|
---|
70 | ; X in the form of a classification code
|
---|
71 | ; FILE file number
|
---|
72 | ;
|
---|
73 | ; Returns:
|
---|
74 | ;
|
---|
75 | ; <code> Next code found in file
|
---|
76 | ;
|
---|
77 | N NCODE,NEXT S FILE=+($G(FILE)),X=$$TRIM($G(X)) Q:X="" ""
|
---|
78 | I FILE=80 D Q X
|
---|
79 | . Q:$D(^ICD9("BA",X_" ")) S NEXT=$$TRIM($O(^ICD9("BA",(X_" ")))) I $E(NEXT,1,$L(X))=X S X=NEXT Q
|
---|
80 | . S:$E(NEXT,1,$L(X))'=X X=""
|
---|
81 | I FILE=80.1 D Q X
|
---|
82 | . Q:$D(^ICD0("BA",X_" ")) S NEXT=$$TRIM($O(^ICD0("BA",(X_" ")))) I $E(NEXT,1,$L(X))=X S X=NEXT Q
|
---|
83 | . S:$E(NEXT,1,$L(X))'=X X=""
|
---|
84 | I FILE=81 D Q X
|
---|
85 | . S NCODE=X I +NCODE>0,$E(NCODE,1)'="0",$L(NCODE)<5 F Q:$L(NCODE)=5 S NCODE="0"_NCODE
|
---|
86 | . S:$D(^ICPT("B",NCODE)) X=NCODE Q:$D(^ICPT("B",X)) S NEXT=$$TRIM($O(^ICPT("B",NCODE))) I $E(NEXT,1,$L(X))=X S X=NEXT Q
|
---|
87 | . S:$E(NEXT,1,$L(X))'=X X=""
|
---|
88 | Q X
|
---|
89 | TRIM(X) ; Trim leading/trailing spaces
|
---|
90 | S X=$G(X) F Q:$E(X,1)'=" " S X=$E(X,2,$L(X))
|
---|
91 | F Q:$E(X,$L(X))'=" " S X=$E(X,1,($L(X)-1))
|
---|
92 | Q X
|
---|