| [613] | 1 | LEXXFI8 ; ISL/KER - File Info - Miscellaneous      ; 07/28/2004
 | 
|---|
 | 2 |  ;;2.0;LEXICON UTILITY;**32**;Sep 23, 1996;Build 1
 | 
|---|
 | 3 |  Q
 | 
|---|
 | 4 |  ;                    
 | 
|---|
 | 5 |  ; Global Variables
 | 
|---|
 | 6 |  ;   ^TMP("LEXCS",$J     SACC 2.3.2.5.1
 | 
|---|
 | 7 |  ;   ^TMP("LEXINS",$J    SACC 2.3.2.5.1
 | 
|---|
 | 8 |  ;                      
 | 
|---|
 | 9 |  ; External References
 | 
|---|
 | 10 |  ;   DBIA 10003  ^%DT
 | 
|---|
 | 11 |  ;   DBIA 10022  %XY^%RCR
 | 
|---|
 | 12 |  ;   DBIA 10006  ^DIC (file 4.2 and 9.4)
 | 
|---|
 | 13 |  ;   DBIA 10006  IX^DIC
 | 
|---|
 | 14 |  ;   DBIA  2052  FILE^DID
 | 
|---|
 | 15 |  ;   DBIA  2056  $$GET1^DIQ (file 81.2)
 | 
|---|
 | 16 |  ;   DBIA 10103  $$FMTE^XLFDT
 | 
|---|
 | 17 |  ;                          
 | 
|---|
 | 18 | LEX(X) ; LEX* File
 | 
|---|
 | 19 |  N LEXN S X=$G(X) Q:+X=0 0  S LEXN=$$GL(X) Q:$E(LEXN,1,4)="^LEX" 1
 | 
|---|
 | 20 |  Q 0
 | 
|---|
 | 21 | IC(X) ; IC* File
 | 
|---|
 | 22 |  S X=$G(X) I "^80^80.1^80.2^80.3^81^81.1^81.3^"[("^"_+X_"^") Q 1
 | 
|---|
 | 23 |  Q 0
 | 
|---|
 | 24 | GL(X) ; Global Location
 | 
|---|
 | 25 |  N DIERR,LEXE,LEXN S X=$G(X) Q:+X=0 ""  D FILE^DID(+X,"N","GLOBAL NAME","LEXN","LEXE")
 | 
|---|
 | 26 |  S X="" S:'$D(DIERR) X=$G(LEXN("GLOBAL NAME"))
 | 
|---|
 | 27 |  Q X
 | 
|---|
 | 28 | FN(X) ; File Name
 | 
|---|
 | 29 |  N DIERR,LEXE,LEXN S X=$G(X) D FILE^DID(+X,"N","NAME","LEXN","LEXE")
 | 
|---|
 | 30 |  S X="" S:'$D(DIERR) X=$G(LEXN("NAME"))
 | 
|---|
 | 31 |  Q X
 | 
|---|
 | 32 | INS(X) ; Installed
 | 
|---|
 | 33 |  N %X,%Y,LEXFI,LEXIN,LEXPH,LEXPK,LEXPV,LEXRV,LEXSQ,LEXVR K ^TMP("LEXINS",$J)
 | 
|---|
 | 34 |  S LEXFI=+($G(X)) Q:+LEXFI'>0 ""
 | 
|---|
 | 35 |  S LEXVR=$P($$VR(LEXFI),"^",1) Q:'$L(LEXVR) ""  Q:+LEXVR'>0 ""
 | 
|---|
 | 36 |  S LEXRV=$P($$RV(LEXFI),"^",1) Q:'$L(LEXRV) ""  Q:+LEXRV'>0 ""
 | 
|---|
 | 37 |  S LEXPK=$$PKG(LEXFI) Q:'$L(LEXPK) ""  Q:+LEXPK'>0 ""
 | 
|---|
 | 38 |  S LEXPV=$$PH(LEXPK,LEXVR) Q:+LEXPV'>0 ""
 | 
|---|
 | 39 |  S %X="^DIC(9.4,"_LEXPK_",22,"_LEXPV_",""PAH"",",%Y="^TMP(""LEXINS"","_$J_",""PAH""," D %XY^%RCR
 | 
|---|
 | 40 |  S LEXPH=$O(^TMP("LEXINS",$J,"PAH","B",LEXRV,0)) I LEXPH'>0 D
 | 
|---|
 | 41 |  . S LEXPH="",LEXSQ=$O(^TMP("LEXINS",$J,"PAH","B",(LEXRV_" ")))
 | 
|---|
 | 42 |  . Q:'$L(LEXSQ)  Q:$E(LEXSQ,1,$L(LEXRV))'=LEXRV
 | 
|---|
 | 43 |  . S LEXPH=$O(^TMP("LEXINS",$J,"PAH","B",LEXSQ,0))
 | 
|---|
 | 44 |  S LEXIN=$P($P($G(^TMP("LEXINS",$J,"PAH",+LEXPH,0)),"^",2),".",1)
 | 
|---|
 | 45 |  S X=$S(+LEXIN>0:$$SD(+LEXIN),1:"") S:$L(X)'=10 X=""
 | 
|---|
 | 46 |  K ^TMP("LEXINS",$J)
 | 
|---|
 | 47 |  Q X
 | 
|---|
 | 48 | VR(X) ; File Version
 | 
|---|
 | 49 |  N DIERR,LEXCDT,LEXE,LEXEX,LEXFI,LEXL,LEXN,LEXRTN,LEXVR,LEXVRD
 | 
|---|
 | 50 |  S LEXFI=$G(X) N DIERR,LEXN,LEXNM,LEXE,LEXEX,LEXL,LEXRTN
 | 
|---|
 | 51 |  D FILE^DID(+LEXFI,"N","VERSION","LEXN","LEXE") S LEXVR="" I '$D(DIERR) D
 | 
|---|
 | 52 |  . S LEXVR=$G(LEXN("VERSION")) S LEXRTN=$S($P(+LEXFI,".",1)=757:"LEXA",$P(+LEXFI,".",1)=80:"ICDCODE",$P(+LEXFI,".",1)=81:"ICPTCOD",1:"")
 | 
|---|
 | 53 |  . Q:'$L(LEXRTN)  S LEXEX="S LEXL=$T(+2^"_LEXRTN_")" X LEXEX
 | 
|---|
 | 54 |  . Q:'$L(LEXL)  I $P(LEXL,";",3)=LEXVR,$L($P(LEXL,";",6)) S LEXVRD=$$LTS($P(LEXL,";",6))
 | 
|---|
 | 55 |  S LEXCDT="" S:LEXFI=81.2 LEXCDT=$$DDT
 | 
|---|
 | 56 |  S X=$G(LEXVR) S:$L($G(LEXVR))&($L($G(LEXVRD))) X=X_"^"_$G(LEXVRD)
 | 
|---|
 | 57 |  S:$L($G(LEXVR))&($L($G(LEXVRD)))&($L(LEXCDT)) X=X_"^"_$G(LEXCDT)
 | 
|---|
 | 58 |  Q X
 | 
|---|
 | 59 | RV(X) ; File Revision
 | 
|---|
 | 60 |  N DIERR,LEXE,LEXN S X=$G(X)
 | 
|---|
 | 61 |  D FILE^DID(+X,"N","PACKAGE REVISION DATA","LEXN","LEXE")
 | 
|---|
 | 62 |  S X="" S:'$D(DIERR) X=$G(LEXN("PACKAGE REVISION DATA"))
 | 
|---|
 | 63 |  S:+$P(X,"^",2) $P(X,"^",2)=$$SD($P(X,"^",2))
 | 
|---|
 | 64 |  Q X
 | 
|---|
 | 65 | DDT(X) ; CPT Distribution Date
 | 
|---|
 | 66 |  N LEXDDT S LEXDDT=$$GET1^DIQ(81.2,"1,",.02,"I") Q:'$L(LEXDDT) ""  Q:+LEXDDT'>0 ""  S X=$$SD(LEXDDT)
 | 
|---|
 | 67 |  Q X
 | 
|---|
 | 68 | ADR(LEX) ; Mailing Address
 | 
|---|
 | 69 |  N DIC,DTOUT,DUOUT,X,Y S DIC="^DIC(4.2,",DIC(0)="M",(LEX,X)="FO-SLC.MED.VA.GOV" D ^DIC Q:+Y>0 LEX
 | 
|---|
 | 70 |  S DIC="^DIC(4.2,",DIC(0)="M",(LEX,X)="ISC-SLC.MED.VA.GOV" D ^DIC Q:+Y>0 LEX
 | 
|---|
 | 71 |  Q "ISC-SLC.VA.GOV"
 | 
|---|
 | 72 | MX(X) ; Mix Case
 | 
|---|
 | 73 |  Q $TR($E(X,1),"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")_$TR($E(X,2,$L(X)),"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz")
 | 
|---|
 | 74 | LTS(X) ; Long to Short Date
 | 
|---|
 | 75 |  N %DT,Y S X=$G(X) Q:'$L(X) ""  S %DT="T" D ^%DT S X=$$SD(Y)
 | 
|---|
 | 76 |  Q X
 | 
|---|
 | 77 | SD(X) ; Short Date
 | 
|---|
 | 78 |  S X=$G(X),X=$TR($$FMTE^XLFDT($P(X,".",1),"5DZ"),"@"," ")
 | 
|---|
 | 79 |  Q X
 | 
|---|
 | 80 | PKG(X) ; Package
 | 
|---|
 | 81 |  N D,DIC,DTOUT,DUOUT,LEXFI,LEXN S LEXFI=+($G(X)) Q:+LEXFI'>0 ""
 | 
|---|
 | 82 |  S LEXN=$S($P(LEXFI,".",1)=757:"LEXICON UTILITY",$P(LEXFI,".",1)=80:"DRG GROUPER",$P(LEXFI,".",1)=81:"CPT/HCPCS CODES",1:"")
 | 
|---|
 | 83 |  Q:'$L(LEXN)  N X,Y S DIC="^DIC(9.4,",D="B",DIC(0)="X",X=LEXN D IX^DIC
 | 
|---|
 | 84 |  S X=+($G(Y))
 | 
|---|
 | 85 |  Q X
 | 
|---|
 | 86 | PH(X,Y) ; Patch History
 | 
|---|
 | 87 |  N DA,DIC,DTOUT,DUOUT,LEXPK,LEXVR
 | 
|---|
 | 88 |  S (DA(1),LEXPK)=+($G(X)) Q:+LEXPK'>0 ""  S LEXVR=$G(Y) Q:'$L(LEXVR) ""  Q:+LEXVR'>0 ""
 | 
|---|
 | 89 |  S DIC="^DIC(9.4,"_DA(1)_",22,",X=LEXVR,DIC(0)="X"
 | 
|---|
 | 90 |  D ^DIC S X=+($G(Y)) S:+Y'>0 X=""
 | 
|---|
 | 91 |  Q X
 | 
|---|
 | 92 | TIC(X) ; Time
 | 
|---|
 | 93 |  Q $$NOW^XLFDT
 | 
|---|
 | 94 | ELAP(X,Y) ; Elapsed Time (start,end)
 | 
|---|
 | 95 |  Q $TR($$FMDIFF^XLFDT(+($G(Y)),+($G(X)),3)," ","0")
 | 
|---|
 | 96 | LDR(X) ; Leader
 | 
|---|
 | 97 |  N LEXFI,LEXMOD S LEXFI=+($G(X)) Q:LEXFI'>0 0  S LEXMOD=$$MOD(LEXFI),X=$S(+LEXMOD>0:" * ",1:"   ")
 | 
|---|
 | 98 |  Q X
 | 
|---|
 | 99 | MOD(X) ; Modifier File
 | 
|---|
 | 100 |  N LEXFI,LEXSRC,LEXE,LEXTAG,LEXRTN,LEXCTR,LEXLDR,LEXMOD
 | 
|---|
 | 101 |  S LEXSRC=+($G(X)) Q:LEXSRC'>0 0
 | 
|---|
 | 102 |  S LEXFI="",LEXE=0,LEXTAG="FILES",LEXRTN="LEXXFI",LEXCTR=0,LEXMOD=0
 | 
|---|
 | 103 |  F  D  Q:LEXFI=""  Q:+LEXE>0
 | 
|---|
 | 104 |  . S LEXCTR=LEXCTR+1
 | 
|---|
 | 105 |  . S LEXEX="S LEXLINE=$T("_LEXTAG_"+"_LEXCTR_"^"_LEXRTN_")" X LEXEX
 | 
|---|
 | 106 |  . S LEXFI=$P(LEXLINE,";;",2,3)
 | 
|---|
 | 107 |  . S LEXLDR=$P(LEXFI,";;",1),LEXFI=$P(LEXFI,";;",2)
 | 
|---|
 | 108 |  . Q:'$L(LEXFI)  Q:+LEXFI'=LEXSRC
 | 
|---|
 | 109 |  . S LEXMOD=$S(+LEXLDR>0:1,1:0) S:LEXMOD>0 LEXE=1
 | 
|---|
 | 110 |  S X=LEXMOD
 | 
|---|
 | 111 |  Q X
 | 
|---|
 | 112 | MF(X) ; Modified Files
 | 
|---|
 | 113 |  N LEXMOD,LEXT S LEXMOD=+($G(X)) Q:LEXMOD'>0
 | 
|---|
 | 114 |  S LEXT=" * "_$S(LEXMOD>1:"These ",1:"This ")_"file"
 | 
|---|
 | 115 |  S LEXT=LEXT_$S(LEXMOD>1:"s ",1:" ")
 | 
|---|
 | 116 |  S LEXT=LEXT_"contain"_$S(LEXMOD>1:" ",1:"s ")
 | 
|---|
 | 117 |  S LEXT=LEXT_"fields that may be modified at the site."
 | 
|---|
 | 118 |  D BL^LEXXFI8,TL^LEXXFI8(LEXT)
 | 
|---|
 | 119 |  S LEXT="   The Checksum"_$S(LEXMOD>1:"s ",1:" ")
 | 
|---|
 | 120 |  S LEXT=LEXT_"for "_$S(LEXMOD>1:"these ",1:"this ")
 | 
|---|
 | 121 |  S LEXT=LEXT_"file"_$S(LEXMOD>1:"s ",1:" ")
 | 
|---|
 | 122 |  S LEXT=LEXT_"may vary from site to site."
 | 
|---|
 | 123 |  D TL^LEXXFI8(LEXT)
 | 
|---|
 | 124 |  Q
 | 
|---|
 | 125 | BL ; Blank Line
 | 
|---|
 | 126 |  N LEXI,LEXT S LEXI=+($O(^TMP("LEXCS",$J," "),-1)),LEXT=$G(^TMP("LEXCS",$J,+LEXI))
 | 
|---|
 | 127 |  Q:(LEXI+1)'>1  D:LEXT'="   " TL("   ")
 | 
|---|
 | 128 |  Q
 | 
|---|
 | 129 | TL(X) ; Text Line
 | 
|---|
 | 130 |  S X=$G(X) W:'$D(ZTQUEUED) !,X
 | 
|---|
 | 131 |  N LEXI S LEXI=+($O(^TMP("LEXCS",$J," "),-1))+1,^TMP("LEXCS",$J,LEXI)=X,^TMP("LEXCS",$J,0)=LEXI
 | 
|---|
 | 132 |  Q
 | 
|---|
 | 133 | TT(X,Y) ; Title Line
 | 
|---|
 | 134 |  N LEXFI,LEXTT,LEXT,LEXN,LEXNM S LEXFI=$G(X),LEXTT=$G(Y) S:+($$IF(LEXFI))'>0 LEXFI=""
 | 
|---|
 | 135 |  S:+LEXFI>0 LEXNM=$$FN(LEXFI)_" File (#"_+LEXFI_")" S:+LEXFI'>0 LEXNM="Lexicon/ICD/CPT File"
 | 
|---|
 | 136 |  S LEXT=" "_LEXNM_" "_$G(LEXTT) S:+($G(LEXMUL))>0&($E(LEXT,$L(LEXT))'="s") LEXT=LEXT_"s"
 | 
|---|
 | 137 |  D BL,TL(LEXT) S $P(LEXN,"=",$L(LEXT))="",LEXN=" "_LEXN D TL(LEXN)
 | 
|---|
 | 138 |  Q
 | 
|---|
 | 139 | IF(X) ; Is File on the List of Files
 | 
|---|
 | 140 |  N LEXTAG,LEXRTN,LEXCTR,LEXCTL,LEXFI,LEXLINE,LEXOK S LEXCTL=$G(X) Q:'$L(LEXCTL) 0  Q:+LEXCTL'>0 0
 | 
|---|
 | 141 |  S LEXFI="",LEXTAG="FILES",LEXRTN="LEXXFI",(LEXCTR,LEXOK)=0
 | 
|---|
 | 142 |  F  D  Q:LEXFI=""  Q:+LEXOK>0
 | 
|---|
 | 143 |  . S LEXCTR=LEXCTR+1
 | 
|---|
 | 144 |  . S LEXEX="S LEXLINE=$T("_LEXTAG_"+"_LEXCTR_"^"_LEXRTN_")" X LEXEX
 | 
|---|
 | 145 |  . S LEXFI=$P(LEXLINE,";;",2,3),LEXFI=$P(LEXFI,";;",2)
 | 
|---|
 | 146 |  . Q:'$L(LEXFI)  S:+LEXFI=+LEXCTL LEXOK=1
 | 
|---|
 | 147 |  S X=LEXOK
 | 
|---|
 | 148 |  Q X
 | 
|---|