- LEXQC5 ;ISL/KER - Query - Changes - Duplicate Text ;05/23/2017
- ;;2.0;LEXICON UTILITY;**103**;Sep 23, 1996;Build 2
- ;
- ; Global Variables
- ; ^DIC(81.3, ICR 4492
- ; ^ICD0( ICR 4486
- ; ^ICD9( ICR 4485
- ; ^ICPT( ICR 4489
- ;
- ; External References
- ; $$UP^XLFSTR ICR 10103
- ;
- Q
- DUPL(LEX,X,Y) ; Long Description is a Duplicate
- ;
- ; Input
- ; LEX File Number
- ; 80 ICD Diagnosis
- ; 80.1 ICD Procedures
- ; 81 CPT Procedures
- ; 81.3 Modifiers
- ; X Code IEN
- ; Y Long Description IEN
- ;
- ; Output
- ;
- ; $$DUPL Boolean value
- ;
- ; 1 Long Descriptions is a Duplicate
- ; 0 Long Descriptions is not a Duplicate
- ;
- N LEXFI,LEXIEN,LEXI S LEXFI=$G(LEX) Q:"^80^80.1^81^81.3^"'[("^"_LEXFI_"^") 0
- S LEXIEN=+($G(X)) Q:+LEXIEN'>0 0 S LEXI=+($G(Y)) Q:+LEXI'>0 0
- Q:LEXFI=81 +($$CPTL(LEXIEN,LEXI)) Q:LEXFI=81.3 +($$MODL(LEXIEN,LEXI)) Q:LEXFI=80!(LEXFI=80.1) +($$ICDL(LEXFI,LEXIEN,LEXI))
- Q 0
- DUPS(LEX,X,Y) ; Short Description is a Duplicate
- ;
- ; Input
- ; LEX File Number
- ; 80 ICD Diagnosis
- ; 80.1 ICD Procedures
- ; 81 CPT Procedures
- ; 81.3 Modifiers
- ; X Code IEN
- ; Y Short Description IEN
- ;
- ; Output
- ;
- ; $$DUPL Boolean value
- ;
- ; 1 Short Descriptions is a Duplicate
- ; 0 Short Descriptions is not a Duplicate
- ;
- N LEXFI,LEXIEN,LEXI S LEXFI=$G(LEX) Q:"^80^80.1^81^"'[("^"_LEXFI_"^") 0
- S LEXIEN=+($G(X)) Q:+LEXIEN'>0 0 S LEXI=+($G(Y)) Q:+LEXI'>0 0
- Q:LEXFI=81 +($$CPTS(LEXIEN,LEXI)) Q:LEXFI=81.3 +($$MODS(LEXIEN,LEXI)) Q:LEXFI=80!(LEXFI=80.1) +($$ICDS(LEXFI,LEXIEN,LEXI))
- Q 0
- ;
- ; Coding System Text
- CPTL(X,Y) ; CPT Long Description is a Duplicate
- N LEXA1,LEXA2,LEXD1,LEXD2,LEXI,LEXI1,LEXI2,LEXIEN,LEXL,LEXT
- S LEXIEN=+($G(X)) Q:'$D(^ICPT(+LEXIEN,0)) 0
- S LEXI1=+($G(Y)) I +($G(LEXI1))'>0 D Q:'$D(^ICPT(+LEXIEN,62,+LEXI1,1)) 0
- . S LEXD1=$O(^ICPT(+LEXIEN,62,"B"," "),-1),LEXI1=$O(^ICPT(+LEXIEN,62,"B",+LEXD1," "),-1)
- S LEXD1=$G(^ICPT(+LEXIEN,62,+LEXI1,0)) Q:LEXD1'?7N 0
- S LEXD2=$O(^ICPT(+LEXIEN,62,"B",+LEXD1),-1) Q:LEXD2'?7N 0 Q:LEXD1'>LEXD2
- S LEXI2=$O(^ICPT(+LEXIEN,62,"B",+LEXD2," "),-1) Q:+LEXD2'>0 Q:'$D(^ICPT(+LEXIEN,62,+LEXI2,1)) 0
- S LEXL=0 F S LEXL=$O(^ICPT(+LEXIEN,62,+LEXI1,1,LEXL)) Q:+LEXL'>0 D
- . N LEXT,LEXI S LEXT=$G(^ICPT(+LEXIEN,62,+LEXI1,1,+LEXL,0)) Q:'$L($G(LEXT))
- . S LEXI=$O(LEXA1(" "),-1)+1,LEXA1(+LEXI)=LEXT
- S LEXL=0 F S LEXL=$O(^ICPT(+LEXIEN,62,+LEXI2,1,LEXL)) Q:+LEXL'>0 D
- . N LEXT,LEXI S LEXT=$G(^ICPT(+LEXIEN,62,+LEXI2,1,+LEXL,0)) Q:'$L($G(LEXT))
- . S LEXI=$O(LEXA2(" "),-1)+1,LEXA2(+LEXI)=LEXT
- S X=+($$SAME(.LEXA1,.LEXA2))
- Q X
- CPTS(X,Y) ; CPT Short Description is a Duplicate
- N LEXA1,LEXA2,LEXD1,LEXD2,LEXI1,LEXI2,LEXIEN,LEXL
- S LEXIEN=+($G(X)) Q:'$D(^ICPT(+LEXIEN,0)) 0
- S LEXI1=+($G(Y)) I +($G(LEXI1))'>0 D Q:'$D(^ICPT(+LEXIEN,61,+LEXI1,0)) 0
- . S LEXD1=+($O(^ICPT(+LEXIEN,61,"B"," "),-1)),LEXI1=$O(^ICPT(+LEXIEN,61,"B",+LEXD1," "),-1)
- S LEXD1=$P($G(^ICPT(+LEXIEN,61,+LEXI1,0)),"^",1) Q:LEXD1'?7N 0
- S LEXD2=$O(^ICPT(+LEXIEN,61,"B",+LEXD1),-1) Q:LEXD2'?7N 0 Q:LEXD1'>LEXD2 0
- S LEXI2=$O(^ICPT(+LEXIEN,61,"B",+LEXD2," "),-1) Q:LEXI2'>0 Q:'$D(^ICPT(+LEXIEN,61,+LEXI2,0)) 0
- S LEXA1=$$UP^XLFSTR($$TM($$DS($P($G(^ICPT(+LEXIEN,61,+LEXI1,0)),"^",2))))
- S LEXA2=$$UP^XLFSTR($$TM($$DS($P($G(^ICPT(+LEXIEN,61,+LEXI2,0)),"^",2))))
- Q:LEXA1'=LEXA2 0
- Q 1
- MODL(X,Y) ; Modifier Long Description is a Duplicate
- N LEXA1,LEXA2,LEXD1,LEXD2,LEXI,LEXI1,LEXI2,LEXIEN,LEXL,LEXT
- S LEXIEN=+($G(X)) Q:'$D(^DIC(81.3,+LEXIEN,0)) 0
- S LEXI1=+($G(Y)) I +($G(LEXI1))'>0 D Q:'$D(^DIC(81.3,+LEXIEN,62,+LEXI1,1)) 0
- . S LEXD1=$O(^DIC(81.3,+LEXIEN,62,"B"," "),-1),LEXI1=$O(^DIC(81.3,+LEXIEN,62,"B",+LEXD1," "),-1)
- S LEXD1=$G(^DIC(81.3,+LEXIEN,62,+LEXI1,0)) Q:LEXD1'?7N 0
- S LEXD2=$O(^DIC(81.3,+LEXIEN,62,"B",+LEXD1),-1) Q:LEXD2'?7N 0 Q:LEXD1'>LEXD2
- S LEXI2=$O(^DIC(81.3,+LEXIEN,62,"B",+LEXD2," "),-1) Q:+LEXD2'>0 Q:'$D(^DIC(81.3,+LEXIEN,62,+LEXI2,1)) 0
- S LEXL=0 F S LEXL=$O(^DIC(81.3,+LEXIEN,62,+LEXI1,1,LEXL)) Q:+LEXL'>0 D
- . N LEXT,LEXI S LEXT=$G(^DIC(81.3,+LEXIEN,62,+LEXI1,1,+LEXL,0)) Q:'$L($G(LEXT))
- . S LEXI=$O(LEXA1(" "),-1)+1,LEXA1(+LEXI)=LEXT
- S LEXL=0 F S LEXL=$O(^DIC(81.3,+LEXIEN,62,+LEXI2,1,LEXL)) Q:+LEXL'>0 D
- . N LEXT,LEXI S LEXT=$G(^DIC(81.3,+LEXIEN,62,+LEXI2,1,+LEXL,0)) Q:'$L($G(LEXT))
- . S LEXI=$O(LEXA2(" "),-1)+1,LEXA2(+LEXI)=LEXT
- S X=+($$SAME(.LEXA1,.LEXA2))
- Q X
- MODS(X,Y) ; Modifier Short Description is a Duplicate
- N LEXA1,LEXA2,LEXD1,LEXD2,LEXI1,LEXI2,LEXIEN,LEXL
- S LEXIEN=+($G(X)) Q:'$D(^DIC(81.3,+LEXIEN,0)) 0
- S LEXI1=+($G(Y)) I +($G(LEXI1))'>0 D Q:'$D(^DIC(81.3,+LEXIEN,61,+LEXI1,0)) 0
- . S LEXD1=+($O(^DIC(81.3,+LEXIEN,61,"B"," "),-1)),LEXI1=$O(^DIC(81.3,+LEXIEN,61,"B",+LEXD1," "),-1)
- S LEXD1=$P($G(^DIC(81.3,+LEXIEN,61,+LEXI1,0)),"^",1) Q:LEXD1'?7N 0
- S LEXD2=$O(^DIC(81.3,+LEXIEN,61,"B",+LEXD1),-1) Q:LEXD2'?7N 0 Q:LEXD1'>LEXD2 0
- S LEXI2=$O(^DIC(81.3,+LEXIEN,61,"B",+LEXD2," "),-1) Q:LEXI2'>0 Q:'$D(^DIC(81.3,+LEXIEN,61,+LEXI2,0)) 0
- S LEXA1=$$UP^XLFSTR($$TM($$DS($P($G(^DIC(81.3,+LEXIEN,61,+LEXI1,0)),"^",2))))
- S LEXA2=$$UP^XLFSTR($$TM($$DS($P($G(^DIC(81.3,+LEXIEN,61,+LEXI2,0)),"^",2))))
- Q:LEXA1'=LEXA2 0
- Q 1
- ICDL(LEX,X,Y) ; ICD Long Description is a Duplicate
- N LEXIEN,LEXI1,LEXI2,LEXD1,LEXD2,LEXA1,LEXA2,LEXL,LEXRT,LEXFI
- S LEXFI=+($G(LEX)) Q:"^80^80.1^"'[("^"_LEXFI_"^") 0
- S LEXRT=$S(LEXFI=80:"^ICD9(",LEXFI=80.1:"^ICD0(",1:"") Q:'$L(LEXRT)
- S LEXIEN=+($G(X)) Q:'$D(@(LEXRT_+LEXIEN_",0)")) 0
- S LEXI1=+($G(Y)) I +($G(LEXI1))'>0 D Q:+($G(LEXI1))'>0 0
- . S LEXD1=$O(@(LEXRT_+LEXIEN_",68,""B"","" "")"),-1) Q:LEXD1'?7N
- . S LEXI1=$O(@(LEXRT_+LEXIEN_",68,""B"","_+LEXD1_","" "")"),-1)
- Q:'$D(@(LEXRT_+LEXIEN_",68,"_+LEXI1_",0)")) 0 Q:'$D(@(LEXRT_+LEXIEN_",68,"_+LEXI1_",1)")) 0
- S LEXD1=$P($G(@(LEXRT_+LEXIEN_",68,"_+LEXI1_",0)")),"^",1) Q:LEXD1'?7N
- S LEXD2=$O(@(LEXRT_+LEXIEN_",68,""B"","_+LEXD1_")"),-1) Q:LEXD2'?7N 0
- S LEXI2=$O(@(LEXRT_+LEXIEN_",68,""B"","_+LEXD2_","" "")"),-1) Q:LEXI2'>0 0
- Q:'$D(@(LEXRT_+LEXIEN_",68,"_+LEXI2_",0)")) 0 Q:'$D(@(LEXRT_+LEXIEN_",68,"_+LEXI2_",1)")) 0
- S LEXA1=$$UP^XLFSTR($$TM($$DS($P($G(@(LEXRT_+LEXIEN_",68,"_+LEXI1_",1)")),"^",1))))
- S LEXA2=$$UP^XLFSTR($$TM($$DS($P($G(@(LEXRT_+LEXIEN_",68,"_+LEXI2_",1)")),"^",1))))
- Q:LEXA1=LEXA2 1
- Q 0
- ICDS(LEX,X,Y) ; ICD Short Description is a Duplicate
- N LEXIEN,LEXI1,LEXI2,LEXD1,LEXD2,LEXA1,LEXA2,LEXL,LEXRT,LEXFI
- S LEXFI=+($G(LEX)) Q:"^80^80.1^"'[("^"_LEXFI_"^") 0
- S LEXRT=$S(LEXFI=80:"^ICD9(",LEXFI=80.1:"^ICD0(",1:"") Q:'$L(LEXRT)
- S LEXIEN=+($G(X)) Q:'$D(@(LEXRT_+LEXIEN_",0)")) 0
- S LEXI1=+($G(Y)) I +($G(LEXI1))'>0 D Q:+($G(LEXI1))'>0 0
- . S LEXD1=$O(@(LEXRT_+LEXIEN_",68,""B"","" "")"),-1) Q:LEXD1'?7N
- . S LEXI1=$O(@(LEXRT_+LEXIEN_",68,""B"","_+LEXD1_","" "")"),-1)
- Q:'$D(@(LEXRT_+LEXIEN_",68,"_+LEXI1_",0)")) 0 Q:'$D(@(LEXRT_+LEXIEN_",68,"_+LEXI1_",1)")) 0
- S LEXD1=$P($G(@(LEXRT_+LEXIEN_",68,"_+LEXI1_",0)")),"^",1) Q:LEXD1'?7N
- S LEXD2=$O(@(LEXRT_+LEXIEN_",68,""B"","_+LEXD1_")"),-1) Q:LEXD2'?7N 0
- S LEXI2=$O(@(LEXRT_+LEXIEN_",68,""B"","_+LEXD2_","" "")"),-1) Q:LEXI2'>0 0
- Q:'$D(@(LEXRT_+LEXIEN_",68,"_+LEXI2_",0)")) 0 Q:'$D(@(LEXRT_+LEXIEN_",68,"_+LEXI2_",1)")) 0
- S LEXA1=$$UP^XLFSTR($$TM($$DS($P($G(@(LEXRT_+LEXIEN_",68,"_+LEXI1_",1)")),"^",1))))
- S LEXA2=$$UP^XLFSTR($$TM($$DS($P($G(@(LEXRT_+LEXIEN_",68,"_+LEXI2_",1)")),"^",1))))
- Q:LEXA1=LEXA2 1
- Q 0
- ;
- ; Miscellaneous
- SAME(X1,X2) ; Are Arrays X1 and X2 the same
- Q:$O(X1(" "),-1)'>0 "-1^Invalid Array" Q:$O(X2(" "),-1)'>0 "-1^Invalid Array"
- D PR^LEXU(.X1,80),PR^LEXU(.X2,80) N LEXSAME,LEXTIEN
- S LEXSAME=1,LEXTIEN=0 F S LEXTIEN=$O(X1(LEXTIEN)) Q:+LEXTIEN'>0 S:$G(X1(+LEXTIEN))'=$G(X2(+LEXTIEN)) LEXSAME=0
- I LEXSAME=1 S LEXTIEN=0 F S LEXTIEN=$O(X2(LEXTIEN)) Q:+LEXTIEN'>0 S:$G(X2(+LEXTIEN))'=$G(X1(+LEXTIEN)) LEXSAME=0
- Q LEXSAME
- DS(X) ; Remove Double Space
- S X=$G(X) Q:X="" X
- F Q:X'[" " S X=$P(X," ",1)_" "_$P(X," ",2,4000)
- Q X
- TM(X,Y) ; Trim Character Y - Default " " Space
- S X=$G(X) Q:X="" X S Y=$G(Y) S:'$L(Y) Y=" "
- F Q:$E(X,1)'=Y S X=$E(X,2,$L(X))
- F Q:$E(X,$L(X))'=Y S X=$E(X,1,($L(X)-1))
- Q X
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HLEXQC5 8460 printed Feb 18, 2025@23:34:30 Page 2
- LEXQC5 ;ISL/KER - Query - Changes - Duplicate Text ;05/23/2017
- +1 ;;2.0;LEXICON UTILITY;**103**;Sep 23, 1996;Build 2
- +2 ;
- +3 ; Global Variables
- +4 ; ^DIC(81.3, ICR 4492
- +5 ; ^ICD0( ICR 4486
- +6 ; ^ICD9( ICR 4485
- +7 ; ^ICPT( ICR 4489
- +8 ;
- +9 ; External References
- +10 ; $$UP^XLFSTR ICR 10103
- +11 ;
- +12 QUIT
- DUPL(LEX,X,Y) ; Long Description is a Duplicate
- +1 ;
- +2 ; Input
- +3 ; LEX File Number
- +4 ; 80 ICD Diagnosis
- +5 ; 80.1 ICD Procedures
- +6 ; 81 CPT Procedures
- +7 ; 81.3 Modifiers
- +8 ; X Code IEN
- +9 ; Y Long Description IEN
- +10 ;
- +11 ; Output
- +12 ;
- +13 ; $$DUPL Boolean value
- +14 ;
- +15 ; 1 Long Descriptions is a Duplicate
- +16 ; 0 Long Descriptions is not a Duplicate
- +17 ;
- +18 NEW LEXFI,LEXIEN,LEXI
- SET LEXFI=$GET(LEX)
- if "^80^80.1^81^81.3^"'[("^"_LEXFI_"^")
- QUIT 0
- +19 SET LEXIEN=+($GET(X))
- if +LEXIEN'>0
- QUIT 0
- SET LEXI=+($GET(Y))
- if +LEXI'>0
- QUIT 0
- +20 if LEXFI=81
- QUIT +($$CPTL(LEXIEN,LEXI))
- if LEXFI=81.3
- QUIT +($$MODL(LEXIEN,LEXI))
- if LEXFI=80!(LEXFI=80.1)
- QUIT +($$ICDL(LEXFI,LEXIEN,LEXI))
- +21 QUIT 0
- DUPS(LEX,X,Y) ; Short Description is a Duplicate
- +1 ;
- +2 ; Input
- +3 ; LEX File Number
- +4 ; 80 ICD Diagnosis
- +5 ; 80.1 ICD Procedures
- +6 ; 81 CPT Procedures
- +7 ; 81.3 Modifiers
- +8 ; X Code IEN
- +9 ; Y Short Description IEN
- +10 ;
- +11 ; Output
- +12 ;
- +13 ; $$DUPL Boolean value
- +14 ;
- +15 ; 1 Short Descriptions is a Duplicate
- +16 ; 0 Short Descriptions is not a Duplicate
- +17 ;
- +18 NEW LEXFI,LEXIEN,LEXI
- SET LEXFI=$GET(LEX)
- if "^80^80.1^81^"'[("^"_LEXFI_"^")
- QUIT 0
- +19 SET LEXIEN=+($GET(X))
- if +LEXIEN'>0
- QUIT 0
- SET LEXI=+($GET(Y))
- if +LEXI'>0
- QUIT 0
- +20 if LEXFI=81
- QUIT +($$CPTS(LEXIEN,LEXI))
- if LEXFI=81.3
- QUIT +($$MODS(LEXIEN,LEXI))
- if LEXFI=80!(LEXFI=80.1)
- QUIT +($$ICDS(LEXFI,LEXIEN,LEXI))
- +21 QUIT 0
- +22 ;
- +23 ; Coding System Text
- CPTL(X,Y) ; CPT Long Description is a Duplicate
- +1 NEW LEXA1,LEXA2,LEXD1,LEXD2,LEXI,LEXI1,LEXI2,LEXIEN,LEXL,LEXT
- +2 SET LEXIEN=+($GET(X))
- if '$DATA(^ICPT(+LEXIEN,0))
- QUIT 0
- +3 SET LEXI1=+($GET(Y))
- IF +($GET(LEXI1))'>0
- Begin DoDot:1
- +4 SET LEXD1=$ORDER(^ICPT(+LEXIEN,62,"B"," "),-1)
- SET LEXI1=$ORDER(^ICPT(+LEXIEN,62,"B",+LEXD1," "),-1)
- End DoDot:1
- if '$DATA(^ICPT(+LEXIEN,62,+LEXI1,1))
- QUIT 0
- +5 SET LEXD1=$GET(^ICPT(+LEXIEN,62,+LEXI1,0))
- if LEXD1'?7N
- QUIT 0
- +6 SET LEXD2=$ORDER(^ICPT(+LEXIEN,62,"B",+LEXD1),-1)
- if LEXD2'?7N
- QUIT 0
- if LEXD1'>LEXD2
- QUIT
- +7 SET LEXI2=$ORDER(^ICPT(+LEXIEN,62,"B",+LEXD2," "),-1)
- if +LEXD2'>0
- QUIT
- if '$DATA(^ICPT(+LEXIEN,62,+LEXI2,1))
- QUIT 0
- +8 SET LEXL=0
- FOR
- SET LEXL=$ORDER(^ICPT(+LEXIEN,62,+LEXI1,1,LEXL))
- if +LEXL'>0
- QUIT
- Begin DoDot:1
- +9 NEW LEXT,LEXI
- SET LEXT=$GET(^ICPT(+LEXIEN,62,+LEXI1,1,+LEXL,0))
- if '$LENGTH($GET(LEXT))
- QUIT
- +10 SET LEXI=$ORDER(LEXA1(" "),-1)+1
- SET LEXA1(+LEXI)=LEXT
- End DoDot:1
- +11 SET LEXL=0
- FOR
- SET LEXL=$ORDER(^ICPT(+LEXIEN,62,+LEXI2,1,LEXL))
- if +LEXL'>0
- QUIT
- Begin DoDot:1
- +12 NEW LEXT,LEXI
- SET LEXT=$GET(^ICPT(+LEXIEN,62,+LEXI2,1,+LEXL,0))
- if '$LENGTH($GET(LEXT))
- QUIT
- +13 SET LEXI=$ORDER(LEXA2(" "),-1)+1
- SET LEXA2(+LEXI)=LEXT
- End DoDot:1
- +14 SET X=+($$SAME(.LEXA1,.LEXA2))
- +15 QUIT X
- CPTS(X,Y) ; CPT Short Description is a Duplicate
- +1 NEW LEXA1,LEXA2,LEXD1,LEXD2,LEXI1,LEXI2,LEXIEN,LEXL
- +2 SET LEXIEN=+($GET(X))
- if '$DATA(^ICPT(+LEXIEN,0))
- QUIT 0
- +3 SET LEXI1=+($GET(Y))
- IF +($GET(LEXI1))'>0
- Begin DoDot:1
- +4 SET LEXD1=+($ORDER(^ICPT(+LEXIEN,61,"B"," "),-1))
- SET LEXI1=$ORDER(^ICPT(+LEXIEN,61,"B",+LEXD1," "),-1)
- End DoDot:1
- if '$DATA(^ICPT(+LEXIEN,61,+LEXI1,0))
- QUIT 0
- +5 SET LEXD1=$PIECE($GET(^ICPT(+LEXIEN,61,+LEXI1,0)),"^",1)
- if LEXD1'?7N
- QUIT 0
- +6 SET LEXD2=$ORDER(^ICPT(+LEXIEN,61,"B",+LEXD1),-1)
- if LEXD2'?7N
- QUIT 0
- if LEXD1'>LEXD2
- QUIT 0
- +7 SET LEXI2=$ORDER(^ICPT(+LEXIEN,61,"B",+LEXD2," "),-1)
- if LEXI2'>0
- QUIT
- if '$DATA(^ICPT(+LEXIEN,61,+LEXI2,0))
- QUIT 0
- +8 SET LEXA1=$$UP^XLFSTR($$TM($$DS($PIECE($GET(^ICPT(+LEXIEN,61,+LEXI1,0)),"^",2))))
- +9 SET LEXA2=$$UP^XLFSTR($$TM($$DS($PIECE($GET(^ICPT(+LEXIEN,61,+LEXI2,0)),"^",2))))
- +10 if LEXA1'=LEXA2
- QUIT 0
- +11 QUIT 1
- MODL(X,Y) ; Modifier Long Description is a Duplicate
- +1 NEW LEXA1,LEXA2,LEXD1,LEXD2,LEXI,LEXI1,LEXI2,LEXIEN,LEXL,LEXT
- +2 SET LEXIEN=+($GET(X))
- if '$DATA(^DIC(81.3,+LEXIEN,0))
- QUIT 0
- +3 SET LEXI1=+($GET(Y))
- IF +($GET(LEXI1))'>0
- Begin DoDot:1
- +4 SET LEXD1=$ORDER(^DIC(81.3,+LEXIEN,62,"B"," "),-1)
- SET LEXI1=$ORDER(^DIC(81.3,+LEXIEN,62,"B",+LEXD1," "),-1)
- End DoDot:1
- if '$DATA(^DIC(81.3,+LEXIEN,62,+LEXI1,1))
- QUIT 0
- +5 SET LEXD1=$GET(^DIC(81.3,+LEXIEN,62,+LEXI1,0))
- if LEXD1'?7N
- QUIT 0
- +6 SET LEXD2=$ORDER(^DIC(81.3,+LEXIEN,62,"B",+LEXD1),-1)
- if LEXD2'?7N
- QUIT 0
- if LEXD1'>LEXD2
- QUIT
- +7 SET LEXI2=$ORDER(^DIC(81.3,+LEXIEN,62,"B",+LEXD2," "),-1)
- if +LEXD2'>0
- QUIT
- if '$DATA(^DIC(81.3,+LEXIEN,62,+LEXI2,1))
- QUIT 0
- +8 SET LEXL=0
- FOR
- SET LEXL=$ORDER(^DIC(81.3,+LEXIEN,62,+LEXI1,1,LEXL))
- if +LEXL'>0
- QUIT
- Begin DoDot:1
- +9 NEW LEXT,LEXI
- SET LEXT=$GET(^DIC(81.3,+LEXIEN,62,+LEXI1,1,+LEXL,0))
- if '$LENGTH($GET(LEXT))
- QUIT
- +10 SET LEXI=$ORDER(LEXA1(" "),-1)+1
- SET LEXA1(+LEXI)=LEXT
- End DoDot:1
- +11 SET LEXL=0
- FOR
- SET LEXL=$ORDER(^DIC(81.3,+LEXIEN,62,+LEXI2,1,LEXL))
- if +LEXL'>0
- QUIT
- Begin DoDot:1
- +12 NEW LEXT,LEXI
- SET LEXT=$GET(^DIC(81.3,+LEXIEN,62,+LEXI2,1,+LEXL,0))
- if '$LENGTH($GET(LEXT))
- QUIT
- +13 SET LEXI=$ORDER(LEXA2(" "),-1)+1
- SET LEXA2(+LEXI)=LEXT
- End DoDot:1
- +14 SET X=+($$SAME(.LEXA1,.LEXA2))
- +15 QUIT X
- MODS(X,Y) ; Modifier Short Description is a Duplicate
- +1 NEW LEXA1,LEXA2,LEXD1,LEXD2,LEXI1,LEXI2,LEXIEN,LEXL
- +2 SET LEXIEN=+($GET(X))
- if '$DATA(^DIC(81.3,+LEXIEN,0))
- QUIT 0
- +3 SET LEXI1=+($GET(Y))
- IF +($GET(LEXI1))'>0
- Begin DoDot:1
- +4 SET LEXD1=+($ORDER(^DIC(81.3,+LEXIEN,61,"B"," "),-1))
- SET LEXI1=$ORDER(^DIC(81.3,+LEXIEN,61,"B",+LEXD1," "),-1)
- End DoDot:1
- if '$DATA(^DIC(81.3,+LEXIEN,61,+LEXI1,0))
- QUIT 0
- +5 SET LEXD1=$PIECE($GET(^DIC(81.3,+LEXIEN,61,+LEXI1,0)),"^",1)
- if LEXD1'?7N
- QUIT 0
- +6 SET LEXD2=$ORDER(^DIC(81.3,+LEXIEN,61,"B",+LEXD1),-1)
- if LEXD2'?7N
- QUIT 0
- if LEXD1'>LEXD2
- QUIT 0
- +7 SET LEXI2=$ORDER(^DIC(81.3,+LEXIEN,61,"B",+LEXD2," "),-1)
- if LEXI2'>0
- QUIT
- if '$DATA(^DIC(81.3,+LEXIEN,61,+LEXI2,0))
- QUIT 0
- +8 SET LEXA1=$$UP^XLFSTR($$TM($$DS($PIECE($GET(^DIC(81.3,+LEXIEN,61,+LEXI1,0)),"^",2))))
- +9 SET LEXA2=$$UP^XLFSTR($$TM($$DS($PIECE($GET(^DIC(81.3,+LEXIEN,61,+LEXI2,0)),"^",2))))
- +10 if LEXA1'=LEXA2
- QUIT 0
- +11 QUIT 1
- ICDL(LEX,X,Y) ; ICD Long Description is a Duplicate
- +1 NEW LEXIEN,LEXI1,LEXI2,LEXD1,LEXD2,LEXA1,LEXA2,LEXL,LEXRT,LEXFI
- +2 SET LEXFI=+($GET(LEX))
- if "^80^80.1^"'[("^"_LEXFI_"^")
- QUIT 0
- +3 SET LEXRT=$SELECT(LEXFI=80:"^ICD9(",LEXFI=80.1:"^ICD0(",1:"")
- if '$LENGTH(LEXRT)
- QUIT
- +4 SET LEXIEN=+($GET(X))
- if '$DATA(@(LEXRT_+LEXIEN_",0)"))
- QUIT 0
- +5 SET LEXI1=+($GET(Y))
- IF +($GET(LEXI1))'>0
- Begin DoDot:1
- +6 SET LEXD1=$ORDER(@(LEXRT_+LEXIEN_",68,""B"","" "")"),-1)
- if LEXD1'?7N
- QUIT
- +7 SET LEXI1=$ORDER(@(LEXRT_+LEXIEN_",68,""B"","_+LEXD1_","" "")"),-1)
- End DoDot:1
- if +($GET(LEXI1))'>0
- QUIT 0
- +8 if '$DATA(@(LEXRT_+LEXIEN_",68,"_+LEXI1_",0)"))
- QUIT 0
- if '$DATA(@(LEXRT_+LEXIEN_",68,"_+LEXI1_",1)"))
- QUIT 0
- +9 SET LEXD1=$PIECE($GET(@(LEXRT_+LEXIEN_",68,"_+LEXI1_",0)")),"^",1)
- if LEXD1'?7N
- QUIT
- +10 SET LEXD2=$ORDER(@(LEXRT_+LEXIEN_",68,""B"","_+LEXD1_")"),-1)
- if LEXD2'?7N
- QUIT 0
- +11 SET LEXI2=$ORDER(@(LEXRT_+LEXIEN_",68,""B"","_+LEXD2_","" "")"),-1)
- if LEXI2'>0
- QUIT 0
- +12 if '$DATA(@(LEXRT_+LEXIEN_",68,"_+LEXI2_",0)"))
- QUIT 0
- if '$DATA(@(LEXRT_+LEXIEN_",68,"_+LEXI2_",1)"))
- QUIT 0
- +13 SET LEXA1=$$UP^XLFSTR($$TM($$DS($PIECE($GET(@(LEXRT_+LEXIEN_",68,"_+LEXI1_",1)")),"^",1))))
- +14 SET LEXA2=$$UP^XLFSTR($$TM($$DS($PIECE($GET(@(LEXRT_+LEXIEN_",68,"_+LEXI2_",1)")),"^",1))))
- +15 if LEXA1=LEXA2
- QUIT 1
- +16 QUIT 0
- ICDS(LEX,X,Y) ; ICD Short Description is a Duplicate
- +1 NEW LEXIEN,LEXI1,LEXI2,LEXD1,LEXD2,LEXA1,LEXA2,LEXL,LEXRT,LEXFI
- +2 SET LEXFI=+($GET(LEX))
- if "^80^80.1^"'[("^"_LEXFI_"^")
- QUIT 0
- +3 SET LEXRT=$SELECT(LEXFI=80:"^ICD9(",LEXFI=80.1:"^ICD0(",1:"")
- if '$LENGTH(LEXRT)
- QUIT
- +4 SET LEXIEN=+($GET(X))
- if '$DATA(@(LEXRT_+LEXIEN_",0)"))
- QUIT 0
- +5 SET LEXI1=+($GET(Y))
- IF +($GET(LEXI1))'>0
- Begin DoDot:1
- +6 SET LEXD1=$ORDER(@(LEXRT_+LEXIEN_",68,""B"","" "")"),-1)
- if LEXD1'?7N
- QUIT
- +7 SET LEXI1=$ORDER(@(LEXRT_+LEXIEN_",68,""B"","_+LEXD1_","" "")"),-1)
- End DoDot:1
- if +($GET(LEXI1))'>0
- QUIT 0
- +8 if '$DATA(@(LEXRT_+LEXIEN_",68,"_+LEXI1_",0)"))
- QUIT 0
- if '$DATA(@(LEXRT_+LEXIEN_",68,"_+LEXI1_",1)"))
- QUIT 0
- +9 SET LEXD1=$PIECE($GET(@(LEXRT_+LEXIEN_",68,"_+LEXI1_",0)")),"^",1)
- if LEXD1'?7N
- QUIT
- +10 SET LEXD2=$ORDER(@(LEXRT_+LEXIEN_",68,""B"","_+LEXD1_")"),-1)
- if LEXD2'?7N
- QUIT 0
- +11 SET LEXI2=$ORDER(@(LEXRT_+LEXIEN_",68,""B"","_+LEXD2_","" "")"),-1)
- if LEXI2'>0
- QUIT 0
- +12 if '$DATA(@(LEXRT_+LEXIEN_",68,"_+LEXI2_",0)"))
- QUIT 0
- if '$DATA(@(LEXRT_+LEXIEN_",68,"_+LEXI2_",1)"))
- QUIT 0
- +13 SET LEXA1=$$UP^XLFSTR($$TM($$DS($PIECE($GET(@(LEXRT_+LEXIEN_",68,"_+LEXI1_",1)")),"^",1))))
- +14 SET LEXA2=$$UP^XLFSTR($$TM($$DS($PIECE($GET(@(LEXRT_+LEXIEN_",68,"_+LEXI2_",1)")),"^",1))))
- +15 if LEXA1=LEXA2
- QUIT 1
- +16 QUIT 0
- +17 ;
- +18 ; Miscellaneous
- SAME(X1,X2) ; Are Arrays X1 and X2 the same
- +1 if $ORDER(X1(" "),-1)'>0
- QUIT "-1^Invalid Array"
- if $ORDER(X2(" "),-1)'>0
- QUIT "-1^Invalid Array"
- +2 DO PR^LEXU(.X1,80)
- DO PR^LEXU(.X2,80)
- NEW LEXSAME,LEXTIEN
- +3 SET LEXSAME=1
- SET LEXTIEN=0
- FOR
- SET LEXTIEN=$ORDER(X1(LEXTIEN))
- if +LEXTIEN'>0
- QUIT
- if $GET(X1(+LEXTIEN))'=$GET(X2(+LEXTIEN))
- SET LEXSAME=0
- +4 IF LEXSAME=1
- SET LEXTIEN=0
- FOR
- SET LEXTIEN=$ORDER(X2(LEXTIEN))
- if +LEXTIEN'>0
- QUIT
- if $GET(X2(+LEXTIEN))'=$GET(X1(+LEXTIEN))
- SET LEXSAME=0
- +5 QUIT LEXSAME
- DS(X) ; Remove Double Space
- +1 SET X=$GET(X)
- if X=""
- QUIT X
- +2 FOR
- if X'[" "
- QUIT
- SET X=$PIECE(X," ",1)_" "_$PIECE(X," ",2,4000)
- +3 QUIT X
- TM(X,Y) ; Trim Character Y - Default " " Space
- +1 SET X=$GET(X)
- if X=""
- QUIT X
- SET Y=$GET(Y)
- if '$LENGTH(Y)
- SET Y=" "
- +2 FOR
- if $EXTRACT(X,1)'=Y
- QUIT
- SET X=$EXTRACT(X,2,$LENGTH(X))
- +3 FOR
- if $EXTRACT(X,$LENGTH(X))'=Y
- QUIT
- SET X=$EXTRACT(X,1,($LENGTH(X)-1))
- +4 QUIT X