LEXQC ;ISL/KER - Query - Changes - Extract ;05/23/2017
;;2.0;LEXICON UTILITY;**62,80,103**;Sep 23, 1996;Build 2
;
; Global Variables
; ^TMP("LEXQC") SACC 2.3.2.5.1
; ^TMP("LEXQCO") SACC 2.3.2.5.1
;
; External References
; HOME^%ZIS ICR 10086
; ^%ZTLOAD ICR 10063
; $$GET1^DIQ ICR 2056
; ^DIR ICR 10026
; $$FMADD^XLFDT ICR 10103
; $$FMTE^XLFDT ICR 10103
; ^XMD ICR 10070
;
EN ; Main Entry Point
N LEXENV S LEXENV=$$EV^LEXQM Q:+LEXENV'>0
W:$L($G(IOF)) @IOF W !," ICD/CPT Change List",!," ==================="
K ^TMP("LEXQCO",$J),^TMP("LEXQC",$J) N LEXEXIT,LEXDSP,LEXOUT
S LEXDSP=$$DT I "^D^B^"'[("^"_LEXDSP_"^") W !!," Display type not selected",! Q
S LEXOUT=$$OUT I "^0^1^"'[("^"_LEXOUT_"^") W !!," Output not selected",! Q
I LEXDSP="B" D Q
. N LEXTASK S:LEXOUT=1 LEXTASK=1 K:LEXOUT'=1 LEXTASK D EN^LEXQC6
I LEXDSP="D" D Q
. N LEXTASK S:LEXOUT=1 LEXTASK=1 K:LEXOUT'=1 LEXTASK D TASK
Q
SUM ; Summary List (totals only)
N LEXOUT S LEXOUT=$$OUT D:LEXOUT="0" EN^LEXQC6 D:LEXOUT="1" MAIL^LEXQC6
Q
TASK ; Task Search for CSV Changes
W !!," Detailed Display (includes codes)"
N X,Y,ZTSK,ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE,ZTQUEUED,ZTREQ,LEXCDT,LEXEDT,LEXEXIT
S LEXCDT=$$CSD^LEXQM
I +($G(LEXEXIT))>0 W !!," Code Set Change List aborted",! Q
S LEXEDT=$P(LEXCDT,"^",1),LEXCDT=$P(LEXCDT,"^",2)
I '$L(LEXCDT)!(LEXCDT'?7N) W !!," Code Set Date invalid or not selected",! Q
I $$CDTOK(LEXCDT)'>0 W !!," No Code Set changes found for ",$$FMTE^XLFDT(LEXCDT),! Q
S LEXCDT=+($G(LEXCDT)) Q:LEXCDT'?7N S LEXEDT=$G(LEXEDT) Q:'$L(LEXEDT)
S ZTRTN="SEARCH^LEXQC",ZTSAVE("LEXCDT")="",ZTIO="",ZTDTH=$H
S ZTDESC="Search for CSV Changes on "_LEXEDT
D:'$D(LEXTASK) @ZTRTN D:$D(LEXTASK) ^%ZTLOAD D HOME^%ZIS S X=+($G(ZTSK))
I +X>0 D
. W !!," A search for CSV changes on ",LEXEDT," has been queued"
. W !," (task ",+X,"). Results will be sent to you in a MailMan"
. W !," message.",!
K Y,ZTSK,ZTDESC,ZTDTH,ZTIO,ZTRTN,LEXQUIET,LEXTASK
Q
SEARCH ; Search for CSV changes
S:$D(ZTQUEUED) ZTREQ="@" S LEXCDT=$G(LEXCDT) Q:LEXCDT'?7N
N LEXBDT,LEXADT,LEXRT,LEXQTOT,LEXQLEN,LEXQSTR,LEXIIMP,LEXCIMP
S LEXBDT=$$FMADD^XLFDT(LEXCDT,-1),LEXADT=$$FMADD^XLFDT(DT,+1)
Q:LEXBDT'?7N Q:LEXADT'?7N K ^TMP("LEXQC",$J)
S LEXIIMP=$$IMPDATE^LEXU("10D"),LEXCIMP=$$IMPDATE^LEXU("CPT"),LEXQTOT=0
I LEXCDT<LEXIIMP S LEXQTOT=LEXQTOT+($P($G(^LEX(757.03,1,0)),"^",6))+($P($G(^LEX(757.03,2,0)),"^",6))
I LEXCDT>(LEXIIMP-.0001) S LEXQTOT=LEXQTOT+($P($G(^LEX(757.03,30,0)),"^",6))+($P($G(^LEX(757.03,31,0)),"^",6))
I LEXCDT>(LEXCIMP-.0001) S LEXQTOT=LEXQTOT+($P($G(^LEX(757.03,3,0)),"^",6))+($P($G(^LEX(757.03,4,0)),"^",6))
S:+($G(LEXQTOT))'>0 LEXQTOT=193006
S LEXQLEN=68,LEXQSTR=+(LEXQTOT\LEXQLEN) S:LEXQSTR=0 LEXQSTR=1
W:'$D(ZTQUEUED) !!," Gathering data, please wait.",!," "
D:LEXCDT<LEXIIMP D09^LEXQC3,P09^LEXQC3
D:LEXCDT>(LEXIIMP-.0001) D10^LEXQC3,P10^LEXQC3
D:LEXCDT>(LEXCIMP-.0001) CPT^LEXQC4,MOD^LEXQC4 D EN^LEXQC2
D:'$D(ZTQUEUED)&($D(^TMP("LEXQCO",$J))) DSP^LEXQO("LEXQCO")
D:$D(ZTQUEUED)&($D(^TMP("LEXQCO",$J))) MM
Q
;
; Miscellaneous
DT(X) ; Display Type
Q:+($G(LEXEXIT))>0 "^^" N DIR,DIRUT,DIROUT,DTOUT,DUOUT,Y,DIRB S DIRB=$$RET^LEXQD("LEXQC","DT",+($G(DUZ)),"Display Type")
S:'$L(DIRB) DIRB="Detailed"
S DIR(0)="SAO^D:Detailed Listing;B:Brief Listing",DIR("A")=" Detailed or Brief Listing? (D/B) "
S:"^DETAILED^BRIEF^Detailed^Brief^"[("^"_DIRB_"^") DIR("B")=DIRB
S DIR("PRE")="S:X[""?"" X=""??""" S (DIR("?"),DIR("??"))="^D DTH^LEXQC"
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="D":"Detailed",Y="B":"Brief",X["^":"",1:"")
D:$L(DIRB) SAV^LEXQD("LEXQC","DT",+($G(DUZ)),"Display Type",$G(DIRB))
S X=$S("^D^B^"[("^"_Y_"^"):Y,1:"^")
Q X
DTH ; Display Type Help
W !,?3,"Listing of Code Set changes for a specified date",!
W !,?3," Enter For To"
W !,?3," D Detailed Listing Includes codes"
W !,?3," B Brief Listing Include totals only"
Q
OUT(X) ; Output
Q:+($G(LEXEXIT))>0 "^^" N DIR,DIRUT,DIROUT,DTOUT,DUOUT,Y,DIRB S DIRB=$$RET^LEXQD("LEXQC","OUT",+($G(DUZ)),"Output")
S:'$L(DIRB) DIRB="No"
S DIR(0)="YAO",DIR("A")=" Save Listing in a MailMan Message? (Y/N) "
S:"^YES^NO^Yes^No^"[("^"_DIRB_"^") DIR("B")=DIRB
S DIR("PRE")="S:X[""?"" X=""??""" S (DIR("?"),DIR("??"))="^D OUTH^LEXQC"
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",1:"^")
D:$L(DIRB) SAV^LEXQD("LEXQC","OUT",+($G(DUZ)),"Output",$G(DIRB))
S X=$S("^0^1^"[("^"_Y_"^"):Y,1:"^")
Q X
OUTH ; Output
W !,?3,"Enter 'Yes' to send the output listing in a MailMan message."
W !,?3,"Enter 'No' to display the output listing to the screen."
Q
MM ; MailMan Message
G:'$D(^TMP("LEXQCO",$J)) MMQ N XCNP,XMSCR,XMDUZ,XMY,XMZ,XMSUB,XMTEXT,XMDUZ,LEXJ,LEXNM
S XMTEXT="^TMP(""LEXQCO"","_$J_",",XMSUB="CSV ICD/CPT Changes",LEXNM=$$GET1^DIQ(200,+($G(DUZ)),.01) G:'$L(LEXNM) MMQ
S XMY(LEXNM)="",XMDUZ=.5 D ^XMD
MMQ ; MailMan Quit
K ^TMP("LEXQCO",$J),LEXNM,LEXSUB
Q
CDTOK(X) ; Code Set Date is OK
N LEXCDT,LEXOK,LEXSAB,LEXI S LEXOK=0,LEXCDT=$G(X) Q:LEXCDT'?7N LEXOK
F LEXSAB="ICD","ICP","10D","10P","CPT","CPC" D Q:LEXOK>0
. S:$D(^LEX(757.02,"AUPD",LEXSAB,LEXCDT)) LEXOK=1
I LEXOK'>0 S LEXI=0 F S LEXI=$O(@("^DIC(81.3,"_LEXI_")")) Q:+LEXI'>0 D Q:LEXOK>0
. S:$D(@("^DIC(81.3,"_LEXI_",60,""B"","_LEXCDT_")")) LEXOK=1
. S:$D(@("^DIC(81.3,"_LEXI_",61,""B"","_LEXCDT_")")) LEXOK=1
. S:$D(@("^DIC(81.3,"_LEXI_",62,""B"","_LEXCDT_")")) LEXOK=1
S X=LEXOK
Q X
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HLEXQC 5911 printed Dec 13, 2024@02:08:22 Page 2
LEXQC ;ISL/KER - Query - Changes - Extract ;05/23/2017
+1 ;;2.0;LEXICON UTILITY;**62,80,103**;Sep 23, 1996;Build 2
+2 ;
+3 ; Global Variables
+4 ; ^TMP("LEXQC") SACC 2.3.2.5.1
+5 ; ^TMP("LEXQCO") SACC 2.3.2.5.1
+6 ;
+7 ; External References
+8 ; HOME^%ZIS ICR 10086
+9 ; ^%ZTLOAD ICR 10063
+10 ; $$GET1^DIQ ICR 2056
+11 ; ^DIR ICR 10026
+12 ; $$FMADD^XLFDT ICR 10103
+13 ; $$FMTE^XLFDT ICR 10103
+14 ; ^XMD ICR 10070
+15 ;
EN ; Main Entry Point
+1 NEW LEXENV
SET LEXENV=$$EV^LEXQM
if +LEXENV'>0
QUIT
+2 if $LENGTH($GET(IOF))
WRITE @IOF
WRITE !," ICD/CPT Change List",!," ==================="
+3 KILL ^TMP("LEXQCO",$JOB),^TMP("LEXQC",$JOB)
NEW LEXEXIT,LEXDSP,LEXOUT
+4 SET LEXDSP=$$DT
IF "^D^B^"'[("^"_LEXDSP_"^")
WRITE !!," Display type not selected",!
QUIT
+5 SET LEXOUT=$$OUT
IF "^0^1^"'[("^"_LEXOUT_"^")
WRITE !!," Output not selected",!
QUIT
+6 IF LEXDSP="B"
Begin DoDot:1
+7 NEW LEXTASK
if LEXOUT=1
SET LEXTASK=1
if LEXOUT'=1
KILL LEXTASK
DO EN^LEXQC6
End DoDot:1
QUIT
+8 IF LEXDSP="D"
Begin DoDot:1
+9 NEW LEXTASK
if LEXOUT=1
SET LEXTASK=1
if LEXOUT'=1
KILL LEXTASK
DO TASK
End DoDot:1
QUIT
+10 QUIT
SUM ; Summary List (totals only)
+1 NEW LEXOUT
SET LEXOUT=$$OUT
if LEXOUT="0"
DO EN^LEXQC6
if LEXOUT="1"
DO MAIL^LEXQC6
+2 QUIT
TASK ; Task Search for CSV Changes
+1 WRITE !!," Detailed Display (includes codes)"
+2 NEW X,Y,ZTSK,ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE,ZTQUEUED,ZTREQ,LEXCDT,LEXEDT,LEXEXIT
+3 SET LEXCDT=$$CSD^LEXQM
+4 IF +($GET(LEXEXIT))>0
WRITE !!," Code Set Change List aborted",!
QUIT
+5 SET LEXEDT=$PIECE(LEXCDT,"^",1)
SET LEXCDT=$PIECE(LEXCDT,"^",2)
+6 IF '$LENGTH(LEXCDT)!(LEXCDT'?7N)
WRITE !!," Code Set Date invalid or not selected",!
QUIT
+7 IF $$CDTOK(LEXCDT)'>0
WRITE !!," No Code Set changes found for ",$$FMTE^XLFDT(LEXCDT),!
QUIT
+8 SET LEXCDT=+($GET(LEXCDT))
if LEXCDT'?7N
QUIT
SET LEXEDT=$GET(LEXEDT)
if '$LENGTH(LEXEDT)
QUIT
+9 SET ZTRTN="SEARCH^LEXQC"
SET ZTSAVE("LEXCDT")=""
SET ZTIO=""
SET ZTDTH=$HOROLOG
+10 SET ZTDESC="Search for CSV Changes on "_LEXEDT
+11 if '$DATA(LEXTASK)
DO @ZTRTN
if $DATA(LEXTASK)
DO ^%ZTLOAD
DO HOME^%ZIS
SET X=+($GET(ZTSK))
+12 IF +X>0
Begin DoDot:1
+13 WRITE !!," A search for CSV changes on ",LEXEDT," has been queued"
+14 WRITE !," (task ",+X,"). Results will be sent to you in a MailMan"
+15 WRITE !," message.",!
End DoDot:1
+16 KILL Y,ZTSK,ZTDESC,ZTDTH,ZTIO,ZTRTN,LEXQUIET,LEXTASK
+17 QUIT
SEARCH ; Search for CSV changes
+1 if $DATA(ZTQUEUED)
SET ZTREQ="@"
SET LEXCDT=$GET(LEXCDT)
if LEXCDT'?7N
QUIT
+2 NEW LEXBDT,LEXADT,LEXRT,LEXQTOT,LEXQLEN,LEXQSTR,LEXIIMP,LEXCIMP
+3 SET LEXBDT=$$FMADD^XLFDT(LEXCDT,-1)
SET LEXADT=$$FMADD^XLFDT(DT,+1)
+4 if LEXBDT'?7N
QUIT
if LEXADT'?7N
QUIT
KILL ^TMP("LEXQC",$JOB)
+5 SET LEXIIMP=$$IMPDATE^LEXU("10D")
SET LEXCIMP=$$IMPDATE^LEXU("CPT")
SET LEXQTOT=0
+6 IF LEXCDT<LEXIIMP
SET LEXQTOT=LEXQTOT+($PIECE($GET(^LEX(757.03,1,0)),"^",6))+($PIECE($GET(^LEX(757.03,2,0)),"^",6))
+7 IF LEXCDT>(LEXIIMP-.0001)
SET LEXQTOT=LEXQTOT+($PIECE($GET(^LEX(757.03,30,0)),"^",6))+($PIECE($GET(^LEX(757.03,31,0)),"^",6))
+8 IF LEXCDT>(LEXCIMP-.0001)
SET LEXQTOT=LEXQTOT+($PIECE($GET(^LEX(757.03,3,0)),"^",6))+($PIECE($GET(^LEX(757.03,4,0)),"^",6))
+9 if +($GET(LEXQTOT))'>0
SET LEXQTOT=193006
+10 SET LEXQLEN=68
SET LEXQSTR=+(LEXQTOT\LEXQLEN)
if LEXQSTR=0
SET LEXQSTR=1
+11 if '$DATA(ZTQUEUED)
WRITE !!," Gathering data, please wait.",!," "
+12 if LEXCDT<LEXIIMP
DO D09^LEXQC3
DO P09^LEXQC3
+13 if LEXCDT>(LEXIIMP-.0001)
DO D10^LEXQC3
DO P10^LEXQC3
+14 if LEXCDT>(LEXCIMP-.0001)
DO CPT^LEXQC4
DO MOD^LEXQC4
DO EN^LEXQC2
+15 if '$DATA(ZTQUEUED)&($DATA(^TMP("LEXQCO",$JOB)))
DO DSP^LEXQO("LEXQCO")
+16 if $DATA(ZTQUEUED)&($DATA(^TMP("LEXQCO",$JOB)))
DO MM
+17 QUIT
+18 ;
+19 ; Miscellaneous
DT(X) ; Display Type
+1 if +($GET(LEXEXIT))>0
QUIT "^^"
NEW DIR,DIRUT,DIROUT,DTOUT,DUOUT,Y,DIRB
SET DIRB=$$RET^LEXQD("LEXQC","DT",+($GET(DUZ)),"Display Type")
+2 if '$LENGTH(DIRB)
SET DIRB="Detailed"
+3 SET DIR(0)="SAO^D:Detailed Listing;B:Brief Listing"
SET DIR("A")=" Detailed or Brief Listing? (D/B) "
+4 if "^DETAILED^BRIEF^Detailed^Brief^"[("^"_DIRB_"^")
SET DIR("B")=DIRB
+5 SET DIR("PRE")="S:X[""?"" X=""??"""
SET (DIR("?"),DIR("??"))="^D DTH^LEXQC"
+6 WRITE !
DO ^DIR
if X["^^"!($DATA(DTOUT))
SET LEXEXIT=1
if X["^^"!(+($GET(LEXEXIT))>0)
QUIT "^^"
if $DATA(DIRUT)!($DATA(DIROUT))!($DATA(DTOUT))!($DATA(DUOUT))
QUIT "^"
+7 SET DIRB=$SELECT(Y="D":"Detailed",Y="B":"Brief",X["^":"",1:"")
+8 if $LENGTH(DIRB)
DO SAV^LEXQD("LEXQC","DT",+($GET(DUZ)),"Display Type",$GET(DIRB))
+9 SET X=$SELECT("^D^B^"[("^"_Y_"^"):Y,1:"^")
+10 QUIT X
DTH ; Display Type Help
+1 WRITE !,?3,"Listing of Code Set changes for a specified date",!
+2 WRITE !,?3," Enter For To"
+3 WRITE !,?3," D Detailed Listing Includes codes"
+4 WRITE !,?3," B Brief Listing Include totals only"
+5 QUIT
OUT(X) ; Output
+1 if +($GET(LEXEXIT))>0
QUIT "^^"
NEW DIR,DIRUT,DIROUT,DTOUT,DUOUT,Y,DIRB
SET DIRB=$$RET^LEXQD("LEXQC","OUT",+($GET(DUZ)),"Output")
+2 if '$LENGTH(DIRB)
SET DIRB="No"
+3 SET DIR(0)="YAO"
SET DIR("A")=" Save Listing in a MailMan Message? (Y/N) "
+4 if "^YES^NO^Yes^No^"[("^"_DIRB_"^")
SET DIR("B")=DIRB
+5 SET DIR("PRE")="S:X[""?"" X=""??"""
SET (DIR("?"),DIR("??"))="^D OUTH^LEXQC"
+6 WRITE !
DO ^DIR
if X["^^"!($DATA(DTOUT))
SET LEXEXIT=1
if X["^^"!(+($GET(LEXEXIT))>0)
QUIT "^^"
if $DATA(DIRUT)!($DATA(DIROUT))!($DATA(DTOUT))!($DATA(DUOUT))
QUIT "^"
+7 SET DIRB=$SELECT(Y="1":"Yes",Y="0":"No",1:"^")
+8 if $LENGTH(DIRB)
DO SAV^LEXQD("LEXQC","OUT",+($GET(DUZ)),"Output",$GET(DIRB))
+9 SET X=$SELECT("^0^1^"[("^"_Y_"^"):Y,1:"^")
+10 QUIT X
OUTH ; Output
+1 WRITE !,?3,"Enter 'Yes' to send the output listing in a MailMan message."
+2 WRITE !,?3,"Enter 'No' to display the output listing to the screen."
+3 QUIT
MM ; MailMan Message
+1 if '$DATA(^TMP("LEXQCO",$JOB))
GOTO MMQ
NEW XCNP,XMSCR,XMDUZ,XMY,XMZ,XMSUB,XMTEXT,XMDUZ,LEXJ,LEXNM
+2 SET XMTEXT="^TMP(""LEXQCO"","_$JOB_","
SET XMSUB="CSV ICD/CPT Changes"
SET LEXNM=$$GET1^DIQ(200,+($GET(DUZ)),.01)
if '$LENGTH(LEXNM)
GOTO MMQ
+3 SET XMY(LEXNM)=""
SET XMDUZ=.5
DO ^XMD
MMQ ; MailMan Quit
+1 KILL ^TMP("LEXQCO",$JOB),LEXNM,LEXSUB
+2 QUIT
CDTOK(X) ; Code Set Date is OK
+1 NEW LEXCDT,LEXOK,LEXSAB,LEXI
SET LEXOK=0
SET LEXCDT=$GET(X)
if LEXCDT'?7N
QUIT LEXOK
+2 FOR LEXSAB="ICD","ICP","10D","10P","CPT","CPC"
Begin DoDot:1
+3 if $DATA(^LEX(757.02,"AUPD",LEXSAB,LEXCDT))
SET LEXOK=1
End DoDot:1
if LEXOK>0
QUIT
+4 IF LEXOK'>0
SET LEXI=0
FOR
SET LEXI=$ORDER(@("^DIC(81.3,"_LEXI_")"))
if +LEXI'>0
QUIT
Begin DoDot:1
+5 if $DATA(@("^DIC(81.3,"_LEXI_",60,""B"","_LEXCDT_")"))
SET LEXOK=1
+6 if $DATA(@("^DIC(81.3,"_LEXI_",61,""B"","_LEXCDT_")"))
SET LEXOK=1
+7 if $DATA(@("^DIC(81.3,"_LEXI_",62,""B"","_LEXCDT_")"))
SET LEXOK=1
End DoDot:1
if LEXOK>0
QUIT
+8 SET X=LEXOK
+9 QUIT X