- LEXXII ;ISL/KER - Lexicon Status (Install Info) ;05/23/2017
- ;;2.0;LEXICON UTILITY;**32,46,49,50,41,59,73,80,103**;Sep 23, 1996;Build 2
- ;
- ; Global Variables
- ; ^%ZOSF("UCI") ICR 10096
- ; ^LEXM(0) N/A
- ; ^TMP("LEX*",$J) SACC 2.3.2.5.1
- ; ^TMP("LEX*",$J) SACC 2.3.2.5.1
- ; ^VA(200) ICR 10060
- ;
- ; External References
- ; $$FMDIFF^XLFDT ICR 10103
- ; $$FMTE^XLFDT ICR 10103
- ; $$GET1^DIQ ICR 2056
- ; $$NOW^XLFDT ICR 10103
- ; FIND^DIC ICR 2051
- ; GETS^DIQ ICR 2056
- ; $$PROD^XUPROD ICR 4440
- ;
- ; Variables NEWed or KILLed Elsewhere
- ; LEXACCT NEWed by LEXXFI sending message
- ; LEXID NEWed by LEXXFI sending message
- ; LEXCRE NEWed by LEXXGI loading data
- ; LEXIGHF NEWed by Post Install routine LEX20nnP
- ; XPDA NEWed by KIDS during Install
- ;
- EN ; Main Entry
- N LEXSUB S LEXSUB=$G(LEXID) S:LEXSUB="" LEXSUB="LEXXII" K ^TMP(LEXSUB,$J) D II
- Q
- ;
- II ; Install Information
- N LEXT,LEXA,LEXACT,LEXB,LEXD,LEXE,LEXL,LEXU,LEXN,LEXP,LEXPROF,LEXDA H 2
- S LEXA="",LEXACT=$G(LEXACCT),LEXPRO=$G(LEXPRO),LEXPRON=$G(LEXPRON)
- S:'$L(LEXPRON) LEXPRON="LEXICAL SERVICES UPDATE" S:'$L(LEXPRO) LEXPRO=$G(^LEXM(0,"PRO")) S:+LEXPRO>0 LEXPRO=$$ED(LEXPRO)
- I $L($G(LEXSUBH)) D
- . N LEXL S LEXT=$G(LEXSUBH),$P(LEXL,"=",$L(LEXT))="=" D TL(LEXT),TL(LEXL),BL
- I '$L($G(LEXSUBH)) D
- . S LEXT="Lexicon/ICD/CPT Installation" D TL(LEXT)
- . S LEXT="============================" D TL(LEXT),BL
- S LEXD=$$ASOF,LEXA=$$UCI,LEXU=$$USR,LEXN=$P(LEXU,"^",1)
- S:$L($P(LEXACT,"^",1))&($L($P(LEXACT,"^",1))) LEXA=LEXACT
- S LEXP=$P(LEXU,"^",2),LEXN=$$PM^LEXXFI7(LEXN)
- S:$L(LEXD) LEXT=" As of: "_LEXD
- D:$L(LEXD) TL(LEXT)
- S LEXT="" S:$L(LEXA) LEXT=" In Account: "_$S($L($P(LEXA,"^",1)):"[",1:"")_$P(LEXA,"^",1)_$S($L($P(LEXA,"^",2)):"]",1:"")
- S:$L(LEXT)&($L($P(LEXA,"^",2))) LEXT=LEXT_" "_$P(LEXA,"^",2)
- D:$L(LEXA) TL(LEXT)
- S LEXT="" S:$L(LEXU) LEXT=" Maint By: "
- S:$L(LEXN) LEXT=LEXT_LEXN
- S:$L(LEXP)&($L(LEXN)) LEXT=LEXT_" "_LEXP
- D:$L(LEXT)&(LEXT'["UNKNOWN") TL(LEXT)
- S LEXT="" S:$L($G(LEXBUILD)) LEXT=" Build: "_$G(LEXBUILD)
- D:$L(LEXT) TL(LEXT)
- S LEXT="" S:$L($G(LEXIGHF)) LEXT=" Host File: "_$G(LEXIGHF)
- S:$L(LEXT)&($L($G(LEXCRE)))&($P($G(LEXCRE),".",1)?7N) LEXT=LEXT_" (Created "_$$ED($G(LEXCRE))_")"
- S:'$L(LEXT)&($L($G(LEXCRE)))&($P($G(LEXCRE),".",1)?7N) LEXT=" Created: "_$$ED($G(LEXCRE))
- D:$L(LEXT) TL(LEXT)
- S LEXT="" I $O(LEXPROC(" "),-1)'>1,$L($G(LEXPRO))&($L($G(LEXPRON))),$O(LEXPROC(" "),-1)'>1 D
- . S LEXT=" Protocol: "_LEXPRON D BL,TL(LEXT)
- . S LEXT=" Invoked: "_LEXPRO D TL(LEXT)
- . K LEXPRO,LEXPRON,^LEXM(0,"PRO")
- I $O(LEXPROC(" "),-1)>1 D
- . N LEXT,LEXI,LEXC,LEXT S LEXT=$$TRIM($G(LEXPROC(1))) Q:'$L(LEXT) D BL,TL((" "_LEXT))
- . S LEXC=0,LEXI=1 F S LEXI=$O(LEXPROC(LEXI)) Q:+LEXI'>0 D
- . . N LEXT S LEXT=$$TRIM($TR($G(LEXPROC(LEXI)),"'","")) Q:'$L(LEXT) S LEXC=LEXC+1 D TL((" "_LEXT))
- S LEXB=$$SS($G(LEXBUILD)),LEXE=$P(LEXB,"^",2),LEXL=$P(LEXB,"^",3),LEXB=$P(LEXB,"^",1)
- I '$D(LEXNOTIM),$P(LEXB,".",1)?7N!($P(LEXB,".",2)?7N)!($P(LEXB,".",3)[":") D
- . D BL
- . I $P(LEXB,".",1)?7N D
- . . S LEXT="" S LEXT=" Started: "_$$ED($G(LEXB)) D TL(LEXT)
- . I $P(LEXE,".",1)?7N D
- . . S LEXT="" S LEXT=" Finished: "_$$ED($G(LEXE)) D TL(LEXT)
- . I $L(LEXL) D
- . . S LEXT="" S LEXT=" Elapsed: "_$$ED($G(LEXL)) D TL(LEXT)
- I $L($G(LEXRES)) D
- . S LEXT="" S LEXT=" Data: "_$G(LEXRES) D BL,TL(LEXT)
- D BL
- Q
- ;
- ; Miscellaneous
- UCI(X) ; UCI where Lexicon is installed
- N LEXU,LEXP,LEXT,Y X ^%ZOSF("UCI") S LEXU=Y,LEXP=""
- S LEXP=$S($$PROD^XUPROD(1):" (Production)",1:" (Test)")
- S:LEXU[","&($L($P(LEXU,",",1))>3) LEXU=$P(LEXU,",",1)
- S X="",$P(X,"^",1)=LEXU,$P(X,"^",2)=LEXP
- Q X
- USR(LEX) ; User/Person
- N LEXDUZ,LEXPH,LEXNM
- S LEX=+($G(DUZ)),LEXNM=$$GET1^DIQ(200,+LEX,.01) Q:'$L(LEXNM) "UNKNOWN^"
- S LEXDUZ=LEX S LEXPH=$$GET1^DIQ(200,+LEXDUZ,.132) S:LEXPH="" LEXPH=$$GET1^DIQ(200,+LEXDUZ,.131)
- S:LEXPH="" LEXPH=$$GET1^DIQ(200,+LEXDUZ,.133) S:LEXPH="" LEXPH=$$GET1^DIQ(200,+LEXDUZ,.134)
- S LEXDUZ=$$GET1^DIQ(200,+LEX,.01),LEX=LEXDUZ_"^"_LEXPH Q LEX
- SS(LEX) ; Start/Stop Times
- N LEXDA,LEXOUT,LEXIENS,LEXB,LEXBUILD,LEXB,LEXE,LEXL
- S LEXBUILD=$G(LEX),LEXD=0 S:$L(LEXBUILD) LEXD=$$DDA(LEXBUILD)
- S LEXDA=+($G(XPDA))
- I +LEXDA>0 D
- . S LEXIENS=LEXDA_"," D GETS^DIQ(9.7,LEXIENS,"11;17","I","LEXOUT")
- . S LEXL=0,LEXB=$G(LEXOUT(9.7,LEXIENS,11,"I"))
- . S:$L($G(LEXSTART))&($P($G(LEXSTART),".",1)?7N) LEXB=$G(LEXSTART)
- . S LEXE=$$NOW^XLFDT S:+LEXB>0&(+LEXE>0) LEXL=$$EP(LEXB,LEXE)
- . S LEX=LEXB_"^"_LEXE S:$L(LEXL) $P(LEX,"^",3)=LEXL
- I +LEXDA=0 D
- . S LEX="" S LEXDA=+($G(LEXD)) S LEXL="",LEXB=$P($G(LEXD),"^",2)
- . S:$L($G(LEXSTART))&($P($G(LEXSTART),".",1)?7N) LEXB=$G(LEXSTART)
- . S LEXE=$$NOW^XLFDT S:+LEXB>0&(+LEXE>0) LEXL=$$EP(LEXB,LEXE)
- . S LEX=LEXB_"^"_LEXE S:$L(LEXL) $P(LEX,"^",3)=LEXL
- Q LEX
- DDA(LEX) ; Get Default DA of Build LEX
- N LEXB,LEXE,LEXOUT,LEXMSG,LEXI S LEXB=$G(LEX) Q:'$L(LEXB) ""
- D FIND^DIC(9.7,,"11I;17I","BP",LEXB,,"B",,,"LEXOUT","LEXMSG")
- S LEXI=+($O(LEXOUT("DILIST"," "),-1))
- S LEXB=$G(LEXOUT("DILIST",+LEXI,0))
- S LEXI=$P(LEXB,"^",1),LEXE=$P(LEXB,"^",4),LEXB=$P(LEXB,"^",3)
- Q:+($G(LEXI))'>0 "" Q:+($G(LEXB))'>0 "" S:+LEXE'>0 LEXE=$$NOW^XLFDT
- S LEX=LEXI_"^"_LEXB_"^"_LEXE
- Q LEX
- ASOF(LEX) ; As of date/time
- S X=$$ED($$NOW^XLFDT) Q X
- ED(LEX) ; External Date MM/DD/YYYY TT:TT
- S LEX=$$FMTE^XLFDT($G(LEX),"1Z")
- S:LEX["@" LEX=$P(LEX,"@",1)_" "_$P(LEX,"@",2,4000) Q LEX
- Q LEX
- EP(X,Y) ; Elapsed Time (Begin, End)
- N LEXTIM,LEXBEG,LEXEND
- S LEXBEG=$G(X),LEXEND=$G(Y) Q:+LEXBEG'>0 "" Q:+LEXEND'>0 ""
- S LEXTIM=$$FMDIFF^XLFDT(LEXEND,LEXBEG,2) Q:+LEXTIM'>0 "00:00:00"
- S LEXTIM=$$TIM(LEXTIM)
- Q LEXTIM
- TIM(X) ; Format Time Elapsed
- N LEXD,LEXH,LEXM,LEXS,LEXT,LEXV S X=+($G(X)) Q:X'>0 "00:00:00"
- S LEXD=X\86400 S LEXV=LEXD*86400 S:+LEXV>0&(LEXV<X) X=X-LEXV
- S LEXH=X\3600 S LEXV=LEXH*3600 S:+LEXV>0&(LEXV<X) X=X-LEXV
- S:$L(LEXH)<2 LEXH="0"_LEXH S:$L(LEXH)<2 LEXH="0"_LEXH
- S LEXM=X\60 S LEXV=LEXM*60 S:+LEXV>0&(LEXV<X) X=X-LEXV
- S:$L(LEXM)<2 LEXM="0"_LEXM S:$L(LEXM)<2 LEXM="0"_LEXM
- S LEXS=X S:$L(LEXS)<2 LEXS="0"_LEXS S:$L(LEXS)<2 LEXS="0"_LEXS
- S LEXT="" S:+LEXD>0 LEXT=+LEXD_" day"_$S(+LEXD>1:"s",1:"")_" "
- S LEXT=LEXT_LEXH_":"_LEXM_":"_LEXS,X=LEXT
- Q X
- BL ; Blank Line
- D TL("") Q
- TL(LEXX) ; Text Line
- S LEXSUB=$G(LEXSUB) S:'$L(LEXSUB) LEXSUB="LEXXII"
- I '$D(^TMP(LEXSUB,$J,1)) S ^TMP(LEXSUB,$J,1)=" ",^TMP(LEXSUB,$J,0)=1
- N LEXNX S LEXNX=$O(^TMP(LEXSUB,$J," "),-1),LEXNX=LEXNX+1
- S ^TMP(LEXSUB,$J,LEXNX)=" "_$G(LEXX),^TMP(LEXSUB,$J,0)=LEXNX
- Q
- ST ; Show Temp Array
- S LEXSUB=$G(LEXSUB) S:'$L(LEXSUB) LEXSUB="LEXXII"
- N LEXN,LEXC S LEXN="^TMP("""_LEXSUB_""","_$J_")",LEXC="^TMP("""_LEXSUB_""","_$J_","
- F S LEXN=$Q(@LEXN) Q:LEXN=""!(LEXN'[LEXC) D
- . Q:LEXN[",0)" W !,@LEXN
- Q
- TRIM(X) ; Trim Spaces
- S X=$G(X) Q:X="" X F Q:$E(X,1)'=" " S X=$E(X,2,$L(X))
- F Q:$E(X,$L(X))'=" " S X=$E(X,1,($L(X)-1))
- Q X
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HLEXXII 7248 printed Mar 13, 2025@21:14:50 Page 2
- LEXXII ;ISL/KER - Lexicon Status (Install Info) ;05/23/2017
- +1 ;;2.0;LEXICON UTILITY;**32,46,49,50,41,59,73,80,103**;Sep 23, 1996;Build 2
- +2 ;
- +3 ; Global Variables
- +4 ; ^%ZOSF("UCI") ICR 10096
- +5 ; ^LEXM(0) N/A
- +6 ; ^TMP("LEX*",$J) SACC 2.3.2.5.1
- +7 ; ^TMP("LEX*",$J) SACC 2.3.2.5.1
- +8 ; ^VA(200) ICR 10060
- +9 ;
- +10 ; External References
- +11 ; $$FMDIFF^XLFDT ICR 10103
- +12 ; $$FMTE^XLFDT ICR 10103
- +13 ; $$GET1^DIQ ICR 2056
- +14 ; $$NOW^XLFDT ICR 10103
- +15 ; FIND^DIC ICR 2051
- +16 ; GETS^DIQ ICR 2056
- +17 ; $$PROD^XUPROD ICR 4440
- +18 ;
- +19 ; Variables NEWed or KILLed Elsewhere
- +20 ; LEXACCT NEWed by LEXXFI sending message
- +21 ; LEXID NEWed by LEXXFI sending message
- +22 ; LEXCRE NEWed by LEXXGI loading data
- +23 ; LEXIGHF NEWed by Post Install routine LEX20nnP
- +24 ; XPDA NEWed by KIDS during Install
- +25 ;
- EN ; Main Entry
- +1 NEW LEXSUB
- SET LEXSUB=$GET(LEXID)
- if LEXSUB=""
- SET LEXSUB="LEXXII"
- KILL ^TMP(LEXSUB,$JOB)
- DO II
- +2 QUIT
- +3 ;
- II ; Install Information
- +1 NEW LEXT,LEXA,LEXACT,LEXB,LEXD,LEXE,LEXL,LEXU,LEXN,LEXP,LEXPROF,LEXDA
- HANG 2
- +2 SET LEXA=""
- SET LEXACT=$GET(LEXACCT)
- SET LEXPRO=$GET(LEXPRO)
- SET LEXPRON=$GET(LEXPRON)
- +3 if '$LENGTH(LEXPRON)
- SET LEXPRON="LEXICAL SERVICES UPDATE"
- if '$LENGTH(LEXPRO)
- SET LEXPRO=$GET(^LEXM(0,"PRO"))
- if +LEXPRO>0
- SET LEXPRO=$$ED(LEXPRO)
- +4 IF $LENGTH($GET(LEXSUBH))
- Begin DoDot:1
- +5 NEW LEXL
- SET LEXT=$GET(LEXSUBH)
- SET $PIECE(LEXL,"=",$LENGTH(LEXT))="="
- DO TL(LEXT)
- DO TL(LEXL)
- DO BL
- End DoDot:1
- +6 IF '$LENGTH($GET(LEXSUBH))
- Begin DoDot:1
- +7 SET LEXT="Lexicon/ICD/CPT Installation"
- DO TL(LEXT)
- +8 SET LEXT="============================"
- DO TL(LEXT)
- DO BL
- End DoDot:1
- +9 SET LEXD=$$ASOF
- SET LEXA=$$UCI
- SET LEXU=$$USR
- SET LEXN=$PIECE(LEXU,"^",1)
- +10 if $LENGTH($PIECE(LEXACT,"^",1))&($LENGTH($PIECE(LEXACT,"^",1)))
- SET LEXA=LEXACT
- +11 SET LEXP=$PIECE(LEXU,"^",2)
- SET LEXN=$$PM^LEXXFI7(LEXN)
- +12 if $LENGTH(LEXD)
- SET LEXT=" As of: "_LEXD
- +13 if $LENGTH(LEXD)
- DO TL(LEXT)
- +14 SET LEXT=""
- if $LENGTH(LEXA)
- SET LEXT=" In Account: "_$SELECT($LENGTH($PIECE(LEXA,"^",1)):"[",1:"")_$PIECE(LEXA,"^",1)_$SELECT($LENGTH($PIECE(LEXA,"^",2)):"]",1:"")
- +15 if $LENGTH(LEXT)&($LENGTH($PIECE(LEXA,"^",2)))
- SET LEXT=LEXT_" "_$PIECE(LEXA,"^",2)
- +16 if $LENGTH(LEXA)
- DO TL(LEXT)
- +17 SET LEXT=""
- if $LENGTH(LEXU)
- SET LEXT=" Maint By: "
- +18 if $LENGTH(LEXN)
- SET LEXT=LEXT_LEXN
- +19 if $LENGTH(LEXP)&($LENGTH(LEXN))
- SET LEXT=LEXT_" "_LEXP
- +20 if $LENGTH(LEXT)&(LEXT'["UNKNOWN")
- DO TL(LEXT)
- +21 SET LEXT=""
- if $LENGTH($GET(LEXBUILD))
- SET LEXT=" Build: "_$GET(LEXBUILD)
- +22 if $LENGTH(LEXT)
- DO TL(LEXT)
- +23 SET LEXT=""
- if $LENGTH($GET(LEXIGHF))
- SET LEXT=" Host File: "_$GET(LEXIGHF)
- +24 if $LENGTH(LEXT)&($LENGTH($GET(LEXCRE)))&($PIECE($GET(LEXCRE),".",1)?7N)
- SET LEXT=LEXT_" (Created "_$$ED($GET(LEXCRE))_")"
- +25 if '$LENGTH(LEXT)&($LENGTH($GET(LEXCRE)))&($PIECE($GET(LEXCRE),".",1)?7N)
- SET LEXT=" Created: "_$$ED($GET(LEXCRE))
- +26 if $LENGTH(LEXT)
- DO TL(LEXT)
- +27 SET LEXT=""
- IF $ORDER(LEXPROC(" "),-1)'>1
- IF $LENGTH($GET(LEXPRO))&($LENGTH($GET(LEXPRON)))
- IF $ORDER(LEXPROC(" "),-1)'>1
- Begin DoDot:1
- +28 SET LEXT=" Protocol: "_LEXPRON
- DO BL
- DO TL(LEXT)
- +29 SET LEXT=" Invoked: "_LEXPRO
- DO TL(LEXT)
- +30 KILL LEXPRO,LEXPRON,^LEXM(0,"PRO")
- End DoDot:1
- +31 IF $ORDER(LEXPROC(" "),-1)>1
- Begin DoDot:1
- +32 NEW LEXT,LEXI,LEXC,LEXT
- SET LEXT=$$TRIM($GET(LEXPROC(1)))
- if '$LENGTH(LEXT)
- QUIT
- DO BL
- DO TL((" "_LEXT))
- +33 SET LEXC=0
- SET LEXI=1
- FOR
- SET LEXI=$ORDER(LEXPROC(LEXI))
- if +LEXI'>0
- QUIT
- Begin DoDot:2
- +34 NEW LEXT
- SET LEXT=$$TRIM($TRANSLATE($GET(LEXPROC(LEXI)),"'",""))
- if '$LENGTH(LEXT)
- QUIT
- SET LEXC=LEXC+1
- DO TL((" "_LEXT))
- End DoDot:2
- End DoDot:1
- +35 SET LEXB=$$SS($GET(LEXBUILD))
- SET LEXE=$PIECE(LEXB,"^",2)
- SET LEXL=$PIECE(LEXB,"^",3)
- SET LEXB=$PIECE(LEXB,"^",1)
- +36 IF '$DATA(LEXNOTIM)
- IF $PIECE(LEXB,".",1)?7N!($PIECE(LEXB,".",2)?7N)!($PIECE(LEXB,".",3)[":")
- Begin DoDot:1
- +37 DO BL
- +38 IF $PIECE(LEXB,".",1)?7N
- Begin DoDot:2
- +39 SET LEXT=""
- SET LEXT=" Started: "_$$ED($GET(LEXB))
- DO TL(LEXT)
- End DoDot:2
- +40 IF $PIECE(LEXE,".",1)?7N
- Begin DoDot:2
- +41 SET LEXT=""
- SET LEXT=" Finished: "_$$ED($GET(LEXE))
- DO TL(LEXT)
- End DoDot:2
- +42 IF $LENGTH(LEXL)
- Begin DoDot:2
- +43 SET LEXT=""
- SET LEXT=" Elapsed: "_$$ED($GET(LEXL))
- DO TL(LEXT)
- End DoDot:2
- End DoDot:1
- +44 IF $LENGTH($GET(LEXRES))
- Begin DoDot:1
- +45 SET LEXT=""
- SET LEXT=" Data: "_$GET(LEXRES)
- DO BL
- DO TL(LEXT)
- End DoDot:1
- +46 DO BL
- +47 QUIT
- +48 ;
- +49 ; Miscellaneous
- UCI(X) ; UCI where Lexicon is installed
- +1 NEW LEXU,LEXP,LEXT,Y
- XECUTE ^%ZOSF("UCI")
- SET LEXU=Y
- SET LEXP=""
- +2 SET LEXP=$SELECT($$PROD^XUPROD(1):" (Production)",1:" (Test)")
- +3 if LEXU[","&($LENGTH($PIECE(LEXU,",",1))>3)
- SET LEXU=$PIECE(LEXU,",",1)
- +4 SET X=""
- SET $PIECE(X,"^",1)=LEXU
- SET $PIECE(X,"^",2)=LEXP
- +5 QUIT X
- USR(LEX) ; User/Person
- +1 NEW LEXDUZ,LEXPH,LEXNM
- +2 SET LEX=+($GET(DUZ))
- SET LEXNM=$$GET1^DIQ(200,+LEX,.01)
- if '$LENGTH(LEXNM)
- QUIT "UNKNOWN^"
- +3 SET LEXDUZ=LEX
- SET LEXPH=$$GET1^DIQ(200,+LEXDUZ,.132)
- if LEXPH=""
- SET LEXPH=$$GET1^DIQ(200,+LEXDUZ,.131)
- +4 if LEXPH=""
- SET LEXPH=$$GET1^DIQ(200,+LEXDUZ,.133)
- if LEXPH=""
- SET LEXPH=$$GET1^DIQ(200,+LEXDUZ,.134)
- +5 SET LEXDUZ=$$GET1^DIQ(200,+LEX,.01)
- SET LEX=LEXDUZ_"^"_LEXPH
- QUIT LEX
- SS(LEX) ; Start/Stop Times
- +1 NEW LEXDA,LEXOUT,LEXIENS,LEXB,LEXBUILD,LEXB,LEXE,LEXL
- +2 SET LEXBUILD=$GET(LEX)
- SET LEXD=0
- if $LENGTH(LEXBUILD)
- SET LEXD=$$DDA(LEXBUILD)
- +3 SET LEXDA=+($GET(XPDA))
- +4 IF +LEXDA>0
- Begin DoDot:1
- +5 SET LEXIENS=LEXDA_","
- DO GETS^DIQ(9.7,LEXIENS,"11;17","I","LEXOUT")
- +6 SET LEXL=0
- SET LEXB=$GET(LEXOUT(9.7,LEXIENS,11,"I"))
- +7 if $LENGTH($GET(LEXSTART))&($PIECE($GET(LEXSTART),".",1)?7N)
- SET LEXB=$GET(LEXSTART)
- +8 SET LEXE=$$NOW^XLFDT
- if +LEXB>0&(+LEXE>0)
- SET LEXL=$$EP(LEXB,LEXE)
- +9 SET LEX=LEXB_"^"_LEXE
- if $LENGTH(LEXL)
- SET $PIECE(LEX,"^",3)=LEXL
- End DoDot:1
- +10 IF +LEXDA=0
- Begin DoDot:1
- +11 SET LEX=""
- SET LEXDA=+($GET(LEXD))
- SET LEXL=""
- SET LEXB=$PIECE($GET(LEXD),"^",2)
- +12 if $LENGTH($GET(LEXSTART))&($PIECE($GET(LEXSTART),".",1)?7N)
- SET LEXB=$GET(LEXSTART)
- +13 SET LEXE=$$NOW^XLFDT
- if +LEXB>0&(+LEXE>0)
- SET LEXL=$$EP(LEXB,LEXE)
- +14 SET LEX=LEXB_"^"_LEXE
- if $LENGTH(LEXL)
- SET $PIECE(LEX,"^",3)=LEXL
- End DoDot:1
- +15 QUIT LEX
- DDA(LEX) ; Get Default DA of Build LEX
- +1 NEW LEXB,LEXE,LEXOUT,LEXMSG,LEXI
- SET LEXB=$GET(LEX)
- if '$LENGTH(LEXB)
- QUIT ""
- +2 DO FIND^DIC(9.7,,"11I;17I","BP",LEXB,,"B",,,"LEXOUT","LEXMSG")
- +3 SET LEXI=+($ORDER(LEXOUT("DILIST"," "),-1))
- +4 SET LEXB=$GET(LEXOUT("DILIST",+LEXI,0))
- +5 SET LEXI=$PIECE(LEXB,"^",1)
- SET LEXE=$PIECE(LEXB,"^",4)
- SET LEXB=$PIECE(LEXB,"^",3)
- +6 if +($GET(LEXI))'>0
- QUIT ""
- if +($GET(LEXB))'>0
- QUIT ""
- if +LEXE'>0
- SET LEXE=$$NOW^XLFDT
- +7 SET LEX=LEXI_"^"_LEXB_"^"_LEXE
- +8 QUIT LEX
- ASOF(LEX) ; As of date/time
- +1 SET X=$$ED($$NOW^XLFDT)
- QUIT X
- ED(LEX) ; External Date MM/DD/YYYY TT:TT
- +1 SET LEX=$$FMTE^XLFDT($GET(LEX),"1Z")
- +2 if LEX["@"
- SET LEX=$PIECE(LEX,"@",1)_" "_$PIECE(LEX,"@",2,4000)
- QUIT LEX
- +3 QUIT LEX
- EP(X,Y) ; Elapsed Time (Begin, End)
- +1 NEW LEXTIM,LEXBEG,LEXEND
- +2 SET LEXBEG=$GET(X)
- SET LEXEND=$GET(Y)
- if +LEXBEG'>0
- QUIT ""
- if +LEXEND'>0
- QUIT ""
- +3 SET LEXTIM=$$FMDIFF^XLFDT(LEXEND,LEXBEG,2)
- if +LEXTIM'>0
- QUIT "00:00:00"
- +4 SET LEXTIM=$$TIM(LEXTIM)
- +5 QUIT LEXTIM
- TIM(X) ; Format Time Elapsed
- +1 NEW LEXD,LEXH,LEXM,LEXS,LEXT,LEXV
- SET X=+($GET(X))
- if X'>0
- QUIT "00:00:00"
- +2 SET LEXD=X\86400
- SET LEXV=LEXD*86400
- if +LEXV>0&(LEXV<X)
- SET X=X-LEXV
- +3 SET LEXH=X\3600
- SET LEXV=LEXH*3600
- if +LEXV>0&(LEXV<X)
- SET X=X-LEXV
- +4 if $LENGTH(LEXH)<2
- SET LEXH="0"_LEXH
- if $LENGTH(LEXH)<2
- SET LEXH="0"_LEXH
- +5 SET LEXM=X\60
- SET LEXV=LEXM*60
- if +LEXV>0&(LEXV<X)
- SET X=X-LEXV
- +6 if $LENGTH(LEXM)<2
- SET LEXM="0"_LEXM
- if $LENGTH(LEXM)<2
- SET LEXM="0"_LEXM
- +7 SET LEXS=X
- if $LENGTH(LEXS)<2
- SET LEXS="0"_LEXS
- if $LENGTH(LEXS)<2
- SET LEXS="0"_LEXS
- +8 SET LEXT=""
- if +LEXD>0
- SET LEXT=+LEXD_" day"_$SELECT(+LEXD>1:"s",1:"")_" "
- +9 SET LEXT=LEXT_LEXH_":"_LEXM_":"_LEXS
- SET X=LEXT
- +10 QUIT X
- BL ; Blank Line
- +1 DO TL("")
- QUIT
- TL(LEXX) ; Text Line
- +1 SET LEXSUB=$GET(LEXSUB)
- if '$LENGTH(LEXSUB)
- SET LEXSUB="LEXXII"
- +2 IF '$DATA(^TMP(LEXSUB,$JOB,1))
- SET ^TMP(LEXSUB,$JOB,1)=" "
- SET ^TMP(LEXSUB,$JOB,0)=1
- +3 NEW LEXNX
- SET LEXNX=$ORDER(^TMP(LEXSUB,$JOB," "),-1)
- SET LEXNX=LEXNX+1
- +4 SET ^TMP(LEXSUB,$JOB,LEXNX)=" "_$GET(LEXX)
- SET ^TMP(LEXSUB,$JOB,0)=LEXNX
- +5 QUIT
- ST ; Show Temp Array
- +1 SET LEXSUB=$GET(LEXSUB)
- if '$LENGTH(LEXSUB)
- SET LEXSUB="LEXXII"
- +2 NEW LEXN,LEXC
- SET LEXN="^TMP("""_LEXSUB_""","_$JOB_")"
- SET LEXC="^TMP("""_LEXSUB_""","_$JOB_","
- +3 FOR
- SET LEXN=$QUERY(@LEXN)
- if LEXN=""!(LEXN'[LEXC)
- QUIT
- Begin DoDot:1
- +4 if LEXN[",0)"
- QUIT
- WRITE !,@LEXN
- End DoDot:1
- +5 QUIT
- TRIM(X) ; Trim Spaces
- +1 SET X=$GET(X)
- if X=""
- QUIT X
- FOR
- if $EXTRACT(X,1)'=" "
- QUIT
- SET X=$EXTRACT(X,2,$LENGTH(X))
- +2 FOR
- if $EXTRACT(X,$LENGTH(X))'=" "
- QUIT
- SET X=$EXTRACT(X,1,($LENGTH(X)-1))
- +3 QUIT X