| 1 | PXRMP9E ; SLC/KER - Environoment Check for LEX*2.0*49/PXRM+2*9 ;02/22/2007
 | 
|---|
| 2 |  ;;2.0;CLINICAL REMINDERS;**9**;Feb 04, 2005;Build 4
 | 
|---|
| 3 |  ;                     
 | 
|---|
| 4 |  ; Local Variables not NEWed or KILLed
 | 
|---|
| 5 |  ;   XPDENV
 | 
|---|
| 6 |  ;                     
 | 
|---|
| 7 |  ; Global Variables
 | 
|---|
| 8 |  ;   None
 | 
|---|
| 9 |  ;                     
 | 
|---|
| 10 |  ; External References
 | 
|---|
| 11 |  ;   DBIA 10015  EN^DIQ1
 | 
|---|
| 12 |  ;   DBIA 10141  $$PATCH^XPDUTL
 | 
|---|
| 13 |  ;   DBIA 10141  $$VERSION^XPDUTL
 | 
|---|
| 14 |  ;   DBIA 10141  BMES^XPDUTL
 | 
|---|
| 15 |  ;   DBIA 10141  MES^XPDUTL
 | 
|---|
| 16 |  ;                     
 | 
|---|
| 17 | ENV ; LEX*2.0*49 Environment Check
 | 
|---|
| 18 |  D BM(" Code Set Update message fix (Remedy Ticket 175985)"),M(" ")
 | 
|---|
| 19 |  N DA,DIC,DIQ,DR,PXRMB,PXRMBLD,PXRMBLDS,PXRMERR,PXRMHF,PXRMI,PXRML,PXRMPAT,PXRMPN,PXRMREQ,PXRMS,PXRMT,PXRMU,PXRMV,PXRMVER,X
 | 
|---|
| 20 |  K XPDABORT,XPDQUIT S U="^",PXRMREQ="LEX*2.0*25;LEX*2.0*27;LEX*2.0*32;LEX*2.0*46;ICD*18.0*11;ICPT*6.0*16;PXRM*2.0*4"
 | 
|---|
| 21 |  S PXRMBLD="LEX*2.0*49",PXRMBLDS="LEX*2.0*49;ICD*18.0*28;ICPT*6.0*34;PXRM*2.0*9",PXRMHF="LEX_2_49.KID"
 | 
|---|
| 22 |  K PXRMERR D:+($$UR)'>0 ET("User not defined (DUZ)") I $D(PXRMERR) D ABRT Q
 | 
|---|
| 23 |  D:+($$SY)'>0 ET("Undefined IO variable(s)") I $D(PXRMERR) D ABRT Q
 | 
|---|
| 24 |  I +($G(XPDENV))>0 D
 | 
|---|
| 25 |  . D M(" Fixes the following components:")
 | 
|---|
| 26 |  . D BM("   LEX*2.0*49    Protocol LEXICAL SERVICES UPDATE")
 | 
|---|
| 27 |  . D M("                 Routines LEXXFI, LEXXFI7, LEXXGI, LEXXGI2, and LEXXST")
 | 
|---|
| 28 |  . D BM("   ICPT*6.0*34   Protocol ICPT CODE UPDATE EVENT")
 | 
|---|
| 29 |  . D M("                 Routine  ICPTAU")
 | 
|---|
| 30 |  . D BM("   ICD*18.0*28   Protocol ICD CODE UPDATE EVENT")
 | 
|---|
| 31 |  . D M("                 Routine  ICDUPDT")
 | 
|---|
| 32 |  . D BM("   PXRM*2.0*9    Protocol PXRM CODE SET UPDATE CPT")
 | 
|---|
| 33 |  . D M("                 Protocol PXRM CODE SET UPDATE ICD")
 | 
|---|
| 34 |  . D M("                 Routines PXRMCSD and PXRMCSTX"),M(" ")
 | 
|---|
| 35 |  D M("   Checking installed package version numbers")
 | 
|---|
| 36 |  S PXRMVER=$$VERSION^XPDUTL("LEX") I +PXRMVER'>1.9999 D  D ABRT Q
 | 
|---|
| 37 |  . D ET("     Required Lexicon version 2.0 not found.")
 | 
|---|
| 38 |  S PXRMV="     Lexicon Utility v "_PXRMVER,PXRMV=PXRMV_$J(" ",(30-$L(PXRMV)))
 | 
|---|
| 39 |  S PXRMVER=$$VERSION^XPDUTL("PXRM") I +PXRMVER'>1.9999 D  D ABRT Q
 | 
|---|
| 40 |  . D ET("     Required Clinical Reminders version 2.0 not found.")
 | 
|---|
| 41 |  S PXRMV=PXRMV_"     Clinical Reminders v "_PXRMVER
 | 
|---|
| 42 |  D M(PXRMV) S PXRMV=""
 | 
|---|
| 43 |  S PXRMVER=$$VERSION^XPDUTL("ICD") I +PXRMVER'>17.9999 D  D ABRT Q
 | 
|---|
| 44 |  . D ET("     Required ICD DRG Grouper version 18.0 not found.")
 | 
|---|
| 45 |  S PXRMV="     ICD DRG Grouper v "_PXRMVER,PXRMV=PXRMV_$J(" ",(30-$L(PXRMV)))
 | 
|---|
| 46 |  S PXRMVER=$$VERSION^XPDUTL("ICPT") I +PXRMVER'>5.9999 D  D ABRT Q
 | 
|---|
| 47 |  . D ET("     Required ICPT/HCPCS Codes version 6.0 not found.")
 | 
|---|
| 48 |  S PXRMV=PXRMV_"     ICPT/HCPCS Codes v "_PXRMVER
 | 
