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

LEXWUP.m

Go to the documentation of this file.
  1. LEXWUP ;ISL/KER - Lexicon Keywords - Update (Purge) ;05/23/2017
  1. ;;2.0;LEXICON UTILITY;**103**;Sep 23, 1996;Build 2
  1. ;
  1. ; Global Variables
  1. ; ^ICD0( ICR 4486
  1. ; ^ICD9( ICR 4485
  1. ; ^LEX(757, SACC 1.3
  1. ; ^LEX(757.01, SACC 1.3
  1. ; ^LEX(757.02, SACC 1.3
  1. ; ^LEX(757.03, SACC 1.3
  1. ; ^LEX(757.071, SACC 1.3
  1. ; ^TMP("LEXWU",$J) SACC 2.3.2.5.1
  1. ;
  1. ; External References
  1. ; HOME^%ZIS ICR 10086
  1. ; ^%ZTLOAD ICR 10063
  1. ; ^DIK ICR 10013
  1. ; $$GET1^DIQ ICR 2056
  1. ; $$DT^XLFDT ICR 10103
  1. ; $$FMDIFF^XLFDT ICR 10103
  1. ; $$FMTE^XLFDT ICR 10103
  1. ; $$NOW^XLFDT ICR 10103
  1. ;
  1. ; Local Variables NEWed or KILLed Elsewhere
  1. ; Control Variables
  1. ; LEXTEST For testing only
  1. ; LEXAFT Purge keywords inactive after date
  1. ; LEXCOM Commit Flag
  1. ; LEXPUR Purge some or all (LEXPUR="ALL")
  1. ;
  1. ; Call STOP^LEXWUS to stop the task. It sets the following
  1. ; global node:
  1. ;
  1. ; ^TMP("LEXWU",$J,"STOP")
  1. ;
  1. Q
  1. EN ; Main Entry Point (tasked)
  1. N ZT,ZTKEY,ZTUCI,ZTSK,ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE,ZTQUEUED,ZTREQ,LEXRUN,LEXCOM,LEXCHK,LEXNAM,I,X,Y
  1. S (LEXNAM,ZTDESC)="Keyword Update Utility (Purge Inactive)",LEXCHK=""
  1. I '$D(LEXTEST) S LEXRUN=$$RUN2^LEXWUM I LEXRUN>0 W:$L($P(LEXRUN,"^",2)) !,?4,$P(LEXRUN,"^",2),! Q
  1. S (LEXNAM,ZTDESC)="Keyword Update Utility (Purge Inactive)",LEXCHK=""
  1. S ZTRTN="PUR^LEXWUP" S LEXCHK="",LEXPUR="",ZTSAVE("LEXPUR")=""
  1. S:'$D(LEXCOM) LEXCOM=1,ZTSAVE("LEXCOM")=""
  1. I $D(LEXTEST) S ZTSAVE("LEXTEST")="" K LEXCOM,ZTSAVE("LEXCOM")
  1. S:$G(LEXAFT)?7N ZTSAVE("LEXAFT")="" K ^TMP("LEXWU",$J,"STOP") S ZTIO="",ZTDTH=$H
  1. D:'$D(LEXTEST) ^%ZTLOAD D:$D(LEXTEST) @ZTRTN
  1. I +($G(ZTSK))>0 W !!,?4,$G(LEXNAM)," tasked (#",+($G(ZTSK)),")",!
  1. D HOME^%ZIS K LEXTEST,LEXAFT,LEXCOM,LEXPUR
  1. Q
  1. EN2 ; Entry Point (tasked - purge selected keyword - LEXKEY)
  1. ;
  1. ; Needs LEXKEY One Keyword
  1. ; <or>
  1. ; LEXKEY(LEXKEY1) Selected Keywords
  1. ; LEXKEY(LEXKEY2)
  1. ; LEXKEY(LEXKEYn)
  1. ;
  1. N ZT,ZTKEY,ZTUCI,ZTSK,ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE,ZTQUEUED,ZTREQ,LEXRUN,LEXCOM,LEXCHK,LEXNAM,I,X,Y
  1. I '$L($G(LEXKEY))&('$L($O(LEXKEY("")))) W !," LEXKEY keyword variable not defined",! Q
  1. I '$D(LEXTEST) S LEXRUN=$$RUN2^LEXWUM I LEXRUN>0 W:$L($P(LEXRUN,"^",2)) !,?4,$P(LEXRUN,"^",2),! Q
  1. S (LEXNAM,ZTDESC)="Keyword Update Utility (Purge Selected Keyword)",LEXCHK=""
  1. S ZTRTN="SEL^LEXWUP" S LEXPUR=$G(LEXPUR),ZTSAVE("LEXPUR")=""
  1. S:$L($G(LEXKEY)) ZTSAVE("LEXKEY")="" S:$L($O(LEXKEY(""))) ZTSAVE("LEXKEY(")=""
  1. S:'$D(LEXCOM) LEXCOM=1,ZTSAVE("LEXCOM")="" I $D(LEXTEST) S ZTSAVE("LEXTEST")="" K LEXCOM,ZTSAVE("LEXCOM")
  1. S:$G(LEXAFT)?7N ZTSAVE("LEXAFT")="" K ^TMP("LEXWU",$J,"STOP")
  1. S ZTIO="",ZTDTH=$H D:'$D(LEXTEST) ^%ZTLOAD D:$D(LEXTEST) @ZTRTN
  1. I +($G(ZTSK))>0 W !!,?4,$G(LEXNAM)," tasked (#",+($G(ZTSK)),")",!
  1. D HOME^%ZIS K LEXTEST,LEXAFT,LEXCOM,LEXPUR
  1. Q
  1. PUR ; Purge Keywords
  1. S:$D(ZTQUEUED) ZTREQ="@"
  1. K ^TMP("LEXWU",$J) S LEXENV=$$ENV Q:'LEXENV
  1. N LEXBEG,LEXCTR,LEXEFF,LEXENV,LEXEXC,LEXICDC,LEXICPC,LEXINA,LEXINC,LEXKEY,LEXKIEN,LEXLEXC,LEXSF,LEXTD,DIC,DIK,I,X
  1. N LEXL01C,LEXL02C,LEXL03C,LEXL04C,LEXL17C,LEXL30C,LEXL31C,LEXL56C,LEXI01C,LEXI02C,LEXI30C,LEXI31C
  1. S (LEXL01C,LEXL02C,LEXL03C,LEXL04C,LEXL17C,LEXL30C,LEXL31C,LEXL56C,LEXI01C,LEXI02C,LEXI30C,LEXI31C)=0
  1. S (LEXCTR,LEXICDC,LEXICPC,LEXLEXC)=0
  1. K:$D(LEXTEST) LEXCOM S LEXTD=$$DT^XLFDT,LEXKEY="",LEXBEG=$$NOW^XLFDT S LEXAFT=$G(LEXAFT) K LEXSF
  1. F S LEXKEY=$O(^LEX(757.071,"B",LEXKEY)) Q:'$L(LEXKEY) Q:$$ABT D Q:$$ABT
  1. . N LEXKIEN S LEXKIEN=0
  1. . F S LEXKIEN=$O(^LEX(757.071,"B",LEXKEY,LEXKIEN)) Q:+LEXKIEN'>0 Q:$$ABT D Q:$$ABT
  1. . . N LEXSTA,LEXEFF,LEXINA,LEXINC,LEXEXC S LEXSTA=$$INA(LEXKIEN) Q:($G(LEXPUR)'="ALL")&(LEXSTA'>0)
  1. . . S LEXEFF=$P($G(^LEX(757.071,+LEXKIEN,0)),"^",2),LEXINA=$P($G(^LEX(757.071,+LEXKIEN,0)),"^",3)
  1. . . S LEXINC=$P($G(^LEX(757.071,+LEXKIEN,0)),"^",4),LEXEXC=$P($G(^LEX(757.071,+LEXKIEN,0)),"^",5)
  1. . . D DINA,ICD,LEX
  1. D DEND K ^TMP("LEXWU",$J)
  1. Q
  1. SEL ; Selected Keywords (For Post-Install)
  1. S:$D(ZTQUEUED) ZTREQ="@"
  1. D:'$L($G(LEXKEY))&('$L($O(LEXKEY("")))) CLR D:$D(^TMP("LEXWU",$J,"STOP")) CLR Q:'$L($G(LEXKEY))&('$L($O(LEXKEY(""))))
  1. N LEXBEG,LEXEND,LEXELP,LEXSF,LEXKIEN,LEXTD,DIC,DIK,I,X
  1. N LEXL01C,LEXL02C,LEXL03C,LEXL04C,LEXL17C,LEXL30C,LEXL31C,LEXL56C,LEXI01C,LEXI02C,LEXI30C,LEXI31C
  1. S (LEXL01C,LEXL02C,LEXL03C,LEXL04C,LEXL17C,LEXL30C,LEXL31C,LEXL56C,LEXI01C,LEXI02C,LEXI30C,LEXI31C)=0
  1. S (LEXCTR,LEXICDC,LEXICPC,LEXLEXC)=0
  1. K:$D(LEXTEST) LEXCOM S LEXTD=$$DT^XLFDT,LEXBEG=$$NOW^XLFDT S LEXAFT=$G(LEXAFT) K LEXSF
  1. I $L($G(LEXKEY)) D
  1. . S LEXKIEN=0 F S LEXKIEN=$O(^LEX(757.071,"B",LEXKEY,LEXKIEN)) Q:+LEXKIEN'>0 Q:$$ABT D Q:$$ABT
  1. . . N LEXSTA,LEXEFF,LEXINA,LEXINC,LEXEXC S LEXSTA=$$INA(LEXKIEN)
  1. . . Q:($G(LEXPUR)'="ALL")&(LEXSTA'>0)
  1. . . S LEXEFF=$P($G(^LEX(757.071,+LEXKIEN,0)),"^",2),LEXINA=$P($G(^LEX(757.071,+LEXKIEN,0)),"^",3)
  1. . . S LEXINC=$P($G(^LEX(757.071,+LEXKIEN,0)),"^",4),LEXEXC=$P($G(^LEX(757.071,+LEXKIEN,0)),"^",5)
  1. . . D DINA D ICD,LEX
  1. I $L($O(LEXKEY(""))) D
  1. . N LEXTKEY S LEXTKEY="" F S LEXTKEY=$O(LEXKEY(LEXTKEY)) Q:'$L(LEXTKEY) D
  1. . . N LEXKIEN,LEXKEY S LEXKEY=LEXTKEY,LEXKIEN=0
  1. . . F S LEXKIEN=$O(^LEX(757.071,"B",LEXKEY,LEXKIEN)) Q:+LEXKIEN'>0 Q:$$ABT D Q:$$ABT
  1. . . . N LEXSTA,LEXEFF,LEXINA,LEXINC,LEXEXC S LEXSTA=$$INA(LEXKIEN)
  1. . . . Q:($G(LEXPUR)'="ALL")&(LEXSTA'>0)
  1. . . . S LEXEFF=$P($G(^LEX(757.071,+LEXKIEN,0)),"^",2),LEXINA=$P($G(^LEX(757.071,+LEXKIEN,0)),"^",3)
  1. . . . S LEXINC=$P($G(^LEX(757.071,+LEXKIEN,0)),"^",4),LEXEXC=$P($G(^LEX(757.071,+LEXKIEN,0)),"^",5)
  1. . . . D DINA D ICD,LEX
  1. D DEND K ^TMP("LEXWU",$J) D CLR
  1. Q
  1. ;
  1. ICD ; ICD Diagnosis/Procedures
  1. N DA,DIK,DICI,LEXCHK,LEXDIEN,LEXEFF,LEXEXP,LEXI,LEXIIEN,LEXND,LEXOK,LEXRT,LEXSIEN,LEXSRC,LEXSUP
  1. Q:$G(LEXTD)'?7N Q:'$L($G(LEXKEY)) Q:'$L($G(LEXINC))
  1. N LEXRT,LEXIIEN F LEXRT="^ICD9(","^ICD0(" S LEXIIEN=0 D
  1. . F S LEXIIEN=$O(@(LEXRT_"""D"","""_LEXKEY_""","_+LEXIIEN_")")) Q:+LEXIIEN'>0 D
  1. . . N LEXEFF,LEXSRC,LEXTYPE,LEXSYS S LEXSRC=$P($G(@(LEXRT_+LEXIIEN_",1)")),"^",1),LEXEFF=0
  1. . . S LEXSYS="" S:LEXSRC=1 LEXSYS="ICD-9-CM" S:LEXSRC=2 LEXSYS="ICD-9 Proc"
  1. . . S:LEXSRC=30 LEXSYS="ICD-10-CM" S:LEXSRC=31 LEXSYS="ICD-10-PCS"
  1. . . S:LEXSRC=1!(LEXSRC=30) LEXTYPE="ICD Grouper Diagnosis (80)" S:LEXSRC=2!(LEXSRC=31) LEXTYPE="ICD Grouper Procedure (80.1)"
  1. . . F S LEXEFF=$O(@(LEXRT_"""D"","""_LEXKEY_""","_+LEXIIEN_","_+LEXEFF_")")) Q:+LEXEFF'>0 D
  1. . . . Q:LEXEFF'?7N N LEXDIEN S LEXDIEN=0
  1. . . . F S LEXDIEN=$O(@(LEXRT_"""D"","""_LEXKEY_""","_+LEXIIEN_","_+LEXEFF_","_+LEXDIEN_")")) Q:+LEXDIEN'>0 D
  1. . . . . N LEXSIEN S LEXSIEN=0
  1. . . . . F S LEXSIEN=$O(@(LEXRT_"""D"","""_LEXKEY_""","_+LEXIIEN_","_+LEXEFF_","_+LEXDIEN_","_+LEXSIEN_")")) Q:+LEXSIEN'>0 D
  1. . . . . . N DA,DIK,LEXCHK,LEXEXP,LEXI,LEXND,LEXOK,LEXSUP,LEXOIEN
  1. . . . . . S LEXND=LEXRT_"""D"","""_LEXKEY_""","_+LEXIIEN_","_+LEXEFF_","_+LEXDIEN_","_+LEXSIEN_")"
  1. . . . . . S LEXND=LEXRT_+LEXIIEN_",68,"_+LEXDIEN_",1)",LEXEXP=@LEXND,LEXOK=1
  1. . . . . . F LEXI=1:1 S LEXCHK=$P($G(LEXINC),";",LEXI) Q:'$L(LEXCHK) S:LEXEXP'[LEXCHK LEXOK=0
  1. . . . . . Q:'LEXOK S LEXND=LEXRT_+LEXIIEN_",68,"_+LEXDIEN_",2,"_+LEXSIEN_",0)",LEXOIEN=LEXIIEN
  1. . . . . . S LEXSUP=@LEXND Q:'$L(LEXSUP) Q:LEXSUP'=LEXKEY Q:'$D(@(LEXRT_+LEXIIEN_",68,"_+LEXDIEN_",2,""B"","""_LEXSUP_""")"))
  1. . . . . . D DEXP I $D(LEXCOM) S DA=+LEXSIEN,DA(1)=+LEXDIEN,DA(2)=+LEXIIEN,DIK=LEXRT_DA(2)_",68,"_DA(1)_",2," D ^DIK
  1. . . . . . S LEXSDOC=+($G(LEXSDOC))+1 S:LEXSRC=1!(LEXSRC=30) LEXICDC=+($G(LEXICDC))+1
  1. . . . . . S:LEXSRC=2!(LEXSRC=31) LEXICPC=+($G(LEXICPC))+1 S:LEXSRC=1 LEXI01C=+($G(LEXI01C))+1 S:LEXSRC=2 LEXI02C=+($G(LEXI02C))+1
  1. . . . . . S:LEXSRC=30 LEXI30C=+($G(LEXI30C))+1 S:LEXSRC=31 LEXI31C=+($G(LEXI31C))+1
  1. Q
  1. LEX ; Lexicon
  1. Q:$G(LEXTD)'?7N Q:'$L($G(LEXKEY)) Q:'$L($G(LEXINC))
  1. N DA,DIK,DIC,I,LEXRT,LEXASRC,LEXSS,LEXMIEN S LEXRT="^LEX(757.01,",LEXASRC="^1^2^3^4^17^30^31^56^",LEXMIEN=0
  1. F S LEXMIEN=$O(^LEX(757.01,"AWRD",LEXKEY,LEXMIEN)) Q:+LEXMIEN'>0 D
  1. . N LEXEIEN S LEXEIEN=0 F S LEXEIEN=$O(^LEX(757.01,"AWRD",LEXKEY,LEXMIEN,LEXEIEN)) Q:'$L(LEXEIEN) D
  1. . . N LEXSUP S LEXSUP=0 F S LEXSUP=$O(^LEX(757.01,"AWRD",LEXKEY,LEXMIEN,LEXEIEN,LEXSUP)) Q:+LEXSUP'>0 D
  1. . . . K LEXSF N LEXTIEN,LEXIENA,LEXOK,LEXFND,LEXSYS S (LEXOK,LEXFND)=0,LEXSYS="" F LEXTIEN=LEXMIEN,LEXEIEN D
  1. . . . . N LEXSIEN S LEXSIEN=0 F S LEXSIEN=$O(^LEX(757.02,"B",LEXTIEN,LEXSIEN)) Q:+LEXSIEN'>0 D
  1. . . . . . N LEXSRC S LEXSRC=$P($G(^LEX(757.02,+LEXSIEN,0)),"^",3)
  1. . . . . . Q:LEXASRC'[("^"_LEXSRC_"^") S LEXOK=1,LEXFND=LEXFND+1
  1. . . . . . S:'$L(LEXSYS)&(LEXSRC=1) LEXSYS="ICD-9-CM" S:'$L(LEXSYS)&(LEXSRC=2) LEXSYS="ICD-9 Proc"
  1. . . . . . S:'$L(LEXSYS)&(LEXSRC=3) LEXSYS="CPT-4" S:'$L(LEXSYS)&(LEXSRC=4) LEXSYS="HCPCS"
  1. . . . . . S:'$L(LEXSYS)&(LEXSRC=30) LEXSYS="ICD-10-CM" S:'$L(LEXSYS)&(LEXSRC=31) LEXSYS="ICD-10-PCS"
  1. . . . . . S:'$L(LEXSYS)&(LEXSRC=56) LEXSYS="SNOMED CT" S:'$L(LEXSYS)&(LEXSRC=17) LEXSYS="Title 38"
  1. . . . . . S LEXTYPE="Lexicon Expression (757.01)"
  1. . . . . . S LEXSF(+LEXSRC)=+($G(LEXSF(+LEXSRC)))+1
  1. . . . K LEXIENA S LEXIENA(+($G(LEXMIEN)))="",LEXIENA(+($G(LEXEIEN)))=""
  1. . . . S LEXTIEN=0 F S LEXTIEN=$O(LEXIENA(LEXTIEN)) Q:+LEXTIEN'>0 D
  1. . . . . N LEXKIEN S LEXKIEN=0 F S LEXKIEN=$O(^LEX(757.01,+LEXTIEN,5,"B",LEXKEY,LEXKIEN)) Q:+LEXKIEN'>0 D
  1. . . . . . N DA,DIK,LEXEXP,LEXOIEN S LEXOIEN=LEXTIEN,LEXEXP=$G(^LEX(757.01,+LEXTIEN,0))
  1. . . . . . Q:'$D(^LEX(757.01,+LEXTIEN,5,"B",LEXKEY)) D DEXP I $O(LEXSF(0))>0 D
  1. . . . . . . N LEXS S LEXS=0 F S LEXS=$O(LEXSF(LEXS)) Q:+LEXS'>0 D
  1. . . . . . . . S:LEXS=56 LEXL56C=+($G(LEXL56C))+1 S:LEXS=17 LEXL17C=+($G(LEXL17C))+1
  1. . . . . . . . S:LEXS=3 LEXL03C=+($G(LEXL03C))+1 S:LEXS=4 LEXL04C=+($G(LEXL04C))+1
  1. . . . . . . . S:LEXS=1 LEXL01C=+($G(LEXL01C))+1 S:LEXS=30 LEXL30C=+($G(LEXL30C))+1
  1. . . . . . . . S:LEXS=2 LEXL02C=+($G(LEXL02C))+1 S:LEXS=31 LEXL31C=+($G(LEXL31C))+1
  1. . . . . . I $D(LEXCOM) S DA(1)=LEXTIEN,DA=LEXKIEN,DIK="^LEX(757.01,"_DA(1)_",5," D ^DIK
  1. Q
  1. ;
  1. ; Displays
  1. DEND ; Display End Totals
  1. Q:$D(LEXQUIET) Q:$D(ZTQUEUED) H 2 S LEXEND=$$NOW^XLFDT,LEXELP=$$FMDIFF^XLFDT($G(LEXEND),$G(LEXBEG),3)
  1. S:$L($G(LEXEND))&($L($G(LEXBEG)))&('$L(LEXELP)) LEXELP="00:00:00" N LEXII,LEXTT S LEXII="",LEXTT=0
  1. N LEXLEXC,LEXSDOC,LEXICDC,LEXTTT
  1. ; Lexicon
  1. S LEXLEXC=+($G(LEXL56C))+($G(LEXL17C))+($G(LEXL03C))+($G(LEXL04C))+($G(LEXL01C))+($G(LEXL02C))+($G(LEXL30C))+($G(LEXL31C))
  1. I +($G(LEXLEXC))>0 D
  1. . W !,?3,"Lexicon Changes ",?35,$J(LEXLEXC,8)
  1. . I +($G(LEXL01C))>0 W !,?5,"ICD-9 Diagnosis Changes ",?35,$J(LEXL01C,8)
  1. . I +($G(LEXL02C))>0 W !,?5,"ICD-9 Procedure Changes ",?35,$J(LEXL02C,8)
  1. . I +($G(LEXL30C))>0 W !,?5,"ICD-10 Diagnosis Changes ",?35,$J(LEXL30C,8)
  1. . I +($G(LEXL31C))>0 W !,?5,"ICD-10 Procedure Changes ",?35,$J(LEXL31C,8)
  1. . I +($G(LEXL56C))>0 W !,?5,"SNOMED CT Changes ",?35,$J(LEXL56C,8)
  1. . I +($G(LEXL17C))>0 W !,?5,"TITLE 38 Changes ",?35,$J(LEXL17C,8)
  1. . I +($G(LEXL03C))>0 W !,?5,"CPT-4 Procedure Changes ",?35,$J(LEXL03C,8)
  1. . I +($G(LEXL04C))>0 W !,?5,"HCPCS Procedure Changes ",?35,$J(LEXL04C,8)
  1. ; ICD files
  1. S LEXSDOC=+($G(LEXI01C))+($G(LEXI30C))+($G(LEXI02C))+($G(LEXI31C))
  1. S LEXICDC=+($G(LEXI01C))+($G(LEXI30C)),LEXICPC=+($G(LEXI02C))+($G(LEXI31C))
  1. I +($G(LEXSDOC))>0 D
  1. . N LEXTAB W:+($G(LEXLEXC))>0 ! W !,?3,"ICD* File Changes",?35,$J(LEXSDOC,8)
  1. . S LEXTAB="",LEXICDC=+($G(LEXI01C))+($G(LEXI30C))
  1. . I +($G(LEXI01C))>0&(+($G(LEXI30C))>0) W:LEXICDC>0 !,?5,"ICD Diagnosis File #80",?35,$J(LEXICDC,8) S LEXTAB=" "
  1. . I +($G(LEXI01C))>0 W !,?5,LEXTAB,"ICD-9 Diagnosis Changes ",?35,$J(LEXI01C,8)
  1. . I +($G(LEXI30C))>0 W !,?5,LEXTAB,"ICD-10 Diagnosis Changes ",?35,$J(LEXI30C,8)
  1. . S LEXTAB="",LEXICPC=+($G(LEXI02C))+($G(LEXI31C))
  1. . I +($G(LEXI02C))>0&(+($G(LEXI31C))>0) W:LEXICPC>0 !,?5,"ICD Procedures File #80.1",?35,$J(LEXICPC,8) S LEXTAB=" "
  1. . I +($G(LEXI02C))>0 W !,?5,LEXTAB,"ICD-9 Procedure Changes ",?35,$J(LEXI02C,8)
  1. . I +($G(LEXI31C))>0 W !,?5,LEXTAB,"ICD-10 Procedure Changes ",?35,$J(LEXI31C,8)
  1. S LEXTTT=+($G(LEXLEXC))+($G(LEXSDOC)) I LEXTTT>0 D
  1. . W:+($G(LEXLEXC))>0!(+($G(LEXSDOC))>0) !
  1. . I +($G(LEXLEXC))>0 W !,?3,"Total Changes ",?35,$J(LEXTTT,8)
  1. W ! I $L($G(LEXBEG)) W !,?3,"Start: ",?14,$TR($$FMTE^XLFDT(LEXBEG,"5Z"),"@"," ")
  1. I $L($G(LEXEND)) W !,?3,"Finish: ",?14,$TR($$FMTE^XLFDT(LEXEND,"5Z"),"@"," ")
  1. I $L($G(LEXELP)) W !,?3,"Elapsed: ",?14,$TR(LEXELP," ","0"),!
  1. Q
  1. DEXP ; Display Expression
  1. Q:$D(LEXQUIET) Q:$D(ZTQUEUED) Q:'$L(LEXEXP) Q:'$L(LEXINC) Q:'$L(LEXKEY)
  1. W:$L($G(LEXTYPE)) !,"Type: ",LEXTYPE W:$D(LEXSYS) !,"System: ",LEXSYS
  1. W !,"Expression: ",LEXEXP,!,"Include/Keyword: ",LEXINC,"/",LEXKEY
  1. I +($G(LEXOIEN))>0,$L($G(LEXRT)) W !,"IEN: ",LEXRT,LEXOIEN,","
  1. W !
  1. Q
  1. DINA ; Display Inactive Keyword
  1. Q:$D(LEXQUIET) Q:$D(ZTQUEUED) Q:'$L($G(LEXKEY)) Q:$G(LEXEFF)'?7N Q:$G(LEXINA)'?7N Q
  1. W !,"Keyword: ",LEXKEY,!,"Effective: ",$$FMTE^XLFDT(LEXEFF,"5Z"),!,"Inactive: ",$$FMTE^XLFDT(LEXINA,"5Z"),!
  1. Q
  1. ;
  1. ; Miscellaneous
  1. ABT(X) ; Abort
  1. Q:$D(^TMP("LEXWU",$J,"STOP")) 1
  1. Q 0
  1. INA(X) ; Inactive before Today or after LEXAFT (optional)
  1. N LEXI,LEX1,LEX2,LEXA,LEXT,LEXO S LEXT=$$DT^XLFDT,LEXI=+($G(X)),LEX1=+($P($P($G(^LEX(757.071,+LEXI,0)),"^",2),".",1)) Q:LEX1'?7N "0^1"
  1. S LEX2=+($P($P($G(^LEX(757.071,+LEXI,0)),"^",3),".",1)) Q:LEX2'?7N "0^2" S LEXA=$G(LEXAFT),LEXO=0
  1. ; If Inactive after LEXAFT and not later Active 1
  1. Q:($G(LEXA)?7N)&((LEX2+.001)>LEXA)&((LEX2+.001)>LEX1) "1^3"
  1. ; If Inactive after LEXAFT and later Active 0
  1. Q:($G(LEXA)?7N)&((LEX2+.001)>LEXA)&((LEX1+.001)>LEX2) "0^4"
  1. ; If Inactive before LEXAFT and not later Active 0
  1. Q:($G(LEXA)?7N)&((LEXA+.001)>LEX2)&((LEX2+.001)>LEX1) "0^5"
  1. ; If Inactive 1
  1. Q:(LEX2+.001)>LEX1 "1^6"
  1. ; Else Active 0
  1. Q "0^7"
  1. ACT(X) ; Active before Today or after LEXAFT (optional)
  1. N LEXI,LEX1,LEX2,LEXA,LEXT,LEXO S LEXT=$$DT^XLFDT,LEXI=+($G(X)),LEX1=+($P($P($G(^LEX(757.071,+LEXI,0)),"^",2),".",1)) Q:LEX1'?7N "0^1"
  1. S LEX2=+($P($P($G(^LEX(757.071,+LEXI,0)),"^",3),".",1)),LEXA=$G(LEXAFT),LEXO=0
  1. ; If Active after LEXAFT and not later Inctive 1
  1. Q:($G(LEXA)?7N)&((LEX1+.001)>LEXA)&((LEX1+.001)>LEX2) "1^2"
  1. ; If Active after LEXAFT and later Inactive 0
  1. Q:($G(LEXA)?7N)&((LEX1+.001)>LEXA)&((LEX2+.001)>LEX1) "0^3"
  1. ; If Active before LEXAFT and not later Inactive 0
  1. Q:($G(LEXA)?7N)&((LEXA+.001)>LEX1)&((LEX1+.001)>LEX2) "0^4"
  1. ; If Active 1
  1. Q:(LEX1+.001)>LEX2 "1^5"
  1. ; Else Inactive 0
  1. Q "0^6"
  1. DT ; Display ^TMP
  1. D DT^LEXWUM
  1. Q
  1. STOP ; Stop Task
  1. D STOP^LEXWUM
  1. Q
  1. GO ; Remove Stop
  1. K ^TMP("LEXWU",$J,"STOP")
  1. Q
  1. CLR ; Clear
  1. K ^TMP("LEXWU",$J,"STOP") K DA,DIC,DICI,DIK,I,LEX1,LEXL17C,LEX2,LEX3,LEXA,LEXAFT,LEXBEG,LEXC,LEXCAP,LEXCDT,LEXCHK,LEXCT
  1. K LEXCTR,LEXD,LEXDIEN,LEXEFF,LEXEIEN,LEXELP,LEXEND,LEXENV,LEXEXC,LEXEXP,LEXFND,LEXI,LEXI01C,LEXI02C,LEXI30C,LEXI31C,LEXICDC,LEXICPC
  1. K LEXIEN,LEXII,LEXIIEN,LEXINA,LEXINC,LEXKEY,LEXKIEN,LEXL01C,LEXL02C,LEXL03C,LEXL04C,LEXL17C,LEXL30C,LEXL31C,LEXL56C,LEXLEXC,LEXM
  1. K LEXMIEN,LEXNAM,LEXND,LEXNM,LEXO,LEXOIEN,LEXOK,LEXORD,LEXQUIET,LEXRT,LEXRUN,LEXS,LEXSDOC,LEXSF,LEXSIEN,LEXSRC,LEXSS,LEXSTA
  1. K LEXSUP,LEXSYS,LEXT,LEXTD,LEXTIEN,LEXTKEY,LEXTT,LEXTTT,LEXTYPE,LEXY,NEXKEY,POP,X,Y,ZT,ZTDESC,ZTDTH,ZTIO,ZTKEY,ZTQUEUED
  1. K ZTREQ,ZTRTN,ZTSAVE,ZTSK,ZTUCI
  1. Q
  1. ENV(X) ; Environment
  1. D HOME^%ZIS S U="^",DT=$$DT^XLFDT,DTIME=300 K POP
  1. N LEXNM S LEXNM=$$GET1^DIQ(200,(DUZ_","),.01)
  1. I '$L(LEXNM) W !!,?5,"Invalid/Missing DUZ" Q 0
  1. Q 1