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

LEXXII.m

Go to the documentation of this file.
  1. 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
  1. ;
  1. ; Global Variables
  1. ; ^%ZOSF("UCI") ICR 10096
  1. ; ^LEXM(0) N/A
  1. ; ^TMP("LEX*",$J) SACC 2.3.2.5.1
  1. ; ^TMP("LEX*",$J) SACC 2.3.2.5.1
  1. ; ^VA(200) ICR 10060
  1. ;
  1. ; External References
  1. ; $$FMDIFF^XLFDT ICR 10103
  1. ; $$FMTE^XLFDT ICR 10103
  1. ; $$GET1^DIQ ICR 2056
  1. ; $$NOW^XLFDT ICR 10103
  1. ; FIND^DIC ICR 2051
  1. ; GETS^DIQ ICR 2056
  1. ; $$PROD^XUPROD ICR 4440
  1. ;
  1. ; Variables NEWed or KILLed Elsewhere
  1. ; LEXACCT NEWed by LEXXFI sending message
  1. ; LEXID NEWed by LEXXFI sending message
  1. ; LEXCRE NEWed by LEXXGI loading data
  1. ; LEXIGHF NEWed by Post Install routine LEX20nnP
  1. ; XPDA NEWed by KIDS during Install
  1. ;
  1. EN ; Main Entry
  1. N LEXSUB S LEXSUB=$G(LEXID) S:LEXSUB="" LEXSUB="LEXXII" K ^TMP(LEXSUB,$J) D II
  1. Q
  1. ;
  1. II ; Install Information
  1. N LEXT,LEXA,LEXACT,LEXB,LEXD,LEXE,LEXL,LEXU,LEXN,LEXP,LEXPROF,LEXDA H 2
  1. S LEXA="",LEXACT=$G(LEXACCT),LEXPRO=$G(LEXPRO),LEXPRON=$G(LEXPRON)
  1. S:'$L(LEXPRON) LEXPRON="LEXICAL SERVICES UPDATE" S:'$L(LEXPRO) LEXPRO=$G(^LEXM(0,"PRO")) S:+LEXPRO>0 LEXPRO=$$ED(LEXPRO)
  1. I $L($G(LEXSUBH)) D
  1. . N LEXL S LEXT=$G(LEXSUBH),$P(LEXL,"=",$L(LEXT))="=" D TL(LEXT),TL(LEXL),BL
  1. I '$L($G(LEXSUBH)) D
  1. . S LEXT="Lexicon/ICD/CPT Installation" D TL(LEXT)
  1. . S LEXT="============================" D TL(LEXT),BL
  1. S LEXD=$$ASOF,LEXA=$$UCI,LEXU=$$USR,LEXN=$P(LEXU,"^",1)
  1. S:$L($P(LEXACT,"^",1))&($L($P(LEXACT,"^",1))) LEXA=LEXACT
  1. S LEXP=$P(LEXU,"^",2),LEXN=$$PM^LEXXFI7(LEXN)
  1. S:$L(LEXD) LEXT=" As of: "_LEXD
  1. D:$L(LEXD) TL(LEXT)
  1. S LEXT="" S:$L(LEXA) LEXT=" In Account: "_$S($L($P(LEXA,"^",1)):"[",1:"")_$P(LEXA,"^",1)_$S($L($P(LEXA,"^",2)):"]",1:"")
  1. S:$L(LEXT)&($L($P(LEXA,"^",2))) LEXT=LEXT_" "_$P(LEXA,"^",2)
  1. D:$L(LEXA) TL(LEXT)
  1. S LEXT="" S:$L(LEXU) LEXT=" Maint By: "
  1. S:$L(LEXN) LEXT=LEXT_LEXN
  1. S:$L(LEXP)&($L(LEXN)) LEXT=LEXT_" "_LEXP
  1. D:$L(LEXT)&(LEXT'["UNKNOWN") TL(LEXT)
  1. S LEXT="" S:$L($G(LEXBUILD)) LEXT=" Build: "_$G(LEXBUILD)
  1. D:$L(LEXT) TL(LEXT)
  1. S LEXT="" S:$L($G(LEXIGHF)) LEXT=" Host File: "_$G(LEXIGHF)
  1. S:$L(LEXT)&($L($G(LEXCRE)))&($P($G(LEXCRE),".",1)?7N) LEXT=LEXT_" (Created "_$$ED($G(LEXCRE))_")"
  1. S:'$L(LEXT)&($L($G(LEXCRE)))&($P($G(LEXCRE),".",1)?7N) LEXT=" Created: "_$$ED($G(LEXCRE))
  1. D:$L(LEXT) TL(LEXT)
  1. S LEXT="" I $O(LEXPROC(" "),-1)'>1,$L($G(LEXPRO))&($L($G(LEXPRON))),$O(LEXPROC(" "),-1)'>1 D
  1. . S LEXT=" Protocol: "_LEXPRON D BL,TL(LEXT)
  1. . S LEXT=" Invoked: "_LEXPRO D TL(LEXT)
  1. . K LEXPRO,LEXPRON,^LEXM(0,"PRO")
  1. I $O(LEXPROC(" "),-1)>1 D
  1. . N LEXT,LEXI,LEXC,LEXT S LEXT=$$TRIM($G(LEXPROC(1))) Q:'$L(LEXT) D BL,TL((" "_LEXT))
  1. . S LEXC=0,LEXI=1 F S LEXI=$O(LEXPROC(LEXI)) Q:+LEXI'>0 D
  1. . . N LEXT S LEXT=$$TRIM($TR($G(LEXPROC(LEXI)),"'","")) Q:'$L(LEXT) S LEXC=LEXC+1 D TL((" "_LEXT))
  1. S LEXB=$$SS($G(LEXBUILD)),LEXE=$P(LEXB,"^",2),LEXL=$P(LEXB,"^",3),LEXB=$P(LEXB,"^",1)
  1. I '$D(LEXNOTIM),$P(LEXB,".",1)?7N!($P(LEXB,".",2)?7N)!($P(LEXB,".",3)[":") D
  1. . D BL
  1. . I $P(LEXB,".",1)?7N D
  1. . . S LEXT="" S LEXT=" Started: "_$$ED($G(LEXB)) D TL(LEXT)
  1. . I $P(LEXE,".",1)?7N D
  1. . . S LEXT="" S LEXT=" Finished: "_$$ED($G(LEXE)) D TL(LEXT)
  1. . I $L(LEXL) D
  1. . . S LEXT="" S LEXT=" Elapsed: "_$$ED($G(LEXL)) D TL(LEXT)
  1. I $L($G(LEXRES)) D
  1. . S LEXT="" S LEXT=" Data: "_$G(LEXRES) D BL,TL(LEXT)
  1. D BL
  1. Q
  1. ;
  1. ; Miscellaneous
  1. UCI(X) ; UCI where Lexicon is installed
  1. N LEXU,LEXP,LEXT,Y X ^%ZOSF("UCI") S LEXU=Y,LEXP=""
  1. S LEXP=$S($$PROD^XUPROD(1):" (Production)",1:" (Test)")
  1. S:LEXU[","&($L($P(LEXU,",",1))>3) LEXU=$P(LEXU,",",1)
  1. S X="",$P(X,"^",1)=LEXU,$P(X,"^",2)=LEXP
  1. Q X
  1. USR(LEX) ; User/Person
  1. N LEXDUZ,LEXPH,LEXNM
  1. S LEX=+($G(DUZ)),LEXNM=$$GET1^DIQ(200,+LEX,.01) Q:'$L(LEXNM) "UNKNOWN^"
  1. S LEXDUZ=LEX S LEXPH=$$GET1^DIQ(200,+LEXDUZ,.132) S:LEXPH="" LEXPH=$$GET1^DIQ(200,+LEXDUZ,.131)
  1. S:LEXPH="" LEXPH=$$GET1^DIQ(200,+LEXDUZ,.133) S:LEXPH="" LEXPH=$$GET1^DIQ(200,+LEXDUZ,.134)
  1. S LEXDUZ=$$GET1^DIQ(200,+LEX,.01),LEX=LEXDUZ_"^"_LEXPH Q LEX
  1. SS(LEX) ; Start/Stop Times
  1. N LEXDA,LEXOUT,LEXIENS,LEXB,LEXBUILD,LEXB,LEXE,LEXL
  1. S LEXBUILD=$G(LEX),LEXD=0 S:$L(LEXBUILD) LEXD=$$DDA(LEXBUILD)
  1. S LEXDA=+($G(XPDA))
  1. I +LEXDA>0 D
  1. . S LEXIENS=LEXDA_"," D GETS^DIQ(9.7,LEXIENS,"11;17","I","LEXOUT")
  1. . S LEXL=0,LEXB=$G(LEXOUT(9.7,LEXIENS,11,"I"))
  1. . S:$L($G(LEXSTART))&($P($G(LEXSTART),".",1)?7N) LEXB=$G(LEXSTART)
  1. . S LEXE=$$NOW^XLFDT S:+LEXB>0&(+LEXE>0) LEXL=$$EP(LEXB,LEXE)
  1. . S LEX=LEXB_"^"_LEXE S:$L(LEXL) $P(LEX,"^",3)=LEXL
  1. I +LEXDA=0 D
  1. . S LEX="" S LEXDA=+($G(LEXD)) S LEXL="",LEXB=$P($G(LEXD),"^",2)
  1. . S:$L($G(LEXSTART))&($P($G(LEXSTART),".",1)?7N) LEXB=$G(LEXSTART)
  1. . S LEXE=$$NOW^XLFDT S:+LEXB>0&(+LEXE>0) LEXL=$$EP(LEXB,LEXE)
  1. . S LEX=LEXB_"^"_LEXE S:$L(LEXL) $P(LEX,"^",3)=LEXL
  1. Q LEX
  1. DDA(LEX) ; Get Default DA of Build LEX
  1. N LEXB,LEXE,LEXOUT,LEXMSG,LEXI S LEXB=$G(LEX) Q:'$L(LEXB) ""
  1. D FIND^DIC(9.7,,"11I;17I","BP",LEXB,,"B",,,"LEXOUT","LEXMSG")
  1. S LEXI=+($O(LEXOUT("DILIST"," "),-1))
  1. S LEXB=$G(LEXOUT("DILIST",+LEXI,0))
  1. S LEXI=$P(LEXB,"^",1),LEXE=$P(LEXB,"^",4),LEXB=$P(LEXB,"^",3)
  1. Q:+($G(LEXI))'>0 "" Q:+($G(LEXB))'>0 "" S:+LEXE'>0 LEXE=$$NOW^XLFDT
  1. S LEX=LEXI_"^"_LEXB_"^"_LEXE
  1. Q LEX
  1. ASOF(LEX) ; As of date/time
  1. S X=$$ED($$NOW^XLFDT) Q X
  1. ED(LEX) ; External Date MM/DD/YYYY TT:TT
  1. S LEX=$$FMTE^XLFDT($G(LEX),"1Z")
  1. S:LEX["@" LEX=$P(LEX,"@",1)_" "_$P(LEX,"@",2,4000) Q LEX
  1. Q LEX
  1. EP(X,Y) ; Elapsed Time (Begin, End)
  1. N LEXTIM,LEXBEG,LEXEND
  1. S LEXBEG=$G(X),LEXEND=$G(Y) Q:+LEXBEG'>0 "" Q:+LEXEND'>0 ""
  1. S LEXTIM=$$FMDIFF^XLFDT(LEXEND,LEXBEG,2) Q:+LEXTIM'>0 "00:00:00"
  1. S LEXTIM=$$TIM(LEXTIM)
  1. Q LEXTIM
  1. TIM(X) ; Format Time Elapsed
  1. N LEXD,LEXH,LEXM,LEXS,LEXT,LEXV S X=+($G(X)) Q:X'>0 "00:00:00"
  1. S LEXD=X\86400 S LEXV=LEXD*86400 S:+LEXV>0&(LEXV<X) X=X-LEXV
  1. S LEXH=X\3600 S LEXV=LEXH*3600 S:+LEXV>0&(LEXV<X) X=X-LEXV
  1. S:$L(LEXH)<2 LEXH="0"_LEXH S:$L(LEXH)<2 LEXH="0"_LEXH
  1. S LEXM=X\60 S LEXV=LEXM*60 S:+LEXV>0&(LEXV<X) X=X-LEXV
  1. S:$L(LEXM)<2 LEXM="0"_LEXM S:$L(LEXM)<2 LEXM="0"_LEXM
  1. S LEXS=X S:$L(LEXS)<2 LEXS="0"_LEXS S:$L(LEXS)<2 LEXS="0"_LEXS
  1. S LEXT="" S:+LEXD>0 LEXT=+LEXD_" day"_$S(+LEXD>1:"s",1:"")_" "
  1. S LEXT=LEXT_LEXH_":"_LEXM_":"_LEXS,X=LEXT
  1. Q X
  1. BL ; Blank Line
  1. D TL("") Q
  1. TL(LEXX) ; Text Line
  1. S LEXSUB=$G(LEXSUB) S:'$L(LEXSUB) LEXSUB="LEXXII"
  1. I '$D(^TMP(LEXSUB,$J,1)) S ^TMP(LEXSUB,$J,1)=" ",^TMP(LEXSUB,$J,0)=1
  1. N LEXNX S LEXNX=$O(^TMP(LEXSUB,$J," "),-1),LEXNX=LEXNX+1
  1. S ^TMP(LEXSUB,$J,LEXNX)=" "_$G(LEXX),^TMP(LEXSUB,$J,0)=LEXNX
  1. Q
  1. ST ; Show Temp Array
  1. S LEXSUB=$G(LEXSUB) S:'$L(LEXSUB) LEXSUB="LEXXII"
  1. N LEXN,LEXC S LEXN="^TMP("""_LEXSUB_""","_$J_")",LEXC="^TMP("""_LEXSUB_""","_$J_","
  1. F S LEXN=$Q(@LEXN) Q:LEXN=""!(LEXN'[LEXC) D
  1. . Q:LEXN[",0)" W !,@LEXN
  1. Q
  1. TRIM(X) ; Trim Spaces
  1. S X=$G(X) Q:X="" X F Q:$E(X,1)'=" " S X=$E(X,2,$L(X))
  1. F Q:$E(X,$L(X))'=" " S X=$E(X,1,($L(X)-1))
  1. Q X