- LEXWUM ;ISL/KER - Lexicon Keywords - Update (Misc) ;05/23/2017
- ;;2.0;LEXICON UTILITY;**103**;Sep 23, 1996;Build 2
- ;
- ; Global Variables
- ; ^LEX(757.071, SACC 1.3
- ; ^TMP("LEXWU",$J) SACC 2.3.2.5.1
- ;
- ; External References
- ; HOME^%ZIS ICR 10086
- ; DESC^%ZTLOAD ICR 10063
- ; STAT^%ZTLOAD ICR 10063
- ; $$GET1^DIQ ICR 2056
- ; $$DT^XLFDT ICR 10103
- ; $$FMDIFF^XLFDT ICR 10103
- ; $$FMTE^XLFDT ICR 10103
- ; $$HTFM^XLFDT ICR 10103
- ; $$NOW^XLFDT ICR 10103
- ;
- ; Local Variables NEWed or KILLed Elsewhere
- ; LEXCAP Output Delimited String (capture)
- ; LEXCHK Flag to check for one task
- ; LEXONE Call Task Monitor Once
- ;
- Q
- RUN(X) ; TaskMan Running Task
- ;
- ; This entry point checks TaskMan to see if the the
- ; Keyword Update is still running.
- ;
- N LEXTDES,LEXRUN,LEXTT,LEXIT,Y S LEXTT=0,LEXIT=0
- S LEXTDES=$G(X) I $L(LEXTDES) D Q X
- . S X=1,LEXRUN=$$TSKM(LEXTDES) S X=+($G(LEXRUN)) D:+LEXRUN>0 MOND(LEXRUN,0)
- . I '$D(LEXCHK),LEXRUN'>0 W:$$OUT>0 !," Keyword Update Utility is not running"
- S LEXRUN=$$ASK("Keyword Update Utility (Purge Inactive)") S LEXTT=LEXTT+LEXRUN
- I +LEXRUN'>0 S LEXRUN=$$ASK("Keyword Update Utility (Purge Selected Keyword)") S LEXTT=LEXTT+LEXRUN
- I +LEXRUN'>0 S LEXRUN=$$ASK("Keyword Update Utility") S LEXTT=LEXTT+LEXRUN
- I +LEXRUN'>0 S LEXRUN=$$ASK("Keyword Update Utility (Selected Keyword)") S LEXTT=LEXTT+LEXRUN
- I +LEXRUN'>0 S LEXRUN=$$ASK("Test Keyword Update Utility") S LEXTT=LEXTT+LEXRUN
- I +LEXRUN'>0 S LEXRUN=$$ASK("Keyword Update Utility (Dupes)") S LEXTT=LEXTT+LEXRUN
- S:LEXTT>0 LEXIT=1 I '$D(LEXCHK),LEXTT'>0 W:$$OUT>0 !," Keyword Update Utility is not running"
- S X=LEXIT
- Q X
- RUN2(X) ; TaskMan Running Task
- N LEXRUN,LEXTSK,LEXQUIET S LEXRUN=+($G(LEXRUN)),LEXTSK="",LEXQUIET=1
- I +LEXRUN'>0 S LEXTSK="Keyword Update Utility (Dupes)",LEXRUN=$$ASK(LEXTSK)
- I +LEXRUN'>0 S LEXTSK="Keyword Update Utility (Purge Inactive)",LEXRUN=$$ASK(LEXTSK)
- I +LEXRUN'>0 S LEXTSK="Keyword Update Utility (Purge Selected Keyword)",LEXRUN=$$ASK(LEXTSK)
- I +LEXRUN'>0 S LEXTSK="Keyword Update Utility (Set)",LEXRUN=$$ASK(LEXTSK)
- I +LEXRUN'>0 S LEXTSK="Keyword Update Utility (Set Selected Keyword)",LEXRUN=$$ASK(LEXTSK)
- I +LEXRUN'>0 S LEXTSK="Test Keyword Update Utility",LEXRUN=$$ASK(LEXTSK)
- I LEXRUN>0 D Q X
- . N LEXTXT,LEXT,LEXSTA,LEXNAM S X=LEXRUN,LEXT=$P(LEXRUN,"^",2),LEXNAM=$P(LEXRUN,"^",3) S:'$L(LEXNAM) LEXNAM=LEXTSK Q:'$L(LEXNAM)
- . S LEXSTA=$P(LEXRUN,"^",4) S:LEXSTA["running" LEXSTA="task is running" S:LEXSTA["scheduled" LEXSTA="task is scheduled"
- . S LEXTXT=""""_LEXNAM_""" "_LEXSTA S:+LEXT>0 LEXTXT=LEXTXT_" (#"_+LEXT_")" S (X,LEXRUN)="1^"_LEXTXT
- S:LEXRUN'>0 LEXTSK="Keyword Update Utility is not running" S X=+($G(LEXRUN))_"^"_LEXTSK
- Q X
- STOP ; Stop Task
- N LEXRUN,LEXQUIET S LEXQUIET=1
- S LEXRUN=$$ASK("Keyword Update Utility (Purge Inactive)")
- S:+LEXRUN'>0 LEXRUN=$$ASK("Keyword Update Utility (Purge Selected Keyword)")
- S:+LEXRUN'>0 LEXRUN=$$ASK("Keyword Update Utility")
- S:+LEXRUN'>0 LEXRUN=$$ASK("Keyword Update Utility (Selected Keyword)")
- S:+LEXRUN'>0 LEXRUN=$$ASK("Test Keyword Update Utility")
- S:+LEXRUN'>0 LEXRUN=$$ASK("Keyword Update Utility (Dupes)")
- I +LEXRUN>0 D
- . N LEXT,LEXJ S LEXT=+($P(LEXRUN,"^",2)) Q:+LEXT'>0 S LEXJ=$$GET1^DIQ(14.4,(LEXT_","),54) I +LEXJ>0 S ^TMP("LEXWU",+LEXJ,"STOP")=""
- Q
- MON ; TaskMan Monitor
- ;
- ; This entry point monitors TaskMan Keyword Update
- ; Utility and reports its progress. The user must
- ; enter an up-arrow "^" to exit the monitor loop.
- ; The task monitor will also quit when the task quits.
- ;
- N LEXIT,LEXINC S LEXIT=0,LEXINC=0 F D W:+LEXIT>0&($$OUT>0) !! Q:+LEXIT>0
- . N LEXTT,LEXTDES S LEXTT=0 W:$L($G(IOF))&($$OUT>0) @IOF S LEXINC=LEXINC+1 S:$D(LEXONE) LEXIT=1
- . S LEXRUN=$$ASK("Keyword Update Utility (Purge Inactive)") S LEXTT=LEXTT+LEXRUN
- . S LEXRUN=$$ASK("Keyword Update Utility (Purge Selected Keyword)") S LEXTT=LEXTT+LEXRUN
- . S LEXRUN=$$ASK("Keyword Update Utility") S LEXTT=LEXTT+LEXRUN
- . S LEXRUN=$$ASK("Keyword Update Utility (Selected Keyword)") S LEXTT=LEXTT+LEXRUN
- . S LEXRUN=$$ASK("Test Keyword Update Utility") S LEXTT=LEXTT+LEXRUN
- . S LEXRUN=$$ASK("Keyword Update Utility (Dupes)") S LEXTT=LEXTT+LEXRUN
- . I LEXTT'>0 D Q
- . . W:$$OUT>0 !!,"Keyword Update Task not found/running",! S LEXIT=1 Q
- . I '$D(LEXONE) S LEXTT=$$PAUSE I $L(LEXTT) S LEXIT=1 Q
- Q
- ASK(X) ; Ask if Running
- N LEXTDES,LEXRUN S LEXTDES=$G(X) Q:'$L(LEXTDES) 0
- S LEXRUN=$$TSKM(LEXTDES) D:+LEXRUN>0 MOND(LEXRUN,0) S X=LEXRUN
- Q X
- MOND(X,Y) ; TaskMan Monitor Display
- N LEXE,LEXI,LEXN,LEXCUR,LEXR,LEXS,LEXT S LEXI=+($G(Y))
- S LEXT=$P($G(X),"^",2),LEXN=$P($G(X),"^",3),LEXS=$P($G(X),"^",4),LEXCUR=$$NOW^XLFDT
- S LEXR="" S:LEXT>0 LEXR=$$GET1^DIQ(14.4,(LEXT_","),6) S:$L(LEXR) LEXR=$$HTFM^XLFDT(LEXR) S LEXE=""
- I $P(LEXR,".",1)?7N,LEXR<LEXCUR S LEXE=$$FMDIFF^XLFDT(LEXCUR,LEXR,3) S:$E(LEXE,1)=" "&($L($P(LEXE,":",1))=2) LEXE=$TR(LEXE," ","0")
- I $D(LEXONE) D Q
- . W:$$OUT>0 !,?3,LEXT," ",LEXN,?70,LEXE W:$L(LEXS)&($$OUT>0) !,?3,$J(" ",$L(LEXT))," ",LEXS S LEXIT=1 Q
- I LEXI>0 W:$$OUT>0 !," " W:LEXI>1&($$OUT>0) LEXI W:$$OUT>0 ?6,$J(LEXT,10),?20,LEXN,?70,LEXE W:$L(LEXS)&($$OUT>0) !,?20,LEXS Q
- S:LEXS["The task is " LEXS=$P(LEXS,"The task ",2) S:LEXN'["""" LEXN=""""_LEXN_""""
- W:$$OUT>0 !," ",LEXN W:$L(LEXS)&($$OUT>0) " ",LEXS W:+LEXT>0&($$OUT>0) " (#",+LEXT,")" W:$$OUT>0 !
- Q
- TSKM(X) ; TaskMan
- N ZT,ZTUCI,ZTKEY,ZTDESC,ZTDTH,ZTIO,ZTQUEUED,ZTREQ,ZTRTN,ZTSAVE,ZTSK,LEXRUN,LEXTMP,Y S ZTDESC=$G(X) Q:'$L(ZTDESC) 0
- K LEXTMP D DESC^%ZTLOAD(ZTDESC,"LEXTMP") Q:$O(LEXTMP(0))'>0 0 S LEXRUN=0,ZTSK=0 F S ZTSK=$O(LEXTMP(ZTSK)) Q:+ZTSK'>0 D
- . D STAT^%ZTLOAD Q:+($G(ZTSK(0)))'>0 Q:"^0^3^4^5^"[("^"_+($G(ZTSK(1)))_"^")
- . S:+($G(ZTSK(1)))=1 LEXRUN=("1^"_ZTSK_"^"_ZTDESC_"^The task is scheduled to run")
- . S:+($G(ZTSK(1)))=2 LEXRUN=("2^"_ZTSK_"^"_ZTDESC_"^The task is running")
- S X=LEXRUN
- Q X
- ;
- ; Miscellaneous
- DT ; Display ^TMP
- N LEXT,LEXBEG,LEXEND,LEXHDR,LEXDIRA
- W:$D(^TMP("LEXWU",$J,"RESULTS","CHG"))!($D(^TMP("LEXWU",$J,"RESULTS","TIM"))) !
- W:$D(LEXMENU)&($L($G(IOF))) @IOF
- S LEXHDR="",LEXT=$G(^TMP("LEXWU",$J,"RESULTS","CHG","LEX"))
- W:+LEXT>0 !,?3,"Lexicon Changes ",?32,$J(LEXT,8) W:+LEXT'>0 !,?3,"Lexicon Changes ",?32,$J("None",8)
- S (LEXT,LEXHDR)=$G(^TMP("LEXWU",$J,"RESULTS","CHG","DIA"))
- W:+LEXT'>0 !,?3,"ICD Diagnosis Changes ",?32,$J("None",8) I +LEXT>0 D
- . W !,?3,"ICD Diagnosis Changes ",?32,$J(LEXT,8)
- . S LEXT=$G(^TMP("LEXWU",$J,"RESULTS","CHG","ICD"))
- . I +LEXT>0 W:+LEXHDR'>0 !,?3 W:+LEXHDR>0 !,?5 W "ICD-9 Diagnosis Changes ",?32,$J(LEXT,8)
- . S LEXT=$G(^TMP("LEXWU",$J,"RESULTS","CHG","10D"))
- . I +LEXT>0 W:+LEXHDR'>0 !,?3 W:+LEXHDR>0 !,?5 W "ICD-10 Diagnosis Changes ",?32,$J(LEXT,8)
- S (LEXT,LEXHDR)=""
- W:+LEXT'>0 !,?3,"ICD Procedure Changes ",?32,$J("None",8) I +LEXT>0 D
- . W !,?3,"ICD Procedure Changes ",?32,$J(LEXT,8)
- . S LEXT=$G(^TMP("LEXWU",$J,"RESULTS","CHG","ICP"))
- . I +LEXT>0 W:+LEXHDR'>0 !,?3 W:+LEXHDR>0 !,?5 W "ICD-9 Procedure Changes ",?32,$J(LEXT,8)
- . S LEXT=$G(^TMP("LEXWU",$J,"RESULTS","CHG","10P"))
- . I +LEXT>0 W:+LEXHDR'>0 !,?3 W:+LEXHDR>0 !,?5 W "ICD-10 Procedures Changes ",?32,$J(LEXT,8)
- S LEXT=$G(^TMP("LEXWU",$J,"RESULTS","CHG","SCT"))
- W:+LEXT>0 !,?3,"SNOMED CT Changes ",?32,$J(LEXT,8) W:+LEXT'>0 !,?3,"SNOMED CT Changes ",?32,$J("None",8)
- S LEXT=$G(^TMP("LEXWU",$J,"RESULTS","CHG","SCC"))
- W:+LEXT>0 !,?3,"TITLE 38 Changes ",?32,$J(LEXT,8) W:+LEXT'>0 !,?3,"TITLE 38 Changes ",?32,$J("None",8)
- W:($D(^TMP("LEXWU",$J,"RESULTS","TIM"))) !
- S (LEXBEG,LEXT)=$G(^TMP("LEXWU",$J,"RESULTS","TIM","BEG"))
- W:$L($P(LEXT,"^",1))&($L($P(LEXT,"^",2))) !,?3,$P(LEXT,"^",1),?14,$P(LEXT,"^",2)
- S (LEXEND,LEXT)=$G(^TMP("LEXWU",$J,"RESULTS","TIM","END"))
- W:$L($P(LEXT,"^",1))&($L($P(LEXT,"^",2))) !,?3,$P(LEXT,"^",1),?14,$P(LEXT,"^",2)
- S LEXT=$G(^TMP("LEXWU",$J,"RESULTS","TIM","TIM"))
- S:'$L(LEXT)&($L($P(LEXBEG,"^",2)))&($P(LEXBEG,"^",2)=$P(LEXEND,"^",2)) LEXT="Elapsed: "_"^00:00:00"
- W:$L($P(LEXT,"^",1))&($L($P(LEXT,"^",2))) !,?3,$P(LEXT,"^",1),?14,$P(LEXT,"^",2)
- W:$D(^TMP("LEXWU",$J,"RESULTS","CHG"))!($D(^TMP("LEXWU",$J,"RESULTS","TIM"))) !
- W:$D(LEXMENU)&('$D(^TMP("LEXWU",$J,"RESULTS"))) !
- S LEXDIRA=" Press <Return> to continue " D:$D(LEXMENU) CONT^LEXWUM W:'$D(LEXMENU) !
- N LEXMENU
- Q
- LISTI ; List Inactive Keywords
- N LEXORD,LEXC S LEXC=8 S LEXORD="" F S LEXORD=$O(^LEX(757.071,"B",LEXORD)) Q:'$L(LEXORD) D
- . N LEXIEN S LEXIEN=0 F S LEXIEN=$O(^LEX(757.071,"B",LEXORD,+LEXIEN)) Q:+LEXIEN'>0 D
- . . N LEXKEY,LEXEFF,LEXINA,LEXINC,LEXSTA S LEXSTA=$$INA(LEXIEN) Q:+LEXSTA'>0
- . . S LEXKEY=$P($G(^LEX(757.071,+LEXIEN,0)),"^",1),LEXEFF=$P($G(^LEX(757.071,+LEXIEN,0)),"^",2)
- . . S LEXINA=$P($G(^LEX(757.071,+LEXIEN,0)),"^",3),LEXINC=$P($G(^LEX(757.071,+LEXIEN,0)),"^",4)
- . . I $D(LEXCAP) W !,LEXKEY,"~",LEXINC,"~",$S(LEXEFF?7N:$$FMTE^XLFDT(LEXEFF,"5Z"),1:""),"~",$S(LEXINA?7N:$$FMTE^XLFDT(LEXINA,"5Z"),1:""),"|" Q
- . . W !,LEXKEY W:$L($G(LEXINC)) ?LEXC," ",LEXINC
- . . W !,?LEXC," Effective:",?(LEXC+12)," ",$$FMTE^XLFDT(LEXEFF,"5Z")
- . . W:$L(LEXINA) ?(LEXC+24)," Inactive:",(LEXC+35)," ",$$FMTE^XLFDT(LEXINA,"5Z")
- . . W !
- K LEXAFT
- Q
- LISTA ; List Active Keywords
- N LEXORD,LEXC S LEXC=8 S LEXORD="" F S LEXORD=$O(^LEX(757.071,"B",LEXORD)) Q:'$L(LEXORD) D
- . N LEXIEN S LEXIEN=0 F S LEXIEN=$O(^LEX(757.071,"B",LEXORD,+LEXIEN)) Q:+LEXIEN'>0 D
- . . N LEXKEY,LEXEFF,LEXINA,LEXINC,LEXSTA S LEXSTA=$$ACT(LEXIEN) Q:+LEXSTA'>0
- . . S LEXKEY=$P($G(^LEX(757.071,+LEXIEN,0)),"^",1),LEXEFF=$P($G(^LEX(757.071,+LEXIEN,0)),"^",2)
- . . S LEXINA=$P($G(^LEX(757.071,+LEXIEN,0)),"^",3),LEXINC=$P($G(^LEX(757.071,+LEXIEN,0)),"^",4)
- . . I $D(LEXCAP) W !,LEXKEY,"~",LEXINC,"~",$S(LEXEFF?7N:$$FMTE^XLFDT(LEXEFF,"5Z"),1:""),"~",$S(LEXINA?7N:$$FMTE^XLFDT(LEXINA,"5Z"),1:""),"|" Q
- . . W !,LEXKEY W:$L($G(LEXINC)) ?LEXC," ",LEXINC
- . . W !,?LEXC," Effective:",?(LEXC+12)," ",$$FMTE^XLFDT(LEXEFF,"5Z")
- . . W:$L(LEXINA) ?(LEXC+24)," Inactive:",(LEXC+35)," ",$$FMTE^XLFDT(LEXINA,"5Z")
- . . W !
- K LEXAFT
- Q
- INA(X) ; Inactive before Today or after LEXAFT (optional)
- 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"
- S LEX2=+($P($P($G(^LEX(757.071,+LEXI,0)),"^",3),".",1)) Q:LEX2'?7N "0^2" S LEXA=$G(LEXAFT),LEXO=0
- ; If Inactive after LEXAFT and not later Active 1
- Q:($G(LEXA)?7N)&((LEX2+.001)>LEXA)&((LEX2+.001)>LEX1) "1^3"
- ; If Inactive after LEXAFT and later Active 0
- Q:($G(LEXA)?7N)&((LEX2+.001)>LEXA)&((LEX1+.001)>LEX2) "0^4"
- ; If Inactive before LEXAFT and not later Active 0
- Q:($G(LEXA)?7N)&((LEXA+.001)>LEX2)&((LEX2+.001)>LEX1) "0^5"
- ; If Inactive 1
- Q:(LEX2+.001)>LEX1 "1^6"
- ; Else Active 0
- Q "0^7"
- ACT(X) ; Active before Today or after LEXAFT (optional)
- 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"
- S LEX2=+($P($P($G(^LEX(757.071,+LEXI,0)),"^",3),".",1)),LEXA=$G(LEXAFT),LEXO=0
- ; If Active after LEXAFT and not later Inctive 1
- Q:($G(LEXA)?7N)&((LEX1+.001)>LEXA)&((LEX1+.001)>LEX2) "1^2"
- ; If Active after LEXAFT and later Inactive 0
- Q:($G(LEXA)?7N)&((LEX1+.001)>LEXA)&((LEX2+.001)>LEX1) "0^3"
- ; If Active before LEXAFT and not later Inactive 0
- Q:($G(LEXA)?7N)&((LEXA+.001)>LEX1)&((LEX1+.001)>LEX2) "0^4"
- ; If Active 1
- Q:(LEX1+.001)>LEX2 "1^5"
- ; Else Inactive 0
- Q "0^6"
- OUT(X) ; Output
- Q:$D(LEXQUIET) 0 Q:$D(ZTQUEUED) 0
- Q 1
- TM(X,Y) ; Trim Spaces
- S X=$G(X) Q:X="" X S Y=$E($G(Y),1) S:'$L(Y) Y=" " F Q:$E(X,1)'=Y S X=$E(X,2,$L(X))
- F Q:$E(X,$L(X))'=Y S X=$E(X,1,($L(X)-1))
- Q X
- ZERO ; ^LEX(757.071,0)
- N LEXIEN,LEXP1,LEXP2,LEXP3,LEXP4 S (LEXIEN,LEXP3,LEXP4)=0,LEXP1=$P($G(^LEX(757.071,0)),"^",1),LEXP2=$P($G(^LEX(757.071,0)),"^",2)
- Q:'$L(LEXP1) Q:'$L(LEXP2) Q:LEXP2'["757.071" F S LEXIEN=$O(^LEX(757.071,LEXIEN)) Q:+LEXIEN'>0 S LEXP4=LEXP4+1
- S LEXP3=$O(^LEX(757.071," "),-1) S:LEXP3'>0 LEXP3="" S:LEXP4>0 ^LEX(757.071,0)=LEXP1_"^"_LEXP2_"^"_LEXP3_"^"_LEXP4
- Q
- PAUSE(X) ; Pause Monitor
- N LEXCONT,LEXPMT S LEXPMT=" Press <Return> to continue or ""^"" to exit " W !!,LEXPMT R LEXCONT:2 Q:LEXCONT["^" "^"
- Q ""
- CONT ; Continue
- N LEXCONT,LEXPMT I IOST["P-" U IO W:$L($G(IOF)) @IOF Q
- S LEXPMT=" Press <Return> to continue " S:$L($G(LEXDIRA)) LEXPMT=LEXDIRA
- W:'$L($G(LEXDIRA)) ! W !,LEXPMT R LEXCONT:660 N LEXDIRA
- I '$T!(LEXCONT["^") W:$L($G(IOF)) @IOF K LEXCONT S LEXIT=1 Q
- W:$L($G(IOF)) @IOF
- Q
- ENV(X) ; Environment
- D HOME^%ZIS S U="^",DT=$$DT^XLFDT,DTIME=300 K POP
- N LEXNM S LEXNM=$$GET1^DIQ(200,(DUZ_","),.01)
- I '$L(LEXNM) W !!,?5,"Invalid/Missing DUZ" N LEXCAP,LEXCHK,LEXONE Q 0
- Q 1
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HLEXWUM 13261 printed Feb 18, 2025@23:36:04 Page 2
- LEXWUM ;ISL/KER - Lexicon Keywords - Update (Misc) ;05/23/2017
- +1 ;;2.0;LEXICON UTILITY;**103**;Sep 23, 1996;Build 2
- +2 ;
- +3 ; Global Variables
- +4 ; ^LEX(757.071, SACC 1.3
- +5 ; ^TMP("LEXWU",$J) SACC 2.3.2.5.1
- +6 ;
- +7 ; External References
- +8 ; HOME^%ZIS ICR 10086
- +9 ; DESC^%ZTLOAD ICR 10063
- +10 ; STAT^%ZTLOAD ICR 10063
- +11 ; $$GET1^DIQ ICR 2056
- +12 ; $$DT^XLFDT ICR 10103
- +13 ; $$FMDIFF^XLFDT ICR 10103
- +14 ; $$FMTE^XLFDT ICR 10103
- +15 ; $$HTFM^XLFDT ICR 10103
- +16 ; $$NOW^XLFDT ICR 10103
- +17 ;
- +18 ; Local Variables NEWed or KILLed Elsewhere
- +19 ; LEXCAP Output Delimited String (capture)
- +20 ; LEXCHK Flag to check for one task
- +21 ; LEXONE Call Task Monitor Once
- +22 ;
- +23 QUIT
- RUN(X) ; TaskMan Running Task
- +1 ;
- +2 ; This entry point checks TaskMan to see if the the
- +3 ; Keyword Update is still running.
- +4 ;
- +5 NEW LEXTDES,LEXRUN,LEXTT,LEXIT,Y
- SET LEXTT=0
- SET LEXIT=0
- +6 SET LEXTDES=$GET(X)
- IF $LENGTH(LEXTDES)
- Begin DoDot:1
- +7 SET X=1
- SET LEXRUN=$$TSKM(LEXTDES)
- SET X=+($GET(LEXRUN))
- if +LEXRUN>0
- DO MOND(LEXRUN,0)
- +8 IF '$DATA(LEXCHK)
- IF LEXRUN'>0
- if $$OUT>0
- WRITE !," Keyword Update Utility is not running"
- End DoDot:1
- QUIT X
- +9 SET LEXRUN=$$ASK("Keyword Update Utility (Purge Inactive)")
- SET LEXTT=LEXTT+LEXRUN
- +10 IF +LEXRUN'>0
- SET LEXRUN=$$ASK("Keyword Update Utility (Purge Selected Keyword)")
- SET LEXTT=LEXTT+LEXRUN
- +11 IF +LEXRUN'>0
- SET LEXRUN=$$ASK("Keyword Update Utility")
- SET LEXTT=LEXTT+LEXRUN
- +12 IF +LEXRUN'>0
- SET LEXRUN=$$ASK("Keyword Update Utility (Selected Keyword)")
- SET LEXTT=LEXTT+LEXRUN
- +13 IF +LEXRUN'>0
- SET LEXRUN=$$ASK("Test Keyword Update Utility")
- SET LEXTT=LEXTT+LEXRUN
- +14 IF +LEXRUN'>0
- SET LEXRUN=$$ASK("Keyword Update Utility (Dupes)")
- SET LEXTT=LEXTT+LEXRUN
- +15 if LEXTT>0
- SET LEXIT=1
- IF '$DATA(LEXCHK)
- IF LEXTT'>0
- if $$OUT>0
- WRITE !," Keyword Update Utility is not running"
- +16 SET X=LEXIT
- +17 QUIT X
- RUN2(X) ; TaskMan Running Task
- +1 NEW LEXRUN,LEXTSK,LEXQUIET
- SET LEXRUN=+($GET(LEXRUN))
- SET LEXTSK=""
- SET LEXQUIET=1
- +2 IF +LEXRUN'>0
- SET LEXTSK="Keyword Update Utility (Dupes)"
- SET LEXRUN=$$ASK(LEXTSK)
- +3 IF +LEXRUN'>0
- SET LEXTSK="Keyword Update Utility (Purge Inactive)"
- SET LEXRUN=$$ASK(LEXTSK)
- +4 IF +LEXRUN'>0
- SET LEXTSK="Keyword Update Utility (Purge Selected Keyword)"
- SET LEXRUN=$$ASK(LEXTSK)
- +5 IF +LEXRUN'>0
- SET LEXTSK="Keyword Update Utility (Set)"
- SET LEXRUN=$$ASK(LEXTSK)
- +6 IF +LEXRUN'>0
- SET LEXTSK="Keyword Update Utility (Set Selected Keyword)"
- SET LEXRUN=$$ASK(LEXTSK)
- +7 IF +LEXRUN'>0
- SET LEXTSK="Test Keyword Update Utility"
- SET LEXRUN=$$ASK(LEXTSK)
- +8 IF LEXRUN>0
- Begin DoDot:1
- +9 NEW LEXTXT,LEXT,LEXSTA,LEXNAM
- SET X=LEXRUN
- SET LEXT=$PIECE(LEXRUN,"^",2)
- SET LEXNAM=$PIECE(LEXRUN,"^",3)
- if '$LENGTH(LEXNAM)
- SET LEXNAM=LEXTSK
- if '$LENGTH(LEXNAM)
- QUIT
- +10 SET LEXSTA=$PIECE(LEXRUN,"^",4)
- if LEXSTA["running"
- SET LEXSTA="task is running"
- if LEXSTA["scheduled"
- SET LEXSTA="task is scheduled"
- +11 SET LEXTXT=""""_LEXNAM_""" "_LEXSTA
- if +LEXT>0
- SET LEXTXT=LEXTXT_" (#"_+LEXT_")"
- SET (X,LEXRUN)="1^"_LEXTXT
- End DoDot:1
- QUIT X
- +12 if LEXRUN'>0
- SET LEXTSK="Keyword Update Utility is not running"
- SET X=+($GET(LEXRUN))_"^"_LEXTSK
- +13 QUIT X
- STOP ; Stop Task
- +1 NEW LEXRUN,LEXQUIET
- SET LEXQUIET=1
- +2 SET LEXRUN=$$ASK("Keyword Update Utility (Purge Inactive)")
- +3 if +LEXRUN'>0
- SET LEXRUN=$$ASK("Keyword Update Utility (Purge Selected Keyword)")
- +4 if +LEXRUN'>0
- SET LEXRUN=$$ASK("Keyword Update Utility")
- +5 if +LEXRUN'>0
- SET LEXRUN=$$ASK("Keyword Update Utility (Selected Keyword)")
- +6 if +LEXRUN'>0
- SET LEXRUN=$$ASK("Test Keyword Update Utility")
- +7 if +LEXRUN'>0
- SET LEXRUN=$$ASK("Keyword Update Utility (Dupes)")
- +8 IF +LEXRUN>0
- Begin DoDot:1
- +9 NEW LEXT,LEXJ
- SET LEXT=+($PIECE(LEXRUN,"^",2))
- if +LEXT'>0
- QUIT
- SET LEXJ=$$GET1^DIQ(14.4,(LEXT_","),54)
- IF +LEXJ>0
- SET ^TMP("LEXWU",+LEXJ,"STOP")=""
- End DoDot:1
- +10 QUIT
- MON ; TaskMan Monitor
- +1 ;
- +2 ; This entry point monitors TaskMan Keyword Update
- +3 ; Utility and reports its progress. The user must
- +4 ; enter an up-arrow "^" to exit the monitor loop.
- +5 ; The task monitor will also quit when the task quits.
- +6 ;
- +7 NEW LEXIT,LEXINC
- SET LEXIT=0
- SET LEXINC=0
- FOR
- Begin DoDot:1
- +8 NEW LEXTT,LEXTDES
- SET LEXTT=0
- if $LENGTH($GET(IOF))&($$OUT>0)
- WRITE @IOF
- SET LEXINC=LEXINC+1
- if $DATA(LEXONE)
- SET LEXIT=1
- +9 SET LEXRUN=$$ASK("Keyword Update Utility (Purge Inactive)")
- SET LEXTT=LEXTT+LEXRUN
- +10 SET LEXRUN=$$ASK("Keyword Update Utility (Purge Selected Keyword)")
- SET LEXTT=LEXTT+LEXRUN
- +11 SET LEXRUN=$$ASK("Keyword Update Utility")
- SET LEXTT=LEXTT+LEXRUN
- +12 SET LEXRUN=$$ASK("Keyword Update Utility (Selected Keyword)")
- SET LEXTT=LEXTT+LEXRUN
- +13 SET LEXRUN=$$ASK("Test Keyword Update Utility")
- SET LEXTT=LEXTT+LEXRUN
- +14 SET LEXRUN=$$ASK("Keyword Update Utility (Dupes)")
- SET LEXTT=LEXTT+LEXRUN
- +15 IF LEXTT'>0
- Begin DoDot:2
- +16 if $$OUT>0
- WRITE !!,"Keyword Update Task not found/running",!
- SET LEXIT=1
- QUIT
- End DoDot:2
- QUIT
- +17 IF '$DATA(LEXONE)
- SET LEXTT=$$PAUSE
- IF $LENGTH(LEXTT)
- SET LEXIT=1
- QUIT
- End DoDot:1
- if +LEXIT>0&($$OUT>0)
- WRITE !!
- if +LEXIT>0
- QUIT
- +18 QUIT
- ASK(X) ; Ask if Running
- +1 NEW LEXTDES,LEXRUN
- SET LEXTDES=$GET(X)
- if '$LENGTH(LEXTDES)
- QUIT 0
- +2 SET LEXRUN=$$TSKM(LEXTDES)
- if +LEXRUN>0
- DO MOND(LEXRUN,0)
- SET X=LEXRUN
- +3 QUIT X
- MOND(X,Y) ; TaskMan Monitor Display
- +1 NEW LEXE,LEXI,LEXN,LEXCUR,LEXR,LEXS,LEXT
- SET LEXI=+($GET(Y))
- +2 SET LEXT=$PIECE($GET(X),"^",2)
- SET LEXN=$PIECE($GET(X),"^",3)
- SET LEXS=$PIECE($GET(X),"^",4)
- SET LEXCUR=$$NOW^XLFDT
- +3 SET LEXR=""
- if LEXT>0
- SET LEXR=$$GET1^DIQ(14.4,(LEXT_","),6)
- if $LENGTH(LEXR)
- SET LEXR=$$HTFM^XLFDT(LEXR)
- SET LEXE=""
- +4 IF $PIECE(LEXR,".",1)?7N
- IF LEXR<LEXCUR
- SET LEXE=$$FMDIFF^XLFDT(LEXCUR,LEXR,3)
- if $EXTRACT(LEXE,1)=" "&($LENGTH($PIECE(LEXE,"
- SET LEXE=$TRANSLATE(LEXE," ","0")
- +5 IF $DATA(LEXONE)
- Begin DoDot:1
- +6 if $$OUT>0
- WRITE !,?3,LEXT," ",LEXN,?70,LEXE
- if $LENGTH(LEXS)&($$OUT>0)
- WRITE !,?3,$JUSTIFY(" ",$LENGTH(LEXT))," ",LEXS
- SET LEXIT=1
- QUIT
- End DoDot:1
- QUIT
- +7 IF LEXI>0
- if $$OUT>0
- WRITE !," "
- if LEXI>1&($$OUT>0)
- WRITE LEXI
- if $$OUT>0
- WRITE ?6,$JUSTIFY(LEXT,10),?20,LEXN,?70,LEXE
- if $LENGTH(LEXS)&($$OUT>0)
- WRITE !,?20,LEXS
- QUIT
- +8 if LEXS["The task is "
- SET LEXS=$PIECE(LEXS,"The task ",2)
- if LEXN'[""""
- SET LEXN=""""_LEXN_""""
- +9 if $$OUT>0
- WRITE !," ",LEXN
- if $LENGTH(LEXS)&($$OUT>0)
- WRITE " ",LEXS
- if +LEXT>0&($$OUT>0)
- WRITE " (#",+LEXT,")"
- if $$OUT>0
- WRITE !
- +10 QUIT
- TSKM(X) ; TaskMan
- +1 NEW ZT,ZTUCI,ZTKEY,ZTDESC,ZTDTH,ZTIO,ZTQUEUED,ZTREQ,ZTRTN,ZTSAVE,ZTSK,LEXRUN,LEXTMP,Y
- SET ZTDESC=$GET(X)
- if '$LENGTH(ZTDESC)
- QUIT 0
- +2 KILL LEXTMP
- DO DESC^%ZTLOAD(ZTDESC,"LEXTMP")
- if $ORDER(LEXTMP(0))'>0
- QUIT 0
- SET LEXRUN=0
- SET ZTSK=0
- FOR
- SET ZTSK=$ORDER(LEXTMP(ZTSK))
- if +ZTSK'>0
- QUIT
- Begin DoDot:1
- +3 DO STAT^%ZTLOAD
- if +($GET(ZTSK(0)))'>0
- QUIT
- if "^0^3^4^5^"[("^"_+($GET(ZTSK(1)))_"^")
- QUIT
- +4 if +($GET(ZTSK(1)))=1
- SET LEXRUN=("1^"_ZTSK_"^"_ZTDESC_"^The task is scheduled to run")
- +5 if +($GET(ZTSK(1)))=2
- SET LEXRUN=("2^"_ZTSK_"^"_ZTDESC_"^The task is running")
- End DoDot:1
- +6 SET X=LEXRUN
- +7 QUIT X
- +8 ;
- +9 ; Miscellaneous
- DT ; Display ^TMP
- +1 NEW LEXT,LEXBEG,LEXEND,LEXHDR,LEXDIRA
- +2 if $DATA(^TMP("LEXWU",$JOB,"RESULTS","CHG"))!($DATA(^TMP("LEXWU",$JOB,"RESULTS","TIM")))
- WRITE !
- +3 if $DATA(LEXMENU)&($LENGTH($GET(IOF)))
- WRITE @IOF
- +4 SET LEXHDR=""
- SET LEXT=$GET(^TMP("LEXWU",$JOB,"RESULTS","CHG","LEX"))
- +5 if +LEXT>0
- WRITE !,?3,"Lexicon Changes ",?32,$JUSTIFY(LEXT,8)
- if +LEXT'>0
- WRITE !,?3,"Lexicon Changes ",?32,$JUSTIFY("None",8)
- +6 SET (LEXT,LEXHDR)=$GET(^TMP("LEXWU",$JOB,"RESULTS","CHG","DIA"))
- +7 if +LEXT'>0
- WRITE !,?3,"ICD Diagnosis Changes ",?32,$JUSTIFY("None",8)
- IF +LEXT>0
- Begin DoDot:1
- +8 WRITE !,?3,"ICD Diagnosis Changes ",?32,$JUSTIFY(LEXT,8)
- +9 SET LEXT=$GET(^TMP("LEXWU",$JOB,"RESULTS","CHG","ICD"))
- +10 IF +LEXT>0
- if +LEXHDR'>0
- WRITE !,?3
- if +LEXHDR>0
- WRITE !,?5
- WRITE "ICD-9 Diagnosis Changes ",?32,$JUSTIFY(LEXT,8)
- +11 SET LEXT=$GET(^TMP("LEXWU",$JOB,"RESULTS","CHG","10D"))
- +12 IF +LEXT>0
- if +LEXHDR'>0
- WRITE !,?3
- if +LEXHDR>0
- WRITE !,?5
- WRITE "ICD-10 Diagnosis Changes ",?32,$JUSTIFY(LEXT,8)
- End DoDot:1
- +13 SET (LEXT,LEXHDR)=""
- +14 if +LEXT'>0
- WRITE !,?3,"ICD Procedure Changes ",?32,$JUSTIFY("None",8)
- IF +LEXT>0
- Begin DoDot:1
- +15 WRITE !,?3,"ICD Procedure Changes ",?32,$JUSTIFY(LEXT,8)
- +16 SET LEXT=$GET(^TMP("LEXWU",$JOB,"RESULTS","CHG","ICP"))
- +17 IF +LEXT>0
- if +LEXHDR'>0
- WRITE !,?3
- if +LEXHDR>0
- WRITE !,?5
- WRITE "ICD-9 Procedure Changes ",?32,$JUSTIFY(LEXT,8)
- +18 SET LEXT=$GET(^TMP("LEXWU",$JOB,"RESULTS","CHG","10P"))
- +19 IF +LEXT>0
- if +LEXHDR'>0
- WRITE !,?3
- if +LEXHDR>0
- WRITE !,?5
- WRITE "ICD-10 Procedures Changes ",?32,$JUSTIFY(LEXT,8)
- End DoDot:1
- +20 SET LEXT=$GET(^TMP("LEXWU",$JOB,"RESULTS","CHG","SCT"))
- +21 if +LEXT>0
- WRITE !,?3,"SNOMED CT Changes ",?32,$JUSTIFY(LEXT,8)
- if +LEXT'>0
- WRITE !,?3,"SNOMED CT Changes ",?32,$JUSTIFY("None",8)
- +22 SET LEXT=$GET(^TMP("LEXWU",$JOB,"RESULTS","CHG","SCC"))
- +23 if +LEXT>0
- WRITE !,?3,"TITLE 38 Changes ",?32,$JUSTIFY(LEXT,8)
- if +LEXT'>0
- WRITE !,?3,"TITLE 38 Changes ",?32,$JUSTIFY("None",8)
- +24 if ($DATA(^TMP("LEXWU",$JOB,"RESULTS","TIM")))
- WRITE !
- +25 SET (LEXBEG,LEXT)=$GET(^TMP("LEXWU",$JOB,"RESULTS","TIM","BEG"))
- +26 if $LENGTH($PIECE(LEXT,"^",1))&($LENGTH($PIECE(LEXT,"^",2)))
- WRITE !,?3,$PIECE(LEXT,"^",1),?14,$PIECE(LEXT,"^",2)
- +27 SET (LEXEND,LEXT)=$GET(^TMP("LEXWU",$JOB,"RESULTS","TIM","END"))
- +28 if $LENGTH($PIECE(LEXT,"^",1))&($LENGTH($PIECE(LEXT,"^",2)))
- WRITE !,?3,$PIECE(LEXT,"^",1),?14,$PIECE(LEXT,"^",2)
- +29 SET LEXT=$GET(^TMP("LEXWU",$JOB,"RESULTS","TIM","TIM"))
- +30 if '$LENGTH(LEXT)&($LENGTH($PIECE(LEXBEG,"^",2)))&($PIECE(LEXBEG,"^",2)=$PIECE(LEXEND,"^",2))
- SET LEXT="Elapsed: "_"^00:00:00"
- +31 if $LENGTH($PIECE(LEXT,"^",1))&($LENGTH($PIECE(LEXT,"^",2)))
- WRITE !,?3,$PIECE(LEXT,"^",1),?14,$PIECE(LEXT,"^",2)
- +32 if $DATA(^TMP("LEXWU",$JOB,"RESULTS","CHG"))!($DATA(^TMP("LEXWU",$JOB,"RESULTS","TIM")))
- WRITE !
- +33 if $DATA(LEXMENU)&('$DATA(^TMP("LEXWU",$JOB,"RESULTS")))
- WRITE !
- +34 SET LEXDIRA=" Press <Return> to continue "
- if $DATA(LEXMENU)
- DO CONT^LEXWUM
- if '$DATA(LEXMENU)
- WRITE !
- +35 NEW LEXMENU
- +36 QUIT
- LISTI ; List Inactive Keywords
- +1 NEW LEXORD,LEXC
- SET LEXC=8
- SET LEXORD=""
- FOR
- SET LEXORD=$ORDER(^LEX(757.071,"B",LEXORD))
- if '$LENGTH(LEXORD)
- QUIT
- Begin DoDot:1
- +2 NEW LEXIEN
- SET LEXIEN=0
- FOR
- SET LEXIEN=$ORDER(^LEX(757.071,"B",LEXORD,+LEXIEN))
- if +LEXIEN'>0
- QUIT
- Begin DoDot:2
- +3 NEW LEXKEY,LEXEFF,LEXINA,LEXINC,LEXSTA
- SET LEXSTA=$$INA(LEXIEN)
- if +LEXSTA'>0
- QUIT
- +4 SET LEXKEY=$PIECE($GET(^LEX(757.071,+LEXIEN,0)),"^",1)
- SET LEXEFF=$PIECE($GET(^LEX(757.071,+LEXIEN,0)),"^",2)
- +5 SET LEXINA=$PIECE($GET(^LEX(757.071,+LEXIEN,0)),"^",3)
- SET LEXINC=$PIECE($GET(^LEX(757.071,+LEXIEN,0)),"^",4)
- +6 IF $DATA(LEXCAP)
- WRITE !,LEXKEY,"~",LEXINC,"~",$SELECT(LEXEFF?7N:$$FMTE^XLFDT(LEXEFF,"5Z"),1:""),"~",$SELECT(LEXINA?7N:$$FMTE^XLFDT(LEXINA,"5Z"),1:""),"|"
- QUIT
- +7 WRITE !,LEXKEY
- if $LENGTH($GET(LEXINC))
- WRITE ?LEXC," ",LEXINC
- +8 WRITE !,?LEXC," Effective:",?(LEXC+12)," ",$$FMTE^XLFDT(LEXEFF,"5Z")
- +9 if $LENGTH(LEXINA)
- WRITE ?(LEXC+24)," Inactive:",(LEXC+35)," ",$$FMTE^XLFDT(LEXINA,"5Z")
- +10 WRITE !
- End DoDot:2
- End DoDot:1
- +11 KILL LEXAFT
- +12 QUIT
- LISTA ; List Active Keywords
- +1 NEW LEXORD,LEXC
- SET LEXC=8
- SET LEXORD=""
- FOR
- SET LEXORD=$ORDER(^LEX(757.071,"B",LEXORD))
- if '$LENGTH(LEXORD)
- QUIT
- Begin DoDot:1
- +2 NEW LEXIEN
- SET LEXIEN=0
- FOR
- SET LEXIEN=$ORDER(^LEX(757.071,"B",LEXORD,+LEXIEN))
- if +LEXIEN'>0
- QUIT
- Begin DoDot:2
- +3 NEW LEXKEY,LEXEFF,LEXINA,LEXINC,LEXSTA
- SET LEXSTA=$$ACT(LEXIEN)
- if +LEXSTA'>0
- QUIT
- +4 SET LEXKEY=$PIECE($GET(^LEX(757.071,+LEXIEN,0)),"^",1)
- SET LEXEFF=$PIECE($GET(^LEX(757.071,+LEXIEN,0)),"^",2)
- +5 SET LEXINA=$PIECE($GET(^LEX(757.071,+LEXIEN,0)),"^",3)
- SET LEXINC=$PIECE($GET(^LEX(757.071,+LEXIEN,0)),"^",4)
- +6 IF $DATA(LEXCAP)
- WRITE !,LEXKEY,"~",LEXINC,"~",$SELECT(LEXEFF?7N:$$FMTE^XLFDT(LEXEFF,"5Z"),1:""),"~",$SELECT(LEXINA?7N:$$FMTE^XLFDT(LEXINA,"5Z"),1:""),"|"
- QUIT
- +7 WRITE !,LEXKEY
- if $LENGTH($GET(LEXINC))
- WRITE ?LEXC," ",LEXINC
- +8 WRITE !,?LEXC," Effective:",?(LEXC+12)," ",$$FMTE^XLFDT(LEXEFF,"5Z")
- +9 if $LENGTH(LEXINA)
- WRITE ?(LEXC+24)," Inactive:",(LEXC+35)," ",$$FMTE^XLFDT(LEXINA,"5Z")
- +10 WRITE !
- End DoDot:2
- End DoDot:1
- +11 KILL LEXAFT
- +12 QUIT
- INA(X) ; Inactive before Today or after LEXAFT (optional)
- +1 NEW LEXI,LEX1,LEX2,LEXA,LEXT,LEXO
- SET LEXT=$$DT^XLFDT
- SET LEXI=+($GET(X))
- SET LEX1=+($PIECE($PIECE($GET(^LEX(757.071,+LEXI,0)),"^",2),".",1))
- if LEX1'?7N
- QUIT "0^1"
- +2 SET LEX2=+($PIECE($PIECE($GET(^LEX(757.071,+LEXI,0)),"^",3),".",1))
- if LEX2'?7N
- QUIT "0^2"
- SET LEXA=$GET(LEXAFT)
- SET LEXO=0
- +3 ; If Inactive after LEXAFT and not later Active 1
- +4 if ($GET(LEXA)?7N)&((LEX2+.001)>LEXA)&((LEX2+.001)>LEX1)
- QUIT "1^3"
- +5 ; If Inactive after LEXAFT and later Active 0
- +6 if ($GET(LEXA)?7N)&((LEX2+.001)>LEXA)&((LEX1+.001)>LEX2)
- QUIT "0^4"
- +7 ; If Inactive before LEXAFT and not later Active 0
- +8 if ($GET(LEXA)?7N)&((LEXA+.001)>LEX2)&((LEX2+.001)>LEX1)
- QUIT "0^5"
- +9 ; If Inactive 1
- +10 if (LEX2+.001)>LEX1
- QUIT "1^6"
- +11 ; Else Active 0
- +12 QUIT "0^7"
- ACT(X) ; Active before Today or after LEXAFT (optional)
- +1 NEW LEXI,LEX1,LEX2,LEXA,LEXT,LEXO
- SET LEXT=$$DT^XLFDT
- SET LEXI=+($GET(X))
- SET LEX1=+($PIECE($PIECE($GET(^LEX(757.071,+LEXI,0)),"^",2),".",1))
- if LEX1'?7N
- QUIT "0^1"
- +2 SET LEX2=+($PIECE($PIECE($GET(^LEX(757.071,+LEXI,0)),"^",3),".",1))
- SET LEXA=$GET(LEXAFT)
- SET LEXO=0
- +3 ; If Active after LEXAFT and not later Inctive 1
- +4 if ($GET(LEXA)?7N)&((LEX1+.001)>LEXA)&((LEX1+.001)>LEX2)
- QUIT "1^2"
- +5 ; If Active after LEXAFT and later Inactive 0
- +6 if ($GET(LEXA)?7N)&((LEX1+.001)>LEXA)&((LEX2+.001)>LEX1)
- QUIT "0^3"
- +7 ; If Active before LEXAFT and not later Inactive 0
- +8 if ($GET(LEXA)?7N)&((LEXA+.001)>LEX1)&((LEX1+.001)>LEX2)
- QUIT "0^4"
- +9 ; If Active 1
- +10 if (LEX1+.001)>LEX2
- QUIT "1^5"
- +11 ; Else Inactive 0
- +12 QUIT "0^6"
- OUT(X) ; Output
- +1 if $DATA(LEXQUIET)
- QUIT 0
- if $DATA(ZTQUEUED)
- QUIT 0
- +2 QUIT 1
- TM(X,Y) ; Trim Spaces
- +1 SET X=$GET(X)
- if X=""
- QUIT X
- SET Y=$EXTRACT($GET(Y),1)
- if '$LENGTH(Y)
- SET Y=" "
- FOR
- if $EXTRACT(X,1)'=Y
- QUIT
- SET X=$EXTRACT(X,2,$LENGTH(X))
- +2 FOR
- if $EXTRACT(X,$LENGTH(X))'=Y
- QUIT
- SET X=$EXTRACT(X,1,($LENGTH(X)-1))
- +3 QUIT X
- ZERO ; ^LEX(757.071,0)
- +1 NEW LEXIEN,LEXP1,LEXP2,LEXP3,LEXP4
- SET (LEXIEN,LEXP3,LEXP4)=0
- SET LEXP1=$PIECE($GET(^LEX(757.071,0)),"^",1)
- SET LEXP2=$PIECE($GET(^LEX(757.071,0)),"^",2)
- +2 if '$LENGTH(LEXP1)
- QUIT
- if '$LENGTH(LEXP2)
- QUIT
- if LEXP2'["757.071"
- QUIT
- FOR
- SET LEXIEN=$ORDER(^LEX(757.071,LEXIEN))
- if +LEXIEN'>0
- QUIT
- SET LEXP4=LEXP4+1
- +3 SET LEXP3=$ORDER(^LEX(757.071," "),-1)
- if LEXP3'>0
- SET LEXP3=""
- if LEXP4>0
- SET ^LEX(757.071,0)=LEXP1_"^"_LEXP2_"^"_LEXP3_"^"_LEXP4
- +4 QUIT
- PAUSE(X) ; Pause Monitor
- +1 NEW LEXCONT,LEXPMT
- SET LEXPMT=" Press <Return> to continue or ""^"" to exit "
- WRITE !!,LEXPMT
- READ LEXCONT:2
- if LEXCONT["^"
- QUIT "^"
- +2 QUIT ""
- CONT ; Continue
- +1 NEW LEXCONT,LEXPMT
- IF IOST["P-"
- USE IO
- if $LENGTH($GET(IOF))
- WRITE @IOF
- QUIT
- +2 SET LEXPMT=" Press <Return> to continue "
- if $LENGTH($GET(LEXDIRA))
- SET LEXPMT=LEXDIRA
- +3 if '$LENGTH($GET(LEXDIRA))
- WRITE !
- WRITE !,LEXPMT
- READ LEXCONT:660
- NEW LEXDIRA
- +4 IF '$TEST!(LEXCONT["^")
- if $LENGTH($GET(IOF))
- WRITE @IOF
- KILL LEXCONT
- SET LEXIT=1
- QUIT
- +5 if $LENGTH($GET(IOF))
- WRITE @IOF
- +6 QUIT
- ENV(X) ; Environment
- +1 DO HOME^%ZIS
- SET U="^"
- SET DT=$$DT^XLFDT
- SET DTIME=300
- KILL POP
- +2 NEW LEXNM
- SET LEXNM=$$GET1^DIQ(200,(DUZ_","),.01)
- +3 IF '$LENGTH(LEXNM)
- WRITE !!,?5,"Invalid/Missing DUZ"
- NEW LEXCAP,LEXCHK,LEXONE
- QUIT 0
- +4 QUIT 1