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

LEXQC.m

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