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

LEXQCMA.m

Go to the documentation of this file.
  1. LEXQCMA ;ISL/KER - Query - CPT Modifiers - Ask ;10/30/2008
  1. ;;2.0;LEXICON UTILITY;**62**;Sep 23, 1996;Build 16
  1. ;
  1. ; Global Variables
  1. ; ^DIC(81.3 ICR 4492
  1. ;
  1. ; External References
  1. ; ^DIC ICR 10006
  1. ; ^DIR ICR 10026
  1. ; $$MOD^ICPTMOD ICR 1996
  1. ; $$DT^XLFDT ICR 10103
  1. ; $$FMTE^XLFDT ICR 10103
  1. ; $$UP^XLFSTR ICR 10104
  1. ;
  1. ; Local Variables NEWed or KILLed Elsewhere
  1. ; LEXCDT Code Set Date
  1. ; LEXEXIT Exit Flag
  1. ; LEXMOD CPT Modifier IEN^Text
  1. ;
  1. Q
  1. MOD(X) ; CPT Modifier Code
  1. Q:+($G(LEXEXIT))>0 "^^" N DIC,DTOUT,DUOUT,LEXMD,LEXSO,LEXDTXT,LEXVTXT,LEXVDT,Y,ICPTVDT S:$G(LEXCDT)?7N ICPTVDT=$G(LEXCDT)
  1. S DIC(0)="AEQMZ",DIC="^DIC(81.3,",DIC("A")=" Select a CPT Modifier code: ",DIC("S")="I +($$OK^LEXQCMA(+($G(Y))))>0" W !
  1. D ^DIC S:$G(X)["^^"!($D(DTOUT)) LEXEXIT=1 Q:$G(X)["^^"!(+($G(LEXEXIT))>0) "^^"
  1. Q:$G(X)="^" "^" Q:$G(X)["^^" "^^" Q:$D(DTOUT)!($D(DUOUT)) "^" S LEXSO=$P($G(Y),"^",2) S X="" I +Y>0,$L(LEXSO) D
  1. . S LEXVDT=$G(LEXCDT) S:LEXVDT'?7N LEXVDT=$$DT^XLFDT S X=Y,LEXDTXT=$P($G(Y(0)),"^",2),LEXMD=$$MOD^ICPTMOD(+Y,"I",LEXVDT)
  1. . S:$L($G(LEXDTXT)) LEXDTXT=LEXDTXT_" (Text not Versioned)" S LEXVTXT=$P(LEXMD,"^",3) S:'$L(LEXVTXT) LEXVTXT=LEXDTXT
  1. . S X=+Y_"^"_LEXSO S:$L(LEXVTXT) X=X_"^"_LEXVTXT
  1. S X=$$UP^XLFSTR(X) Q:'$L(X) "^"
  1. Q X
  1. OK(X) ; Screen for Modifier Lookup
  1. N LEXE,LEXH,LEXI,LEXIEN,LEXLA,LEXLAI,LEXLE,LEXLI,LEXM,LEXR,LEXS,LEXX S LEXIEN=+($G(X)),LEXM=$P($G(^DIC(81.3,+LEXIEN,0)),"^",1) Q:'$L(LEXM) 0
  1. N LEXX,LEXI K LEXX S LEXI=0 F S LEXI=$O(^DIC(81.3,"B",LEXM,LEXI)) Q:+LEXI'>0 D
  1. . Q:$P($G(^DIC(81.3,+LEXI,0)),"^",4)="V" N LEXR,LEXH,LEXE,LEXS S LEXR=$S($O(^DIC(81.3,+LEXI,10,0))>0:1,1:0)
  1. . S:'$D(LEXX(+LEXI)) LEXX(0)=+($G(LEXX(0)))+1 S LEXX(+LEXI)=LEXM_"^"_LEXR
  1. . M LEXX(LEXI,60)=^DIC(81.3,+LEXI,60) K LEXX(LEXI,60,"B") S LEXH=0 F S LEXH=$O(LEXX(LEXI,60,LEXH)) Q:+LEXH'>0 D
  1. . . N LEXE,LEXS S LEXE=$G(LEXX(LEXI,60,LEXH,0)),LEXS=$P(LEXE,"^",2),LEXE=$P(LEXE,"^",1) Q:'$L(LEXS) Q:'$L(LEXE)
  1. . . S:+LEXS>0 LEXX("A",LEXE,LEXI)=LEXI,LEXX("S",LEXI,1)="" S:+LEXS'>0 LEXX("I",LEXE,LEXI)=LEXI,LEXX("S",LEXI,0)=""
  1. S LEXE=0 F S LEXE=$O(LEXX("S",LEXE)) Q:+LEXE'>0 S:$D(LEXX("S",LEXE,1))&('$D(LEXX("S",LEXE,0))) LEXX("SA",LEXE)=""
  1. Q:+($G(LEXX(0)))'>1&($D(LEXX(+LEXIEN))) 1 Q:$L($O(LEXX("SA",0)))&($O(LEXX("SA",0))=$O(LEXX("SA"," "),-1))&($D(LEXX("SA",+LEXIEN))) 1
  1. Q:$L($O(LEXX("SA",0)))&($O(LEXX("SA",0))=$O(LEXX("SA"," "),-1))&('$D(LEXX("SA",+LEXIEN))) 0 S LEXLA=$O(LEXX("A"," "),-1)
  1. S LEXLAI=$O(LEXX("A",+LEXLA," "),-1),LEXLI=$O(LEXX("I"," "),-1),LEXLE="" S:LEXLA>0&(LEXLA=LEXLI) LEXLE=$O(LEXX("A",LEXLA," "),-1)
  1. S:LEXLI>0&(LEXLA<LEXLI) LEXLE=$O(LEXX("I",LEXLI," "),-1) S:LEXLA>0&(LEXLA>LEXLI) LEXLE=$O(LEXX("A",LEXLA," "),-1)
  1. Q:+LEXLE'=+LEXIEN 0
  1. Q 1
  1. ;
  1. INC(X) ; Include CPT Modifier Ranges
  1. Q:+($G(LEXEXIT))>0 "^^" N DIR,DIRUT,DIROUT,DTOUT,DUOUT,Y,DIRB S DIRB=$$RET^LEXQD("LEXQCMA","INC",+($G(DUZ)),"Include Modifier Ranges") S:'$L(DIRB) DIRB="Yes"
  1. S DIR(0)="YAO",DIR("A")=" Include Modifier CPT Code Ranges? (Y/N) " S:"^YES^NO^Yes^No^"[("^"_DIRB_"^") DIR("B")=DIRB
  1. S DIR("PRE")="S:X[""?"" X=""??""" S (DIR("?"),DIR("??"))="^D INCH^LEXQCMA"
  1. W ! D ^DIR S:X["^^"!($D(DIROUT)) LEXEXIT=1 Q:X["^^"!(+($G(LEXEXIT))>0) "^^" Q:$D(DIRUT)!($D(DIROUT))!($D(DTOUT))!($D(DUOUT)) "^" S DIRB=$S(Y=1:"Yes",Y=0:"No",X["^":"",1:"")
  1. D:$L(DIRB) SAV^LEXQD("LEXQCMA","INC",+($G(DUZ)),"Include Modifier Ranges",$G(DIRB)) S X=+Y
  1. Q X
  1. INCH ; Include CPT Modifier Ranges Help
  1. I $L($P($G(LEXMOD),"^",2)),$L($G(LEXCDT)) D Q
  1. . W !,?5,"Answer 'Yes' to include the CPT Code Ranges for for CPT"
  1. . W !,?5,"Modifier code ",$P($G(LEXMOD),"^",2),". Answer 'No' to exlcude CPT Code Ranges"
  1. . W !,?5,"from the display."
  1. W !,?5,"Answer 'Yes' to include the CPT Code Ranges for the CPT"
  1. W !,?5,"Modifier. Answer 'No' to exclude CPT Code Ranges from the"
  1. W !,?5,"display."
  1. Q
  1. ;
  1. INCI(X) ; Include Inactive CPT Modifier Ranges
  1. Q:+($G(LEXEXIT))>0 "^^" N DIR,DIRUT,DIROUT,DTOUT,DUOUT,Y,DIRB S DIRB=$$RET^LEXQD("LEXQCMA","INCI",+($G(DUZ)),"Include Inactive Modifier Ranges") S:'$L(DIRB) DIRB="Yes"
  1. S DIR(0)="YAO",DIR("A")=" Include 'Inactive' Modifier CPT Code Ranges? (Y/N) " S:"^YES^NO^Yes^No^"[("^"_DIRB_"^") DIR("B")=DIRB
  1. S DIR("B")="No" S DIR("PRE")="S:X[""?"" X=""??""" S (DIR("?"),DIR("??"))="^D INCIH^LEXQCMA"
  1. W ! D ^DIR S:X["^^" LEXEXIT=1!($D(DTOUT)) Q:X["^^"!(+($G(LEXEXIT))>0) "^^" Q:$D(DIRUT)!($D(DIROUT))!($D(DTOUT))!($D(DUOUT)) "^" S DIRB=$S(Y=1:"Yes",Y=0:"No",X["^":"",1:"")
  1. D:$L(DIRB) SAV^LEXQD("LEXQCMA","INCI",+($G(DUZ)),"Include Inactive Modifier Ranges",$G(DIRB)) S X=+Y
  1. Q X
  1. INCIH ; Include Inactive CPT Modifier Ranges Help
  1. I $L($P($G(LEXMOD),"^",2)),$G(LEXCDT)?7N D Q
  1. . W !,?5,"Answer 'Yes' to include both Active and Inactive CPT Code"
  1. . W !,?5,"Ranges for the CPT Modifier ",$P($G(LEXMOD),"^",2),". Answer 'No' to include"
  1. . W !,?5,"only the Active CPT Code Ranges that were active for the "
  1. . W !,?5,"CPT Modifier ",$P($G(LEXMOD),"^",2)," on ",$$SD($G(LEXCDT)),"."
  1. W !,?5,"Answer 'Yes' to include both Active and Inactive CPT Code "
  1. W !,?5,"Ranges for the selected CPT Modifier. Answer 'No' to "
  1. W !,?5,"include only the Active CPT Code Ranges for the selected"
  1. W !,?5,"CPT Modifier."
  1. Q
  1. ;
  1. INCF(X) ; Include Future CPT Modifier Ranges
  1. Q:+($G(LEXEXIT))>0 "^^" N DIR,DIRUT,DIROUT,DTOUT,DUOUT,Y,DIRB S DIRB=$$RET^LEXQD("LEXQCMA","INCF",+($G(DUZ)),"Include Future Modifier Ranges") S:'$L(DIRB) DIRB="Yes"
  1. S DIR(0)="YAO",DIR("A")=" Include 'Future Active' Modifier CPT Code Ranges? (Y/N) " S:"^YES^NO^Yes^No^"[("^"_DIRB_"^") DIR("B")=DIRB
  1. S DIR("B")="No" S DIR("PRE")="S:X[""?"" X=""??""" S (DIR("?"),DIR("??"))="^D INCFH^LEXQCMA"
  1. W ! D ^DIR S:X["^^"!($D(DTOUT)) LEXEXIT=1 Q:X["^^"!(+($G(LEXEXIT))>0) "^^" Q:$D(DIRUT)!($D(DIROUT))!($D(DTOUT))!($D(DUOUT)) "^" S DIRB=$S(Y=1:"Yes",Y=0:"No",X["^":"",1:"")
  1. D:$L(DIRB) SAV^LEXQD("LEXQCMA","INCF",+($G(DUZ)),"Include Future Modifier Ranges",$G(DIRB)) S X=+Y
  1. Q X
  1. INCFH ; Include Future CPT Modifier Ranges Help
  1. I $G(LEXCDT)?7N D Q
  1. . W !,?5,"Answer 'Yes' to include CPT Code Ranges that become Active"
  1. . W !,?5,"on or after ",$$SD($G(LEXCDT)),". Answer 'No' to exclude CPT Code"
  1. . W !,?5,"Ranges activated in the future."
  1. W !,?5,"Answer 'Yes' to include CPT Code Ranges that become Active"
  1. W !,?5,"in the future. Answer 'No' to to exclude CPT Code Ranges"
  1. W !,?5,"activated in the future."
  1. Q
  1. ;
  1. SD(X) ; Short Date
  1. Q $TR($$FMTE^XLFDT(+($G(X)),"5DZ"),"@"," ")
  1. CLR ; Clear
  1. N LEXCDT,LEXEXIT,LEXMOD
  1. Q