LEXQC4 ;ISL/KER - Query - Changes - CPT/MOD ;05/23/2017
 ;;2.0;LEXICON UTILITY;**80,103**;Sep 23, 1996;Build 2
 ;               
 ; Global Variables
 ;    ^DIC(81.3,          ICR   4492
 ;    ^ICPT(              ICR   4489
 ;    ^TMP("LEXQC")       SACC 2.3.2.5.1
 ;               
 ; External References
 ;    None
 ;               
 ; Local Variables NEWed in LEXQC
 ;    LEXADT              After Date
 ;    LEXBDT              Before Date
 ;    LEXCDT              Versioning Date
 ;    LEXQLEN             Length of Display
 ;    LEXQSTR             Length of String
 ;    LEXQTOT             Total Records
 ;               
CPT ; CPT Procedures Changes
 K ^TMP("LEXQC",$J,"CPT"),^TMP("LEXQC",$J,"CPC") N LEX1,LEX2,LEX3,LEX4
 N LEX5,LEX6,LEXAEF,LEXAST,LEXBEF,LEXBST,LEXCEF,LEXCNT,LEXCST,LEXH
 N LEXIDT,LEXIEN,LEXLC,LEXND,LEXPEF,LEXPST,LEXQL,LEXSO,LEXSTID
 S LEXQLEN=+($G(LEXQLEN)),LEXQTOT=+($G(LEXQTOT))
 S LEXQSTR=+($G(LEXQSTR)),LEXCNT=0,LEXLC=0
 S LEXIDT=$$IMPDATE^LEXU("CPT"),LEXCDT=$G(LEXCDT)
 Q:LEXCDT'?7N  Q:LEXCDT'>LEXIDT  S LEXIEN=0
 F  S LEXIEN=$O(^ICPT(LEXIEN)) Q:+LEXIEN'>0  D
 . N LEX1,LEX2,LEX3,LEX4,LEX5,LEX6,LEX7,LEX7D,LEX8,LEX8D,LEXAEF
 . N LEXAST,LEXBEF,LEXBST,LEXCEF,LEXCST,LEXH,LEXND,LEXPEF,LEXPST
 . N LEXQL,LEXSO,LEXSTID,LEXSID
 . S LEXCNT=LEXCNT+1 I LEXCNT'<+($G(LEXQSTR)) S LEXLC=+($G(LEXLC))+1 D
 . . W:'$D(ZTQUEUED)&('$D(LEXQUIET))&(LEXLC'>+($G(LEXQLEN))) "." S LEXCNT=0
 . S LEXSID="CPT",LEXSO=$P($G(^ICPT(LEXIEN,0)),"^",1) Q:'$L(LEXSO)
 . S:$E(LEXSO,1)?1U LEXSID="CPC"
 . S LEXH=$O(^ICPT(+LEXIEN,60,"B",LEXCDT," "),-1)
 . S LEXND=$G(^ICPT(+LEXIEN,60,+LEXH,0))
 . S LEXCEF=$P(LEXND,"^",1),LEXCST=$P(LEXND,"^",2)
 . S LEXH=$O(^ICPT(+LEXIEN,60,"B",LEXBDT," "),-1)
 . S LEXND=$G(^ICPT(+LEXIEN,60,+LEXH,0))
 . S LEXBEF=$P(LEXND,"^",1),LEXBST=$P(LEXND,"^",2)
 . S LEXH=$O(^ICPT(+LEXIEN,60,"B",LEXADT," "),-1)
 . S LEXND=$G(^ICPT(+LEXIEN,60,+LEXH,0))
 . S LEXAEF=$P(LEXND,"^",1),LEXAST=$P(LEXND,"^",2)
 . S LEXH=$O(^ICPT(+LEXIEN,60,"B",LEXCDT),-1)
 . S LEXH=$O(^ICPT(+LEXIEN,60,"B",+LEXH," "),-1)
 . S LEXND=$G(^ICPT(+LEXIEN,60,+LEXH,0))
 . S LEXPEF=$P(LEXND,"^",1),LEXPST=$P(LEXND,"^",2)
 . S LEX1=$D(^ICPT(+LEXIEN,61,"B",LEXCDT))>0
 . S LEX2=$D(^ICPT(+LEXIEN,62,"B",LEXCDT))>0
 . S LEX3=$O(^ICPT(+LEXIEN,61,"B",LEXCDT),-1)
 . S LEX4=$O(^ICPT(+LEXIEN,62,"B",LEXCDT),-1)
 . S LEX5=$D(^ICPT(+LEXIEN,61,"B",LEXCDT))
 . S LEX6=$D(^ICPT(+LEXIEN,62,"B",LEXCDT))
 . ; Short IEN Dupe
 . S LEX7=$O(^ICPT(+LEXIEN,61,"B",LEXCDT," "),-1),LEX7=$$DUPS^LEXQC5(81,LEXIEN,LEX7)
 . ; Long IEN Dupe
 . S LEX8=$O(^ICPT(+LEXIEN,62,"B",LEXCDT," "),-1),LEX8=$$DUPL^LEXQC5(81,LEXIEN,LEX8)
 . ; Activiation/Inactiviation/Re-Activation
 . ;   Has a current status and effective date
 . ;   Has a previous status and effective date
 . ;   Current status not equal to previosu status
 . ;   Has a short description
 . ;   Has a long description
 . ;   Activation - current status >0
 . ;   Inactivatin - current status =0
 . ;   Reactivation - current status >0 past status =0
 . S LEXQL=0 I $L(LEXCST),$L(LEXCEF) D  Q:LEXQL
 . . Q:$L(LEXBEF)&($L(LEXBST))&(LEXBST'=LEXCST)
 . . Q:$L(LEXAEF)&($L(LEXAST))&(LEXAST'=LEXCST)
 . . Q:(LEX1>0&(LEX3?7N))!(LEX2>0&(LEX4?7N))  Q:'$L($G(LEXSO))
 . . N LEXCT,LEXO,LEXSTID S LEXSTID=$S(+LEXCST>0:"ACT",1:"INA")
 . . I LEXSTID="ACT",$G(LEXPEF)?7N,+($G(LEXPST))'>0 D
 . . . I +($G(LEX5))'>0,+($G(LEX6))'>0 S LEXSTID="REA"
 . . S LEXQL=1
 . . S LEXO=LEXIEN_"^"_LEXSO_"^"_LEXCDT
 . . S LEXCT=+($G(^TMP("LEXQC",$J,LEXSID,LEXSTID,0)))
 . . S:'$D(^TMP("LEXQC",$J,LEXSID,LEXSTID,1,(LEXSO_" "))) LEXCT=LEXCT+1
 . . S ^TMP("LEXQC",$J,LEXSID,LEXSTID,1,(LEXSO_" "))=LEXO
 . . S ^TMP("LEXQC",$J,LEXSID,LEXSTID,0)=LEXCT
 . ; Revision
 . ;   I Previous status (LEXPST) >0 and
 . ;     Short exist (LEX1) with a previous short (LEX3) and not a duplicate (LEX7) or
 . ;     long exist (LEX2) with a previosu long (LEX4) and not a duplicate (LEX8)
 . S LEXQL=0 I +LEXPST>0,((LEX1>0&(LEX3?7N)&(LEX7'>0))!(LEX2>0&(LEX4?7N)&(LEX8'>0))) D  Q:LEXQL
 . . N LEXCT,LEXO Q:'$L($G(LEXSO))
 . . S LEXQL=1,LEXO=LEXIEN_"^"_LEXSO_"^"_LEXCDT
 . . S LEXCT=+($G(^TMP("LEXQC",$J,LEXSID,"REV",0)))
 . . S:'$D(^TMP("LEXQC",$J,LEXSID,"REV",1,(LEXSO_" "))) LEXCT=LEXCT+1
 . . S ^TMP("LEXQC",$J,LEXSID,"REV",1,(LEXSO_" "))=LEXO
 . . S ^TMP("LEXQC",$J,LEXSID,"REV",0)=LEXCT
 . ; Re-Use
 . ;   Current status (LEXCST) exist and active
 . ;   Previous Status (LEXPST) exist and is active
 . ;     Short exist (LEX1) with a previous short (LEX3) and not a duplicate (LEX7) or
 . ;     long exist (LEX2) with a previosu long (LEX4) and not a duplicate (LEX8)
 . S LEXQL=0 I ((LEXCEF?7N&(LEXCST>0))!(LEXPEF?7N&(LEXPST>0))),((LEX1>0&(LEX3?7N)&(LEX7'>0))!(LEX2>0&(LEX4?7N)&(LEX8'>0))) D
 . . N LEXCT,LEXO S LEXQL=1
 . . S LEXO=LEXIEN_"^"_LEXSO_"^"_LEXCDT
 . . S LEXCT=+($G(^TMP("LEXQC",$J,LEXSID,"REU",0)))
 . . S:'$D(^TMP("LEXQC",$J,LEXSID,"REU",1,(LEXSO_" "))) LEXCT=LEXCT+1
 . . S ^TMP("LEXQC",$J,LEXSID,"REU",1,(LEXSO_" "))=LEXO
 . . S ^TMP("LEXQC",$J,LEXSID,"REU",0)=LEXCT
 D:$D(^TMP("LEXQC",$J,"CPT")) UPC("CPT")
 D:$D(^TMP("LEXQC",$J,"CPC")) UPC("CPC")
 N LEXQUIET
 Q
MOD ; CPT Modifier Changes
 K ^TMP("LEXQC",$J,"MOD") N LEX1,LEX2,LEX3,LEX4,LEX5,LEX6,LEXAEF
 N LEXAST,LEXBEF,LEXBST,LEXCEF,LEXCNT,LEXCST,LEXH,LEXIDT,LEXIEN
 N LEXLC,LEXND,LEXPEF,LEXPST,LEXQL,LEXSO,LEXSTID
 S LEXQLEN=+($G(LEXQLEN)) S LEXQTOT=+($G(LEXQTOT))
 S LEXQSTR=+($G(LEXQSTR)),LEXCNT=0,LEXLC=0
 S LEXIDT=$$IMPDATE^LEXU("CPT"),LEXCDT=$G(LEXCDT)
 Q:LEXCDT'?7N  Q:LEXCDT'>LEXIDT  S LEXIEN=0
 F  S LEXIEN=$O(^DIC(81.3,LEXIEN)) Q:+LEXIEN'>0  D
 . Q:$O(^DIC(81.3,+LEXIEN,60,0))'>0  N LEX1,LEX2,LEX3,LEX4,LEX5
 . N LEX6,LEX7,LEX8,LEXAEF,LEXAF,LEXAST,LEXACT,LEXBEF,LEXBST,LEXCEF
 . N LEXCST,LEXH,LEXIF,LEXINA,LEXND,LEXPEF,LEXPST,LEXQL,LEXR,LEXRI
 . N LEXSO,LEXSTID,LEXSID S LEXCNT=LEXCNT+1
 . I LEXCNT'<+($G(LEXQSTR)) S LEXLC=+($G(LEXLC))+1 D
 . . W:'$D(ZTQUEUED)&('$D(LEXQUIET))&(LEXLC'>+($G(LEXQLEN))) "." S LEXCNT=0
 . S LEXSID="MOD" S LEXSO=$P($G(^DIC(81.3,LEXIEN,0)),"^",1)
 . Q:'$L(LEXSO)  S LEXH=$O(^DIC(81.3,+LEXIEN,60,"B",LEXCDT," "),-1)
 . S LEXND=$G(^DIC(81.3,+LEXIEN,60,+LEXH,0))
 . S LEXCEF=$P(LEXND,"^",1),LEXCST=$P(LEXND,"^",2)
 . S LEXH=$O(^DIC(81.3,+LEXIEN,60,"B",LEXBDT," "),-1)
 . S LEXND=$G(^DIC(81.3,+LEXIEN,60,+LEXH,0))
 . S LEXBEF=$P(LEXND,"^",1),LEXBST=$P(LEXND,"^",2)
 . S LEXH=$O(^DIC(81.3,+LEXIEN,60,"B",LEXADT," "),-1)
 . S LEXND=$G(^DIC(81.3,+LEXIEN,60,+LEXH,0))
 . S LEXAEF=$P(LEXND,"^",1),LEXAST=$P(LEXND,"^",2)
 . S LEXH=$O(^DIC(81.3,+LEXIEN,60,"B",LEXCDT),-1)
 . S LEXH=$O(^DIC(81.3,+LEXIEN,60,"B",+LEXH," "),-1)
 . S LEXND=$G(^DIC(81.3,+LEXIEN,60,+LEXH,0))
 . S LEXPEF=$P(LEXND,"^",1),LEXPST=$P(LEXND,"^",2)
 . S LEX1=$D(^DIC(81.3,+LEXIEN,61,"B",LEXCDT))>0
 . S LEX2=$D(^DIC(81.3,+LEXIEN,62,"B",LEXCDT))>0
 . S LEX3=$O(^DIC(81.3,+LEXIEN,61,"B",LEXCDT),-1)
 . S LEX4=$O(^DIC(81.3,+LEXIEN,62,"B",LEXCDT),-1)
 . S LEX5=$D(^DIC(81.3,+LEXIEN,61,"B",LEXCDT))
 . S LEX6=$D(^DIC(81.3,+LEXIEN,62,"B",LEXCDT))
 . ; Short IEN Dupe
 . S LEX7=$O(^DIC(81.3,+LEXIEN,61,"B",LEXCDT," "),-1),LEX7=$$DUPS^LEXQC5(81.3,LEXIEN,LEX7)
 . ; Long IEN Dupe
 . S LEX8=$O(^DIC(81.3,+LEXIEN,62,"B",LEXCDT," "),-1),LEX8=$$DUPL^LEXQC5(81.3,LEXIEN,LEX8)
 . ; Activiation/Inactiviation/Re-Activation
 . ;   Has a current status and effective date
 . ;   Has a previous status and effective date
 . ;   Current status not equal to previosu status
 . ;   Has a short description
 . ;   Has a long description
 . ;   Activation - current status >0
 . ;   Inactivatin - current status =0
 . ;   Reactivation - current status >0 past status =0
 . S LEXQL=0 I $L(LEXCST),$L(LEXCEF) D
 . . Q:$L(LEXBEF)&($L(LEXBST))&(LEXBST'=LEXCST)
 . . Q:$L(LEXAEF)&($L(LEXAST))&(LEXAST'=LEXCST)
 . . Q:(LEX1>0&(LEX3?7N))!(LEX2>0&(LEX4?7N))
 . . N LEXSTID Q:'$L($G(LEXSO))
 . . N LEXCT,LEXO S LEXSTID=$S(+LEXCST>0:"ACT",1:"INA")
 . . I LEXSTID="ACT",$G(LEXPEF)?7N,+($G(LEXPST))'>0 D
 . . . I +($G(LEX5))'>0,+($G(LEX6))'>0 S LEXSTID="REA"
 . . S LEXQL=1,LEXO=LEXIEN_"^"_LEXSO_"^"_LEXCDT
 . . S LEXCT=+($G(^TMP("LEXQC",$J,LEXSID,LEXSTID,0)))
 . . S:'$D(^TMP("LEXQC",$J,LEXSID,LEXSTID,1,(LEXSO_" "))) LEXCT=LEXCT+1
 . . S ^TMP("LEXQC",$J,LEXSID,LEXSTID,1,(LEXSO_" "))=LEXO
 . . S ^TMP("LEXQC",$J,LEXSID,LEXSTID,0)=LEXCT
 . ; Revision
 . ;   I Previous status (LEXPST) >0 and
 . ;     Short exist (LEX1) with a previous short (LEX3) and not a duplicate (LEX7) or
 . ;     Long exist (LEX2) with a previosu long (LEX4) and not a duplicate (LEX8)
 . I 'LEXQL I +LEXPST>0,((LEX1>0&(LEX3?7N)&(LEX7'>0))!(LEX2>0&(LEX4?7N)&(LEX8'>0))) D  Q:LEXQL
 . . N LEXCT,LEXO Q:'$L($G(LEXSO))  S LEXQL=1
 . . S LEXO=LEXIEN_"^"_LEXSO_"^"_LEXCDT
 . . S LEXCT=+($G(^TMP("LEXQC",$J,LEXSID,"REV",0)))
 . . S:'$D(^TMP("LEXQC",$J,LEXSID,"REV",1,(LEXSO_" "))) LEXCT=LEXCT+1
 . . S ^TMP("LEXQC",$J,LEXSID,"REV",1,(LEXSO_" "))=LEXO
 . . S ^TMP("LEXQC",$J,LEXSID,"REV",0)=LEXCT
 . ; Re-Used
 . ;   Current status (LEXCST) exist and active
 . ;   Previous Status (LEXPST) exist and is active
 . ;     Short exist (LEX1) with a previous short (LEX3) and not a duplicate (LEX7) or
 . ;     Long exist (LEX2) with a previosu long (LEX4) and not a duplicate (LEX8)
 . I 'LEXQL S LEXQL=0 I ((LEXCEF?7N&(LEXCST>0))!(LEXPEF?7N&(LEXPST>0))),((LEX1>0&(LEX3?7N)&(LEX7'>0))!(LEX2>0&(LEX4?7N)&(LEX8'>0))) D
 . . N LEXCT,LEXO S LEXQL=1
 . . S LEXO=LEXIEN_"^"_LEXSO_"^"_LEXCDT
 . . S LEXCT=+($G(^TMP("LEXQC",$J,LEXSID,"REU",0)))
 . . S:'$D(^TMP("LEXQC",$J,LEXSID,"REU",1,(LEXSO_" "))) LEXCT=LEXCT+1
 . . S ^TMP("LEXQC",$J,LEXSID,"REU",1,(LEXSO_" "))=LEXO
 . . S ^TMP("LEXQC",$J,LEXSID,"REU",0)=LEXCT
 . S (LEXAF,LEXIF,LEXRI)=0,LEXSID="RAN",LEXR=0
 . F  S LEXRI=$O(^DIC(81.3,+LEXIEN,10,LEXRI)) Q:+LEXRI'>0  D  Q:LEXR>1
 . . S LEXND=$G(^DIC(81.3,+LEXIEN,10,LEXRI,0))
 . . S LEXACT=$P(LEXND,"^",3),LEXINA=$P(LEXND,"^",4)
 . . I LEXACT=LEXCDT,'$L(LEXINA) D
 . . . N LEXCT,LEXO Q:$D(^TMP("LEXQC",$J,LEXSID,"ACT",1,(LEXSO_" ")))
 . . . S LEXO=LEXIEN_"^"_LEXSO_"^"_LEXCDT
 . . . S LEXCT=+($G(^TMP("LEXQC",$J,LEXSID,"ACT",0)))
 . . . S:'$D(^TMP("LEXQC",$J,LEXSID,"ACT",1,(LEXSO_" "))) LEXCT=LEXCT+1
 . . . S ^TMP("LEXQC",$J,LEXSID,"ACT",1,(LEXSO_" "))=LEXO
 . . . S ^TMP("LEXQC",$J,LEXSID,"ACT",0)=LEXCT,LEXAF=1
 . . I LEXINA=LEXCDT,$L(LEXACT),LEXINA>LEXACT,(LEXINA-LEXACT)>1 D
 . . . N LEXCT,LEXO Q:$D(^TMP("LEXQC",$J,LEXSID,"INA",1,(LEXSO_" ")))
 . . . S LEXO=LEXIEN_"^"_LEXSO_"^"_LEXCDT
 . . . S LEXCT=+($G(^TMP("LEXQC",$J,LEXSID,"INA",0)))
 . . . S:'$D(^TMP("LEXQC",$J,LEXSID,"INA",1,(LEXSO_" "))) LEXCT=LEXCT+1
 . . . S ^TMP("LEXQC",$J,LEXSID,"INA",1,(LEXSO_" "))=LEXO
 . . . S ^TMP("LEXQC",$J,LEXSID,"INA",0)=LEXCT,LEXIF=1
 . . S LEXR=+LEXAF+LEXIF
 D:$D(^TMP("LEXQC",$J,"MOD")) UPC("MOD")
 N LEXQUIET
 Q
UPC(X) ; Update Counters
 N LEXSID,LEXACT,LEXORD,LEXCT S LEXSID=$G(X) Q:'$L(LEXSID)
 S LEXACT="" F  S LEXACT=$O(^TMP("LEXQC",$J,LEXSID,LEXACT)) Q:'$L(LEXACT)  D
 . S LEXCT=0,LEXORD="" F  S LEXORD=$O(^TMP("LEXQC",$J,LEXSID,LEXACT,1,LEXORD)) Q:'$L(LEXORD)  S LEXCT=LEXCT+1
 . S ^TMP("LEXQC",$J,LEXSID,LEXACT,0)=LEXCT
 Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HLEXQC4   11127     printed  Sep 23, 2025@19:44:17                                                                                                                                                                                                     Page 2
LEXQC4    ;ISL/KER - Query - Changes - CPT/MOD ;05/23/2017
 +1       ;;2.0;LEXICON UTILITY;**80,103**;Sep 23, 1996;Build 2
 +2       ;               
 +3       ; Global Variables
 +4       ;    ^DIC(81.3,          ICR   4492
 +5       ;    ^ICPT(              ICR   4489
 +6       ;    ^TMP("LEXQC")       SACC 2.3.2.5.1
 +7       ;               
 +8       ; External References
 +9       ;    None
 +10      ;               
 +11      ; Local Variables NEWed in LEXQC
 +12      ;    LEXADT              After Date
 +13      ;    LEXBDT              Before Date
 +14      ;    LEXCDT              Versioning Date
 +15      ;    LEXQLEN             Length of Display
 +16      ;    LEXQSTR             Length of String
 +17      ;    LEXQTOT             Total Records
 +18      ;               
CPT       ; CPT Procedures Changes
 +1        KILL ^TMP("LEXQC",$JOB,"CPT"),^TMP("LEXQC",$JOB,"CPC")
           NEW LEX1,LEX2,LEX3,LEX4
 +2        NEW LEX5,LEX6,LEXAEF,LEXAST,LEXBEF,LEXBST,LEXCEF,LEXCNT,LEXCST,LEXH
 +3        NEW LEXIDT,LEXIEN,LEXLC,LEXND,LEXPEF,LEXPST,LEXQL,LEXSO,LEXSTID
 +4        SET LEXQLEN=+($GET(LEXQLEN))
           SET LEXQTOT=+($GET(LEXQTOT))
 +5        SET LEXQSTR=+($GET(LEXQSTR))
           SET LEXCNT=0
           SET LEXLC=0
 +6        SET LEXIDT=$$IMPDATE^LEXU("CPT")
           SET LEXCDT=$GET(LEXCDT)
 +7        if LEXCDT'?7N
               QUIT 
           if LEXCDT'>LEXIDT
               QUIT 
           SET LEXIEN=0
 +8        FOR 
               SET LEXIEN=$ORDER(^ICPT(LEXIEN))
               if +LEXIEN'>0
                   QUIT 
               Begin DoDot:1
 +9                NEW LEX1,LEX2,LEX3,LEX4,LEX5,LEX6,LEX7,LEX7D,LEX8,LEX8D,LEXAEF
 +10               NEW LEXAST,LEXBEF,LEXBST,LEXCEF,LEXCST,LEXH,LEXND,LEXPEF,LEXPST
 +11               NEW LEXQL,LEXSO,LEXSTID,LEXSID
 +12               SET LEXCNT=LEXCNT+1
                   IF LEXCNT'<+($GET(LEXQSTR))
                       SET LEXLC=+($GET(LEXLC))+1
                       Begin DoDot:2
 +13                       if '$DATA(ZTQUEUED)&('$DATA(LEXQUIET))&(LEXLC'>+($GET(LEXQLEN)))
                               WRITE "."
                           SET LEXCNT=0
                       End DoDot:2
 +14               SET LEXSID="CPT"
                   SET LEXSO=$PIECE($GET(^ICPT(LEXIEN,0)),"^",1)
                   if '$LENGTH(LEXSO)
                       QUIT 
 +15               if $EXTRACT(LEXSO,1)?1U
                       SET LEXSID="CPC"
 +16               SET LEXH=$ORDER(^ICPT(+LEXIEN,60,"B",LEXCDT," "),-1)
 +17               SET LEXND=$GET(^ICPT(+LEXIEN,60,+LEXH,0))
 +18               SET LEXCEF=$PIECE(LEXND,"^",1)
                   SET LEXCST=$PIECE(LEXND,"^",2)
 +19               SET LEXH=$ORDER(^ICPT(+LEXIEN,60,"B",LEXBDT," "),-1)
 +20               SET LEXND=$GET(^ICPT(+LEXIEN,60,+LEXH,0))
 +21               SET LEXBEF=$PIECE(LEXND,"^",1)
                   SET LEXBST=$PIECE(LEXND,"^",2)
 +22               SET LEXH=$ORDER(^ICPT(+LEXIEN,60,"B",LEXADT," "),-1)
 +23               SET LEXND=$GET(^ICPT(+LEXIEN,60,+LEXH,0))
 +24               SET LEXAEF=$PIECE(LEXND,"^",1)
                   SET LEXAST=$PIECE(LEXND,"^",2)
 +25               SET LEXH=$ORDER(^ICPT(+LEXIEN,60,"B",LEXCDT),-1)
 +26               SET LEXH=$ORDER(^ICPT(+LEXIEN,60,"B",+LEXH," "),-1)
 +27               SET LEXND=$GET(^ICPT(+LEXIEN,60,+LEXH,0))
 +28               SET LEXPEF=$PIECE(LEXND,"^",1)
                   SET LEXPST=$PIECE(LEXND,"^",2)
 +29               SET LEX1=$DATA(^ICPT(+LEXIEN,61,"B",LEXCDT))>0
 +30               SET LEX2=$DATA(^ICPT(+LEXIEN,62,"B",LEXCDT))>0
 +31               SET LEX3=$ORDER(^ICPT(+LEXIEN,61,"B",LEXCDT),-1)
 +32               SET LEX4=$ORDER(^ICPT(+LEXIEN,62,"B",LEXCDT),-1)
 +33               SET LEX5=$DATA(^ICPT(+LEXIEN,61,"B",LEXCDT))
 +34               SET LEX6=$DATA(^ICPT(+LEXIEN,62,"B",LEXCDT))
 +35      ; Short IEN Dupe
 +36               SET LEX7=$ORDER(^ICPT(+LEXIEN,61,"B",LEXCDT," "),-1)
                   SET LEX7=$$DUPS^LEXQC5(81,LEXIEN,LEX7)
 +37      ; Long IEN Dupe
 +38               SET LEX8=$ORDER(^ICPT(+LEXIEN,62,"B",LEXCDT," "),-1)
                   SET LEX8=$$DUPL^LEXQC5(81,LEXIEN,LEX8)
 +39      ; Activiation/Inactiviation/Re-Activation
 +40      ;   Has a current status and effective date
 +41      ;   Has a previous status and effective date
 +42      ;   Current status not equal to previosu status
 +43      ;   Has a short description
 +44      ;   Has a long description
 +45      ;   Activation - current status >0
 +46      ;   Inactivatin - current status =0
 +47      ;   Reactivation - current status >0 past status =0
 +48               SET LEXQL=0
                   IF $LENGTH(LEXCST)
                       IF $LENGTH(LEXCEF)
                           Begin DoDot:2
 +49                           if $LENGTH(LEXBEF)&($LENGTH(LEXBST))&(LEXBST'=LEXCST)
                                   QUIT 
 +50                           if $LENGTH(LEXAEF)&($LENGTH(LEXAST))&(LEXAST'=LEXCST)
                                   QUIT 
 +51                           if (LEX1>0&(LEX3?7N))!(LEX2>0&(LEX4?7N))
                                   QUIT 
                               if '$LENGTH($GET(LEXSO))
                                   QUIT 
 +52                           NEW LEXCT,LEXO,LEXSTID
                               SET LEXSTID=$SELECT(+LEXCST>0:"ACT",1:"INA")
 +53                           IF LEXSTID="ACT"
                                   IF $GET(LEXPEF)?7N
                                       IF +($GET(LEXPST))'>0
                                           Begin DoDot:3
 +54                                           IF +($GET(LEX5))'>0
                                                   IF +($GET(LEX6))'>0
                                                       SET LEXSTID="REA"
                                           End DoDot:3
 +55                           SET LEXQL=1
 +56                           SET LEXO=LEXIEN_"^"_LEXSO_"^"_LEXCDT
 +57                           SET LEXCT=+($GET(^TMP("LEXQC",$JOB,LEXSID,LEXSTID,0)))
 +58                           if '$DATA(^TMP("LEXQC",$JOB,LEXSID,LEXSTID,1,(LEXSO_" ")))
                                   SET LEXCT=LEXCT+1
 +59                           SET ^TMP("LEXQC",$JOB,LEXSID,LEXSTID,1,(LEXSO_" "))=LEXO
 +60                           SET ^TMP("LEXQC",$JOB,LEXSID,LEXSTID,0)=LEXCT
                           End DoDot:2
                           if LEXQL
                               QUIT 
 +61      ; Revision
 +62      ;   I Previous status (LEXPST) >0 and
 +63      ;     Short exist (LEX1) with a previous short (LEX3) and not a duplicate (LEX7) or
 +64      ;     long exist (LEX2) with a previosu long (LEX4) and not a duplicate (LEX8)
 +65               SET LEXQL=0
                   IF +LEXPST>0
                       IF ((LEX1>0&(LEX3?7N)&(LEX7'>0))!(LEX2>0&(LEX4?7N)&(LEX8'>0)))
                           Begin DoDot:2
 +66                           NEW LEXCT,LEXO
                               if '$LENGTH($GET(LEXSO))
                                   QUIT 
 +67                           SET LEXQL=1
                               SET LEXO=LEXIEN_"^"_LEXSO_"^"_LEXCDT
 +68                           SET LEXCT=+($GET(^TMP("LEXQC",$JOB,LEXSID,"REV",0)))
 +69                           if '$DATA(^TMP("LEXQC",$JOB,LEXSID,"REV",1,(LEXSO_" ")))
                                   SET LEXCT=LEXCT+1
 +70                           SET ^TMP("LEXQC",$JOB,LEXSID,"REV",1,(LEXSO_" "))=LEXO
 +71                           SET ^TMP("LEXQC",$JOB,LEXSID,"REV",0)=LEXCT
                           End DoDot:2
                           if LEXQL
                               QUIT 
 +72      ; Re-Use
 +73      ;   Current status (LEXCST) exist and active
 +74      ;   Previous Status (LEXPST) exist and is active
 +75      ;     Short exist (LEX1) with a previous short (LEX3) and not a duplicate (LEX7) or
 +76      ;     long exist (LEX2) with a previosu long (LEX4) and not a duplicate (LEX8)
 +77               SET LEXQL=0
                   IF ((LEXCEF?7N&(LEXCST>0))!(LEXPEF?7N&(LEXPST>0)))
                       IF ((LEX1>0&(LEX3?7N)&(LEX7'>0))!(LEX2>0&(LEX4?7N)&(LEX8'>0)))
                           Begin DoDot:2
 +78                           NEW LEXCT,LEXO
                               SET LEXQL=1
 +79                           SET LEXO=LEXIEN_"^"_LEXSO_"^"_LEXCDT
 +80                           SET LEXCT=+($GET(^TMP("LEXQC",$JOB,LEXSID,"REU",0)))
 +81                           if '$DATA(^TMP("LEXQC",$JOB,LEXSID,"REU",1,(LEXSO_" ")))
                                   SET LEXCT=LEXCT+1
 +82                           SET ^TMP("LEXQC",$JOB,LEXSID,"REU",1,(LEXSO_" "))=LEXO
 +83                           SET ^TMP("LEXQC",$JOB,LEXSID,"REU",0)=LEXCT
                           End DoDot:2
               End DoDot:1
 +84       if $DATA(^TMP("LEXQC",$JOB,"CPT"))
               DO UPC("CPT")
 +85       if $DATA(^TMP("LEXQC",$JOB,"CPC"))
               DO UPC("CPC")
 +86       NEW LEXQUIET
 +87       QUIT 
MOD       ; CPT Modifier Changes
 +1        KILL ^TMP("LEXQC",$JOB,"MOD")
           NEW LEX1,LEX2,LEX3,LEX4,LEX5,LEX6,LEXAEF
 +2        NEW LEXAST,LEXBEF,LEXBST,LEXCEF,LEXCNT,LEXCST,LEXH,LEXIDT,LEXIEN
 +3        NEW LEXLC,LEXND,LEXPEF,LEXPST,LEXQL,LEXSO,LEXSTID
 +4        SET LEXQLEN=+($GET(LEXQLEN))
           SET LEXQTOT=+($GET(LEXQTOT))
 +5        SET LEXQSTR=+($GET(LEXQSTR))
           SET LEXCNT=0
           SET LEXLC=0
 +6        SET LEXIDT=$$IMPDATE^LEXU("CPT")
           SET LEXCDT=$GET(LEXCDT)
 +7        if LEXCDT'?7N
               QUIT 
           if LEXCDT'>LEXIDT
               QUIT 
           SET LEXIEN=0
 +8        FOR 
               SET LEXIEN=$ORDER(^DIC(81.3,LEXIEN))
               if +LEXIEN'>0
                   QUIT 
               Begin DoDot:1
 +9                if $ORDER(^DIC(81.3,+LEXIEN,60,0))'>0
                       QUIT 
                   NEW LEX1,LEX2,LEX3,LEX4,LEX5
 +10               NEW LEX6,LEX7,LEX8,LEXAEF,LEXAF,LEXAST,LEXACT,LEXBEF,LEXBST,LEXCEF
 +11               NEW LEXCST,LEXH,LEXIF,LEXINA,LEXND,LEXPEF,LEXPST,LEXQL,LEXR,LEXRI
 +12               NEW LEXSO,LEXSTID,LEXSID
                   SET LEXCNT=LEXCNT+1
 +13               IF LEXCNT'<+($GET(LEXQSTR))
                       SET LEXLC=+($GET(LEXLC))+1
                       Begin DoDot:2
 +14                       if '$DATA(ZTQUEUED)&('$DATA(LEXQUIET))&(LEXLC'>+($GET(LEXQLEN)))
                               WRITE "."
                           SET LEXCNT=0
                       End DoDot:2
 +15               SET LEXSID="MOD"
                   SET LEXSO=$PIECE($GET(^DIC(81.3,LEXIEN,0)),"^",1)
 +16               if '$LENGTH(LEXSO)
                       QUIT 
                   SET LEXH=$ORDER(^DIC(81.3,+LEXIEN,60,"B",LEXCDT," "),-1)
 +17               SET LEXND=$GET(^DIC(81.3,+LEXIEN,60,+LEXH,0))
 +18               SET LEXCEF=$PIECE(LEXND,"^",1)
                   SET LEXCST=$PIECE(LEXND,"^",2)
 +19               SET LEXH=$ORDER(^DIC(81.3,+LEXIEN,60,"B",LEXBDT," "),-1)
 +20               SET LEXND=$GET(^DIC(81.3,+LEXIEN,60,+LEXH,0))
 +21               SET LEXBEF=$PIECE(LEXND,"^",1)
                   SET LEXBST=$PIECE(LEXND,"^",2)
 +22               SET LEXH=$ORDER(^DIC(81.3,+LEXIEN,60,"B",LEXADT," "),-1)
 +23               SET LEXND=$GET(^DIC(81.3,+LEXIEN,60,+LEXH,0))
 +24               SET LEXAEF=$PIECE(LEXND,"^",1)
                   SET LEXAST=$PIECE(LEXND,"^",2)
 +25               SET LEXH=$ORDER(^DIC(81.3,+LEXIEN,60,"B",LEXCDT),-1)
 +26               SET LEXH=$ORDER(^DIC(81.3,+LEXIEN,60,"B",+LEXH," "),-1)
 +27               SET LEXND=$GET(^DIC(81.3,+LEXIEN,60,+LEXH,0))
 +28               SET LEXPEF=$PIECE(LEXND,"^",1)
                   SET LEXPST=$PIECE(LEXND,"^",2)
 +29               SET LEX1=$DATA(^DIC(81.3,+LEXIEN,61,"B",LEXCDT))>0
 +30               SET LEX2=$DATA(^DIC(81.3,+LEXIEN,62,"B",LEXCDT))>0
 +31               SET LEX3=$ORDER(^DIC(81.3,+LEXIEN,61,"B",LEXCDT),-1)
 +32               SET LEX4=$ORDER(^DIC(81.3,+LEXIEN,62,"B",LEXCDT),-1)
 +33               SET LEX5=$DATA(^DIC(81.3,+LEXIEN,61,"B",LEXCDT))
 +34               SET LEX6=$DATA(^DIC(81.3,+LEXIEN,62,"B",LEXCDT))
 +35      ; Short IEN Dupe
 +36               SET LEX7=$ORDER(^DIC(81.3,+LEXIEN,61,"B",LEXCDT," "),-1)
                   SET LEX7=$$DUPS^LEXQC5(81.3,LEXIEN,LEX7)
 +37      ; Long IEN Dupe
 +38               SET LEX8=$ORDER(^DIC(81.3,+LEXIEN,62,"B",LEXCDT," "),-1)
                   SET LEX8=$$DUPL^LEXQC5(81.3,LEXIEN,LEX8)
 +39      ; Activiation/Inactiviation/Re-Activation
 +40      ;   Has a current status and effective date
 +41      ;   Has a previous status and effective date
 +42      ;   Current status not equal to previosu status
 +43      ;   Has a short description
 +44      ;   Has a long description
 +45      ;   Activation - current status >0
 +46      ;   Inactivatin - current status =0
 +47      ;   Reactivation - current status >0 past status =0
 +48               SET LEXQL=0
                   IF $LENGTH(LEXCST)
                       IF $LENGTH(LEXCEF)
                           Begin DoDot:2
 +49                           if $LENGTH(LEXBEF)&($LENGTH(LEXBST))&(LEXBST'=LEXCST)
                                   QUIT 
 +50                           if $LENGTH(LEXAEF)&($LENGTH(LEXAST))&(LEXAST'=LEXCST)
                                   QUIT 
 +51                           if (LEX1>0&(LEX3?7N))!(LEX2>0&(LEX4?7N))
                                   QUIT 
 +52                           NEW LEXSTID
                               if '$LENGTH($GET(LEXSO))
                                   QUIT 
 +53                           NEW LEXCT,LEXO
                               SET LEXSTID=$SELECT(+LEXCST>0:"ACT",1:"INA")
 +54                           IF LEXSTID="ACT"
                                   IF $GET(LEXPEF)?7N
                                       IF +($GET(LEXPST))'>0
                                           Begin DoDot:3
 +55                                           IF +($GET(LEX5))'>0
                                                   IF +($GET(LEX6))'>0
                                                       SET LEXSTID="REA"
                                           End DoDot:3
 +56                           SET LEXQL=1
                               SET LEXO=LEXIEN_"^"_LEXSO_"^"_LEXCDT
 +57                           SET LEXCT=+($GET(^TMP("LEXQC",$JOB,LEXSID,LEXSTID,0)))
 +58                           if '$DATA(^TMP("LEXQC",$JOB,LEXSID,LEXSTID,1,(LEXSO_" ")))
                                   SET LEXCT=LEXCT+1
 +59                           SET ^TMP("LEXQC",$JOB,LEXSID,LEXSTID,1,(LEXSO_" "))=LEXO
 +60                           SET ^TMP("LEXQC",$JOB,LEXSID,LEXSTID,0)=LEXCT
                           End DoDot:2
 +61      ; Revision
 +62      ;   I Previous status (LEXPST) >0 and
 +63      ;     Short exist (LEX1) with a previous short (LEX3) and not a duplicate (LEX7) or
 +64      ;     Long exist (LEX2) with a previosu long (LEX4) and not a duplicate (LEX8)
 +65               IF 'LEXQL
                       IF +LEXPST>0
                           IF ((LEX1>0&(LEX3?7N)&(LEX7'>0))!(LEX2>0&(LEX4?7N)&(LEX8'>0)))
                               Begin DoDot:2
 +66                               NEW LEXCT,LEXO
                                   if '$LENGTH($GET(LEXSO))
                                       QUIT 
                                   SET LEXQL=1
 +67                               SET LEXO=LEXIEN_"^"_LEXSO_"^"_LEXCDT
 +68                               SET LEXCT=+($GET(^TMP("LEXQC",$JOB,LEXSID,"REV",0)))
 +69                               if '$DATA(^TMP("LEXQC",$JOB,LEXSID,"REV",1,(LEXSO_" ")))
                                       SET LEXCT=LEXCT+1
 +70                               SET ^TMP("LEXQC",$JOB,LEXSID,"REV",1,(LEXSO_" "))=LEXO
 +71                               SET ^TMP("LEXQC",$JOB,LEXSID,"REV",0)=LEXCT
                               End DoDot:2
                               if LEXQL
                                   QUIT 
 +72      ; Re-Used
 +73      ;   Current status (LEXCST) exist and active
 +74      ;   Previous Status (LEXPST) exist and is active
 +75      ;     Short exist (LEX1) with a previous short (LEX3) and not a duplicate (LEX7) or
 +76      ;     Long exist (LEX2) with a previosu long (LEX4) and not a duplicate (LEX8)
 +77               IF 'LEXQL
                       SET LEXQL=0
                       IF ((LEXCEF?7N&(LEXCST>0))!(LEXPEF?7N&(LEXPST>0)))
                           IF ((LEX1>0&(LEX3?7N)&(LEX7'>0))!(LEX2>0&(LEX4?7N)&(LEX8'>0)))
                               Begin DoDot:2
 +78                               NEW LEXCT,LEXO
                                   SET LEXQL=1
 +79                               SET LEXO=LEXIEN_"^"_LEXSO_"^"_LEXCDT
 +80                               SET LEXCT=+($GET(^TMP("LEXQC",$JOB,LEXSID,"REU",0)))
 +81                               if '$DATA(^TMP("LEXQC",$JOB,LEXSID,"REU",1,(LEXSO_" ")))
                                       SET LEXCT=LEXCT+1
 +82                               SET ^TMP("LEXQC",$JOB,LEXSID,"REU",1,(LEXSO_" "))=LEXO
 +83                               SET ^TMP("LEXQC",$JOB,LEXSID,"REU",0)=LEXCT
                               End DoDot:2
 +84               SET (LEXAF,LEXIF,LEXRI)=0
                   SET LEXSID="RAN"
                   SET LEXR=0
 +85               FOR 
                       SET LEXRI=$ORDER(^DIC(81.3,+LEXIEN,10,LEXRI))
                       if +LEXRI'>0
                           QUIT 
                       Begin DoDot:2
 +86                       SET LEXND=$GET(^DIC(81.3,+LEXIEN,10,LEXRI,0))
 +87                       SET LEXACT=$PIECE(LEXND,"^",3)
                           SET LEXINA=$PIECE(LEXND,"^",4)
 +88                       IF LEXACT=LEXCDT
                               IF '$LENGTH(LEXINA)
                                   Begin DoDot:3
 +89                                   NEW LEXCT,LEXO
                                       if $DATA(^TMP("LEXQC",$JOB,LEXSID,"ACT",1,(LEXSO_" ")))
                                           QUIT 
 +90                                   SET LEXO=LEXIEN_"^"_LEXSO_"^"_LEXCDT
 +91                                   SET LEXCT=+($GET(^TMP("LEXQC",$JOB,LEXSID,"ACT",0)))
 +92                                   if '$DATA(^TMP("LEXQC",$JOB,LEXSID,"ACT",1,(LEXSO_" ")))
                                           SET LEXCT=LEXCT+1
 +93                                   SET ^TMP("LEXQC",$JOB,LEXSID,"ACT",1,(LEXSO_" "))=LEXO
 +94                                   SET ^TMP("LEXQC",$JOB,LEXSID,"ACT",0)=LEXCT
                                       SET LEXAF=1
                                   End DoDot:3
 +95                       IF LEXINA=LEXCDT
                               IF $LENGTH(LEXACT)
                                   IF LEXINA>LEXACT
                                       IF (LEXINA-LEXACT)>1
                                           Begin DoDot:3
 +96                                           NEW LEXCT,LEXO
                                               if $DATA(^TMP("LEXQC",$JOB,LEXSID,"INA",1,(LEXSO_" ")))
                                                   QUIT 
 +97                                           SET LEXO=LEXIEN_"^"_LEXSO_"^"_LEXCDT
 +98                                           SET LEXCT=+($GET(^TMP("LEXQC",$JOB,LEXSID,"INA",0)))
 +99                                           if '$DATA(^TMP("LEXQC",$JOB,LEXSID,"INA",1,(LEXSO_" ")))
                                                   SET LEXCT=LEXCT+1
 +100                                          SET ^TMP("LEXQC",$JOB,LEXSID,"INA",1,(LEXSO_" "))=LEXO
 +101                                          SET ^TMP("LEXQC",$JOB,LEXSID,"INA",0)=LEXCT
                                               SET LEXIF=1
                                           End DoDot:3
 +102                      SET LEXR=+LEXAF+LEXIF
                       End DoDot:2
                       if LEXR>1
                           QUIT 
               End DoDot:1
 +103      if $DATA(^TMP("LEXQC",$JOB,"MOD"))
               DO UPC("MOD")
 +104      NEW LEXQUIET
 +105      QUIT 
UPC(X)    ; Update Counters
 +1        NEW LEXSID,LEXACT,LEXORD,LEXCT
           SET LEXSID=$GET(X)
           if '$LENGTH(LEXSID)
               QUIT 
 +2        SET LEXACT=""
           FOR 
               SET LEXACT=$ORDER(^TMP("LEXQC",$JOB,LEXSID,LEXACT))
               if '$LENGTH(LEXACT)
                   QUIT 
               Begin DoDot:1
 +3                SET LEXCT=0
                   SET LEXORD=""
                   FOR 
                       SET LEXORD=$ORDER(^TMP("LEXQC",$JOB,LEXSID,LEXACT,1,LEXORD))
                       if '$LENGTH(LEXORD)
                           QUIT 
                       SET LEXCT=LEXCT+1
 +4                SET ^TMP("LEXQC",$JOB,LEXSID,LEXACT,0)=LEXCT
               End DoDot:1
 +5        QUIT