- ATXCODE1 ; IHS/OHPRD/TMJ - CODE RANGES IN TABLE ;
- ;;2.0;IHS PCC SUITE;;MAY 14, 2009
- ;
- I 'ATXSUB D ADD I 1
- E D DEL
- D EOJ
- Q
- ;
- ADD ; SECTION FOR ADDING CODES TO TABLE
- I '$D(ATXTABLE) S ATXTABLE(ATX("LOW"))=ATX("HI") G X1
- S ATXDONE=0
- S ATXVAL="" F S ATXVAL=$O(ATXTABLE(ATXVAL)) Q:ATXVAL="" D GETCASE,ADDPROC Q:ATXDONE
- D:'ATXDONE SETRANGE
- K ATXDONE,ATXVAL,ATXCASE
- X1 Q
- ;
- ADDPROC ; CASE SPECIFIC ADD PROCESSING
- G @("ADD"_ATXCASE)
- ADD2 ;;
- ADD3 ;;
- ADD4 ;;
- S ATXTABLE(ATX("LOW"))=ATXTABLE(ATXVAL)
- K ATXTABLE(ATXVAL)
- ADD6 ;;
- ADD7 ;;
- ADD9 ;;
- ADD10 ;;
- S ATXDONE=1
- Q
- ADD11 ;;
- ADD12 ;;
- S ATX("LOW")=ATXVAL
- ADD5 ;;
- ADD8 ;;
- K ATXTABLE(ATXVAL)
- Q
- ADD1 ;;
- I $O(^ICD9("BA",ATX("HI")))=ATXVAL,$E(ATXVAL)=$E(ATX("HI"))!(ATXVAL&ATX("HI")) S ATXTABLE(ATX("LOW"))=ATXTABLE(ATXVAL) K ATXTABLE(ATXVAL) S ATXDONE=1
- Q
- ADD13 ;;
- I $O(^ICD9("BA",ATXTABLE(ATXVAL)))=ATX("LOW"),$E(ATXVAL)=$E(ATX("LOW"))!(ATXVAL&ATX("LOW")) S ATX("LOW")=ATXVAL K ATXTABLE(ATXVAL)
- ; continue
- Q
- ;
- SETRANGE ;
- ;;
- SET1 ;;
- SET5 ;;
- SET8 ;;
- SET11 ;;
- SET12 ;;
- SET13 ;;
- S ATXTABLE(ATX("LOW"))=ATX("HI")
- Q
- ;
- DEL ; SECTION FOR DELETING CODES FROM TABLE
- I '$D(ATXTABLE) G X2
- S ATXDONE=0
- S ATXVAL="" F S ATXVAL=$O(ATXTABLE(ATXVAL)) Q:ATXVAL="" D GETCASE,DELPROC Q:ATXDONE
- X2 Q
- ;
- DELPROC ;CASE SPECIFIC DEL PROCESSING
- G @("DEL"_ATXCASE)
- DEL2 ;;
- I ATX("HI")=ATXTABLE(ATXVAL) K ATXTABLE(ATXVAL)
- E S ATXTABLE($O(^ICD9("BA",ATX("HI"))))=ATXTABLE(ATXVAL) K ATXTABLE(ATXVAL)
- S ATXDONE=1
- Q
- ;
- DEL3 ;;
- DEL6 ;;
- S ATXTABLE($O(^ICD9("BA",ATX("HI"))))=ATXTABLE(ATXVAL) K ATXTABLE(ATXVAL)
- S ATXDONE=1
- Q
- ;
- DEL4 ;;
- DEL5 ;;
- DEL7 ;;
- DEL8 ;;
- K ATXTABLE(ATXVAL)
- I ATXCASE'=8,ATXCASE'=5 S ATXDONE=1
- Q
- ;
- DEL10 ;;
- DEL11 ;;
- DEL12 ;;
- D @$S($E(ATXTABLE(ATXVAL))?1N:"NUMBER",1:"LETTER")
- S ATXTABLE(ATXVAL)=ATX("NEWHI")
- I ATXCASE=10 S ATXDONE=1
- Q
- ;
- DEL9 ;;
- D @$S($E(ATXTABLE(ATXVAL))?1N:"NUMBER",1:"LETTER")
- S ATXTABLE($O(^ICD9("BA",ATX("HI"))))=ATXTABLE(ATXVAL)
- S ATXTABLE(ATXVAL)=ATX("NEWHI")
- S ATXDONE=1
- Q
- ;
- DEL1 ;;
- DEL13 ;;
- Q
- ;
- GETCASE ; SUBROUTINE TO DETERMINE ATXCASE # FROM INPUT CODE RANGE
- S ATX("TLOW")=ATXVAL,ATX("THI")=ATXTABLE(ATXVAL)
- D CASEA:ATX("TLOW")]ATX("LOW"),CASEB:ATX("LOW")=ATX("TLOW"),CASEC:ATX("LOW")]ATX("TLOW")
- K ATX("TLOW"),ATX("THI")
- Q
- ;
- CASEA ;
- I ATX("HI")]ATX("TLOW") S ATXCASE=$S(ATX("THI")]ATX("HI"):3,ATX("HI")=ATX("THI"):4,1:5)
- E S ATXCASE=$S(ATX("TLOW")]ATX("HI"):1,1:2)
- Q
- ;
- CASEB ;
- S ATXCASE=$S(ATX("THI")]ATX("HI"):6,ATX("HI")=ATX("THI"):7,1:8)
- Q
- ;
- CASEC ;
- I ATX("THI")]ATX("LOW") S ATXCASE=$S(ATX("THI")]ATX("HI"):9,ATX("HI")=ATX("THI"):10,1:11)
- E S ATXCASE=$S(ATX("LOW")=ATX("THI"):12,1:13)
- Q
- ;
- NUMBER ;
- S ATX("CODE")=ATX("LOW")-5 F Q:ATX("LOW")]$O(^ICD9("BA",ATX("CODE")_" ")) S ATX("CODE")=ATX("CODE")-5
- S ATX("CODE")=$O(^ICD9("BA",ATX("CODE")_" ")) F S ATX("NEWHI")=ATX("CODE"),ATX("CODE")=$O(^ICD9("BA",ATX("CODE"))) Q:ATX("CODE")=ATX("LOW")
- Q
- ;
- LETTER ;
- S ATX("LET")=$E(ATX("LOW"))_" " F S ATX("NEWHI")=$S($L(ATX("LET"))>2:ATX("LET"),1:ATX("LOW")),ATX("LET")=$O(^ICD9("BA",ATX("LET"))) Q:ATX("LET")=ATX("LOW")
- Q
- EOJ ;
- K ATXCASE,ATXDONE,ATXNEXT,ATXONE,ATXVAL
- Q
- ;
- ATXCODE1 ; IHS/OHPRD/TMJ - CODE RANGES IN TABLE ;
- +1 ;;2.0;IHS PCC SUITE;;MAY 14, 2009
- +2 ;
- +3 IF 'ATXSUB
- DO ADD
- IF 1
- +4 IF '$TEST
- DO DEL
- +5 DO EOJ
- +6 QUIT
- +7 ;
- ADD ; SECTION FOR ADDING CODES TO TABLE
- +1 IF '$DATA(ATXTABLE)
- SET ATXTABLE(ATX("LOW"))=ATX("HI")
- GOTO X1
- +2 SET ATXDONE=0
- +3 SET ATXVAL=""
- FOR
- SET ATXVAL=$ORDER(ATXTABLE(ATXVAL))
- IF ATXVAL=""
- QUIT
- DO GETCASE
- DO ADDPROC
- IF ATXDONE
- QUIT
- +4 IF 'ATXDONE
- DO SETRANGE
- +5 KILL ATXDONE,ATXVAL,ATXCASE
- X1 QUIT
- +1 ;
- ADDPROC ; CASE SPECIFIC ADD PROCESSING
- +1 GOTO @("ADD"_ATXCASE)
- ADD2 ;;
- ADD3 ;;
- ADD4 ;;
- +1 SET ATXTABLE(ATX("LOW"))=ATXTABLE(ATXVAL)
- +2 KILL ATXTABLE(ATXVAL)
- ADD6 ;;
- ADD7 ;;
- ADD9 ;;
- ADD10 ;;
- +1 SET ATXDONE=1
- +2 QUIT
- ADD11 ;;
- ADD12 ;;
- +1 SET ATX("LOW")=ATXVAL
- ADD5 ;;
- ADD8 ;;
- +1 KILL ATXTABLE(ATXVAL)
- +2 QUIT
- ADD1 ;;
- +1 IF $ORDER(^ICD9("BA",ATX("HI")))=ATXVAL
- IF $EXTRACT(ATXVAL)=$EXTRACT(ATX("HI"))!(ATXVAL&ATX("HI"))
- SET ATXTABLE(ATX("LOW"))=ATXTABLE(ATXVAL)
- KILL ATXTABLE(ATXVAL)
- SET ATXDONE=1
- +2 QUIT
- ADD13 ;;
- +1 IF $ORDER(^ICD9("BA",ATXTABLE(ATXVAL)))=ATX("LOW")
- IF $EXTRACT(ATXVAL)=$EXTRACT(ATX("LOW"))!(ATXVAL&ATX("LOW"))
- SET ATX("LOW")=ATXVAL
- KILL ATXTABLE(ATXVAL)
- +2 ; continue
- +3 QUIT
- +4 ;
- SETRANGE ;
- +1 ;;
- SET1 ;;
- SET5 ;;
- SET8 ;;
- SET11 ;;
- SET12 ;;
- SET13 ;;
- +1 SET ATXTABLE(ATX("LOW"))=ATX("HI")
- +2 QUIT
- +3 ;
- DEL ; SECTION FOR DELETING CODES FROM TABLE
- +1 IF '$DATA(ATXTABLE)
- GOTO X2
- +2 SET ATXDONE=0
- +3 SET ATXVAL=""
- FOR
- SET ATXVAL=$ORDER(ATXTABLE(ATXVAL))
- IF ATXVAL=""
- QUIT
- DO GETCASE
- DO DELPROC
- IF ATXDONE
- QUIT
- X2 QUIT
- +1 ;
- DELPROC ;CASE SPECIFIC DEL PROCESSING
- +1 GOTO @("DEL"_ATXCASE)
- DEL2 ;;
- +1 IF ATX("HI")=ATXTABLE(ATXVAL)
- KILL ATXTABLE(ATXVAL)
- +2 IF '$TEST
- SET ATXTABLE($ORDER(^ICD9("BA",ATX("HI"))))=ATXTABLE(ATXVAL)
- KILL ATXTABLE(ATXVAL)
- +3 SET ATXDONE=1
- +4 QUIT
- +5 ;
- DEL3 ;;
- DEL6 ;;
- +1 SET ATXTABLE($ORDER(^ICD9("BA",ATX("HI"))))=ATXTABLE(ATXVAL)
- KILL ATXTABLE(ATXVAL)
- +2 SET ATXDONE=1
- +3 QUIT
- +4 ;
- DEL4 ;;
- DEL5 ;;
- DEL7 ;;
- DEL8 ;;
- +1 KILL ATXTABLE(ATXVAL)
- +2 IF ATXCASE'=8
- IF ATXCASE'=5
- SET ATXDONE=1
- +3 QUIT
- +4 ;
- DEL10 ;;
- DEL11 ;;
- DEL12 ;;
- +1 DO @$SELECT($EXTRACT(ATXTABLE(ATXVAL))?1N:"NUMBER",1:"LETTER")
- +2 SET ATXTABLE(ATXVAL)=ATX("NEWHI")
- +3 IF ATXCASE=10
- SET ATXDONE=1
- +4 QUIT
- +5 ;
- DEL9 ;;
- +1 DO @$SELECT($EXTRACT(ATXTABLE(ATXVAL))?1N:"NUMBER",1:"LETTER")
- +2 SET ATXTABLE($ORDER(^ICD9("BA",ATX("HI"))))=ATXTABLE(ATXVAL)
- +3 SET ATXTABLE(ATXVAL)=ATX("NEWHI")
- +4 SET ATXDONE=1
- +5 QUIT
- +6 ;
- DEL1 ;;
- DEL13 ;;
- +1 QUIT
- +2 ;
- GETCASE ; SUBROUTINE TO DETERMINE ATXCASE # FROM INPUT CODE RANGE
- +1 SET ATX("TLOW")=ATXVAL
- SET ATX("THI")=ATXTABLE(ATXVAL)
- +2 IF ATX("TLOW")]ATX("LOW")
- DO CASEA
- IF ATX("LOW")=ATX("TLOW")
- DO CASEB
- IF ATX("LOW")]ATX("TLOW")
- DO CASEC
- +3 KILL ATX("TLOW"),ATX("THI")
- +4 QUIT
- +5 ;
- CASEA ;
- +1 IF ATX("HI")]ATX("TLOW")
- SET ATXCASE=$SELECT(ATX("THI")]ATX("HI"):3,ATX("HI")=ATX("THI"):4,1:5)
- +2 IF '$TEST
- SET ATXCASE=$SELECT(ATX("TLOW")]ATX("HI"):1,1:2)
- +3 QUIT
- +4 ;
- CASEB ;
- +1 SET ATXCASE=$SELECT(ATX("THI")]ATX("HI"):6,ATX("HI")=ATX("THI"):7,1:8)
- +2 QUIT
- +3 ;
- CASEC ;
- +1 IF ATX("THI")]ATX("LOW")
- SET ATXCASE=$SELECT(ATX("THI")]ATX("HI"):9,ATX("HI")=ATX("THI"):10,1:11)
- +2 IF '$TEST
- SET ATXCASE=$SELECT(ATX("LOW")=ATX("THI"):12,1:13)
- +3 QUIT
- +4 ;
- NUMBER ;
- +1 SET ATX("CODE")=ATX("LOW")-5
- FOR
- IF ATX("LOW")]$ORDER(^ICD9("BA",ATX("CODE")_" "))
- QUIT
- SET ATX("CODE")=ATX("CODE")-5
- +2 SET ATX("CODE")=$ORDER(^ICD9("BA",ATX("CODE")_" "))
- FOR
- SET ATX("NEWHI")=ATX("CODE")
- SET ATX("CODE")=$ORDER(^ICD9("BA",ATX("CODE")))
- IF ATX("CODE")=ATX("LOW")
- QUIT
- +3 QUIT
- +4 ;
- LETTER ;
- +1 SET ATX("LET")=$EXTRACT(ATX("LOW"))_" "
- FOR
- SET ATX("NEWHI")=$SELECT($LENGTH(ATX("LET"))>2:ATX("LET"),1:ATX("LOW"))
- SET ATX("LET")=$ORDER(^ICD9("BA",ATX("LET")))
- IF ATX("LET")=ATX("LOW")
- QUIT
- +2 QUIT
- EOJ ;
- +1 KILL ATXCASE,ATXDONE,ATXNEXT,ATXONE,ATXVAL
- +2 QUIT
- +3 ;