|---|
| 49 |  D M(PXRMV) S PXRMV="" K PXRMERR D BM("   Checking for required patches")
 | 
|---|
| 50 |  I $L(PXRMREQ) D
 | 
|---|
| 51 |  . N PXRMPAT,PXRMI,PXRMPN,PXRMV,PXRMT
 | 
|---|
| 52 |  . F PXRMI=1:1 Q:'$L($P(PXRMREQ,";",PXRMI))  S PXRMPAT=$P(PXRMREQ,";",PXRMI) D
 | 
|---|
| 53 |  . . S PXRMPN=$$PATCH^XPDUTL(PXRMPAT) S PXRMT="     "_PXRMPAT
 | 
|---|
| 54 |  . . S:PXRMPN>0 PXRMT=PXRMT_$J(" ",(35-$L(PXRMT)))_"installed"
 | 
|---|
| 55 |  . . D:PXRMPN>0 M(PXRMT) I +PXRMPN'>0 D ET((PXRMPAT_" not found, please install "_PXRMPAT_" before continuing"))
 | 
|---|
| 56 |  I $D(PXRMERR) D ABRT Q
 | 
|---|
| 57 | QUIT ;   Quit   Passed Environment Check - OK
 | 
|---|
| 58 |  D OK
 | 
|---|
| 59 |  Q
 | 
|---|
| 60 | ABRT ;   Abort  Failed Environment Check, KILL the distribution
 | 
|---|
| 61 |  S PXRMBLDS="LEX*2.0*49;ICD*18.0*28;ICPT*6.0*34;PXRM*2.0*9"
 | 
|---|
| 62 |  D:$D(PXRMERR) ED S XPDABORT=1,XPDQUIT=1 N PXRMI
 | 
|---|
| 63 |  F PXRMI=1:1 Q:'$L($P(PXRMBLDS,";",PXRMI))  S XPDQUIT($P(PXRMBLDS,";",PXRMI))=1
 | 
|---|
| 64 |  K PXRMERR
 | 
|---|
| 65 |  Q
 | 
|---|
| 66 | CLR ;   Clear Environment
 | 
|---|
| 67 |  K DA,DIC,DIQ,DR,PXRMB,PXRMBLD,PXRMBLDS,PXRMERR,PXRMHF,PXRMI,PXRML,PXRMPAT,PXRMPN,PXRMREQ,PXRMS,PXRMT,PXRMU,PXRMV,PXRMVER,X
 | 
|---|
| 68 |  Q
 | 
|---|
| 69 | OK ;   Environment is OK
 | 
|---|
| 70 |  N PXRMI,PXRMB,PXRMS,PXRML
 | 
|---|
| 71 |  S PXRMS="  Environment "_$S($L($G(PXRMHF)):("for distribution "_$G(PXRMHF)_" "),1:"")_"is ok"
 | 
|---|
| 72 |  D BM(PXRMS)
 | 
|---|
| 73 |  S PXRML="  This distribution contains builds:   "
 | 
|---|
| 74 |  D M(" ") F PXRMI=1:1 Q:'$L($P($G(PXRMBLDS),";",PXRMI))  S PXRMB=$P($G(PXRMBLDS),";",PXRMI) D
 | 
|---|
| 75 |  . S PXRMS=PXRML_PXRMB,PXRML="                                       " D:$L($G(PXRMB)) M(PXRMS)
 | 
|---|
| 76 |  D M(" ")
 | 
|---|
| 77 |  Q
 | 
|---|
| 78 |  ;            
 | 
|---|
| 79 |  ;   Individual Checks
 | 
|---|
| 80 | UR(X) ;     Check User variables
 | 
|---|
| 81 |  Q:'$L($G(DUZ(0))) 0
 | 
|---|
| 82 |  Q:+($G(DUZ))=0!($$NOTDEF(+$G(DUZ))) 0
 | 
|---|
| 83 |  Q 1
 | 
|---|
| 84 | NOTDEF(PXRMI) ;     Check to see if user is defined
 | 
|---|
| 85 |  N DA,DR,DIQ,PXRMU,DIC S DA=PXRMI,DR=.01,DIC=200,DIQ="PXRMU" D EN^DIQ1
 | 
|---|
| 86 |  Q '$D(PXRMU)
 | 
|---|
| 87 | SY(X) ;     Check System variables
 | 
|---|
| 88 |  Q:'$D(IO)!('$D(IOF))!('$D(IOM))!('$D(ION))!('$D(IOSL))!('$D(IOST)) 0
 | 
|---|
| 89 |  Q 1
 | 
|---|
| 90 |  ;            
 | 
|---|
| 91 |  ;   Messages
 | 
|---|
| 92 | ET(X) ;     Error Test
 | 
|---|
| 93 |  N PXRMI S PXRMI=+($G(PXRMERR(0))),PXRMI=PXRMI+1,PXRMERR(PXRMI)="    "_$G(X),PXRMERR(0)=PXRMI
 | 
|---|
| 94 |  Q
 | 
|---|
| 95 | ED ;     Error Display
 | 
|---|
| 96 |  N PXRMI S PXRMI=0 F  S PXRMI=$O(PXRMERR(PXRMI)) Q:+PXRMI=0  D M(PXRMERR(PXRMI))
 | 
|---|
| 97 |  D M(" ") K PXRMERR Q
 | 
|---|
| 98 | BM(X) ;     Blank Line with Message
 | 
|---|
| 99 |  D BMES^XPDUTL($G(X)) Q
 | 
|---|
| 100 | M(X) ;     Message
 | 
|---|
| 101 |  D MES^XPDUTL($G(X)) Q
 | 
|---|