- BLRPRE25 ; IHS/OIT/MKK - IHS Lab PATCH 1025 Environment/Post Install Routine ;DEC 09, 2008 8:30 AM
- ;;5.2;IHS LABORATORY;**1025**;NOV 01, 1997
- ;
- PRECHK ; EP
- D BMES^XPDUTL("Beginning of Pre Check.")
- NEW CP,LINE2,RPMS,RPMSVER
- NEW STR ; String -- used as an array for messages.
- NEW LASTPTCH ; Last Patch of Lab
- NEW LSTPISTS ; Last Patch Install Status
- NEW WOTERR ; Array of errors detected
- ;
- S LINE2=$T(+2) ; Second line of THIS Routine
- ;
- I $G(XPDNM)="" D SORRY("XPDNM not defined or 0.",,,1025) Q
- ;
- S CP=$P(XPDNM,"*",3) ; Current Patch Number
- S RPMS=$P(XPDNM,"*",1) ; RPMS Module
- S RPMSVER=$P(XPDNM,"*",2) ; Version of RPMS module being patched
- ;
- PTCHLAST ; EP - Check for previous patch
- D MES^XPDUTL(" Need LR*5.2*1024 Patch Installed.")
- I $$PATCH^XPDUTL("LR*5.2*1024")'=1 D SORRY("LR*5.2*1024 Patch Not Installed.",,,1025) Q
- ;
- D OKAY^BLRKIDSU("LR*5.2*1024 Patch Installed.",10)
- ; I $$LASTPTCH(1024)'="OK" Q ; Abort if Lab Patch 1024 NOT Installed
- ;
- S XPDNOQUE="NO QUE" ; No Queuing Allowed
- ;
- ; The following line prevents the "Disable Options..." and "Move
- ; Routines..." questions from being asked during the install.
- I $G(XPDENV)=1 S (XPDDIQ("XPZ1"),XPDDIQ("XPZ2"))=0
- I $G(XPDENV)=1 S (XPDDIQ("XPZ1"),XPDDIQ("XPZ2"))=0
- F X="XPO1","XPZ1","XPZ2","XPI1" S XPDDIQ(X)=0
- ;
- S XPDABORT=0 ; KIDS install Flag
- ;
- USERID ; EP - CHECK FOR USER ID
- I '$G(DUZ) D SORRY("DUZ UNDEFINED OR 0.",,,CP) Q
- ;
- I '$L($G(DUZ(0))) D SORRY("DUZ(0) UNDEFINED OR NULL.",,,CP) Q
- ;
- D HOME^%ZIS ; IO Defaults
- D DTNOLF^DICRW ; Set DT variable without Doing a Line Feed
- ;
- S X=$P($G(^VA(200,DUZ,0)),U)
- I $G(X) D SORRY^BLRKIDSU("Installer cannot be identified!",,,CP) Q
- ;
- D MES^XPDUTL("Pre Check complete.")
- ; D MES^XPDUTL(" ")
- ;
- LETSGO ; EP - USER IDENTIFIED -- LET'S GO
- D BMES^XPDUTL("Hello, "_$P(X,",",2)_" "_$P(X,","))
- ;
- D BMES^XPDUTL("Checking Environment for Patch "_CP_" of Version "_RPMSVER_" of "_RPMS_".")
- ;
- D NEEDIT("DI","22.0",,.WOTERR,CP) ; CHECK FOR FILEMAN 22.0
- ;
- D NEEDIT("XU","8.0",1013,.WOTERR,CP) ; CHECK FOR KERNEL 8.0 & PATCH 1013
- ;
- D CHECKLMI(.WOTERR,CP) ; CHECK FOR LMI MAIL GROUP
- ;
- D NEEDIT("XM","7.1",1005,.WOTERR,CP) ; CHECK FOR MAILMAN 7.1
- ;
- I XPDABORT<1 D BMES^XPDUTL("ENVIRONMENT OK.") ; ENVIRONMENT OK
- ;
- I XPDABORT>0 D SORRYEND^BLRKIDSU(.WOTERR,CP) ; ENVIRONMENT HAS ERROR(S)
- ;
- Q
- ;
- BACKUP ; EP
- NEW CP ; Current Patch
- S CP=$TR($P($T(+2),";",5),"*")
- ;
- D BACKUPS^BLRKIDSU(CP)
- Q
- ;
- POST ; EP -- POST INSTALL
- NEW CP ; Current Patch
- S CP=$TR($P($T(+2),";",5),"*")
- ;
- D MODBLRM ; Modify BLRMENU option(s)
- ;
- D ADDDELTA ; Add 4 new Delta Checks
- ;
- D BBMOD ; Blood Bank Modification
- ;
- ; I $$EXIST^%R("BEHOLPCI.INT") D
- ; . D POSTINIT^BEHOLPCI ; EHR Point-of-Care Initialization
- ;
- D BMES^XPDUTL("Laboratory Patch "_CP_" INSTALL complete.")
- ;
- ; Store # of times installation occurred as well as person & date/time
- D ENDINSTL^BLRKIDSU(CP)
- ;
- ; Complete Message
- S XQAMSG="Laboratory Patch "_CP_" INSTALL complete."
- S XQA("G.LMI")=""
- D SETUP^XQALERT
- ;
- Q
- ;
- BBMOD ; Blood Bank Module Modification -- Change the length of the UNIT ID field.
- NEW MAXSTR,OKAY,SPEC,STR,SUBSTR
- NEW WOTDD
- ;
- D TABMESG^BLRKIDSU("Changing UNIT ID & HELP field max length in BLOOD PRODUCT file.",5)
- S MAXSTR=30
- S OKAY=0
- ;
- S STR=$G(^DD(65,.01,0))
- S SUBSTR=$P($P($P($P(STR,"^",5),">",2),")",1),"!",1)
- ;
- I +SUBSTR'<MAXSTR D Q
- . D OKAY^BLRKIDSU("UNIT ID field max length already CHANGED.",10)
- ;
- I +$L(SUBSTR)<1!($L($P(STR,">",2))<1) D Q
- . D SORRY("UNIT ID field in BLOOD PRODUCT file damaged: examine with FileMan.","NONFATAL")
- ;
- S SPEC(SUBSTR)=MAXSTR
- S STR=$$REPLACE^XLFSTR(STR,.SPEC)
- S WOTDD="^DD(65,.01,0)"
- S @WOTDD=STR
- ;
- S SUBSTR=$P($P($P($P($G(^DD(65,.01,0)),"^",5),">",2),")",1),"!",1)
- ;
- I +SUBSTR'<MAXSTR D
- . D OKAY^BLRKIDSU("UNIT ID field max length in BLOOD PRODUCT file changed.",10)
- . S OKAY=OKAY+1
- ;
- I +SUBSTR<MAXSTR D
- . D TABMESG^BLRKIDSU("UNIT ID field max length in BLOOD PRODUCT file NOT changed.",10)
- ;
- S STR=$G(^DD(65,.01,3))
- S SUBSTR=$P($P(STR,"-",2)," ",1)
- ;
- I +SUBSTR'<MAXSTR D Q
- . D OKAY^BLRKIDSU("UNIT ID field HELP String in BLOOD PRODUCT file already >="_MAXSTR_".",10)
- ;
- S SPEC(SUBSTR)=MAXSTR
- S STR=$$REPLACE^XLFSTR(STR,.SPEC)
- S WOTDD="^DD(65,.01,3)"
- S @WOTDD=STR
- ;
- S SUBSTR=$P($P($G(^DD(65,.01,3)),"-",2)," ",1)
- ;
- I +SUBSTR'<MAXSTR D
- . D OKAY^BLRKIDSU("UNIT ID field HELP String in BLOOD PRODUCT file Changed.",10)
- . S OKAY=OKAY+1
- ;
- I +SUBSTR<MAXSTR D Q
- . D TABMESG^BLRKIDSU("UNIT ID field HELP String in BLOOD PRODUCT file NOT changed.",10)
- ;
- D OKAY^BLRKIDSU("Changed UNIT ID & HELP field max length in BLOOD PRODUCT file.")
- Q
- ;
- DEBUG ; EP - Debugging Line Label for environment checker
- NEW CP,DEBUG,LINE2,XPDNM
- S DEBUG="YES"
- S XPDNM="LR*5.2*1025"
- D PRECHK
- Q
- ;
- MODBLRM ; EP
- ; Add Lab Version/Patch report option to the BLRMENU
- D ADDTMENU^BLRKIDSU("BLRMENU","BLRVPTCH","LVP",,CP)
- ;
- ; Add "Busy Device" Report option to BLRMENU
- D ADDTMENU^BLRKIDSU("BLRMENU","BLRPCCBD","BZY",,CP)
- ;
- ; Add Lab Description File Abbreviation Report to BLRMENU
- D ADDTMENU^BLRKIDSU("BLRMENU","BLRLDFAR","MMR",,CP)
- ;
- Q
- ;
- ADDDELTA ; EP
- NEW DESC,DESC1STR,DESC2STR,NAME,OVER1,OVER1STR,XCODE,XCODESTR
- ; Add 4 new Delta Checks to the Delta Check dictionary.
- ; This is to accomodate the Estimated GFR calculations required by
- ; the National Kidney Foundation:
- ; www.nkdep.nih.gov/resources/laboratory_reporting.htm
- ;
- S DESC1STR="This delta check, when added to a test named CREATININE (NKDF), will calculate an"
- S DESC2STR="estimated Glomerular Filtration Rate (GFR) using the standard MDRD Study"
- S XCODESTR="S %X="""" X:$D(LRDEL(1)) LRDEL(1) W:$G(%X)'="""" "" Calculated GFR:"",%X S:LRVRM>10 LRSB($$GETDNAM^BLREXEC2(""EST GFR""))=%X K %,%X,%Y,%Z,%ZZ"
- S OVER1STR="S %ZZ=$$GETDNAM^BLREXEC2(""CREATININE (NKDF)"") X:LRVRM>10 ""F %=%ZZ S %X(%)=$S(%=LRSB:X,$D(LRSB(%)):+LRSB(%),1:0)"" X:LRVRM>10 ""F %=%ZZ S %X(%)=$S($D(LRSB(%)):LRSB(%),1:0)"""
- ;
- S NAME="GFRSE1CU"
- S XCODE=XCODESTR
- S OVER1=OVER1STR_" S %X=$$GFRSE1CU^BLREXEC2(X)"
- S DESC(1)=DESC1STR
- S DESC(2)=DESC2STR
- S DESC(3)="Equation 1 with conventional Units and stuff the result into the test called"
- S DESC(4)="EST GFR"
- D DLTADICA(NAME,XCODE,OVER1,.DESC)
- ;
- S NAME="GFRSE1SI"
- S XCODE=XCODESTR
- S OVER1=OVER1STR_" S %X=$$GFRSE1SI^BLREXEC2(X)"
- K DESC(3),DESC(4)
- S DESC(3)="Equation 1 with SI Units and stuff the result into the test called EST GFR"
- D DLTADICA(NAME,XCODE,OVER1,.DESC)
- ;
- S NAME="GFRSE2CU"
- S XCODE=XCODESTR
- S OVER1=OVER1STR_" S %X=$$GFRSE2CU^BLREXEC2(X)"
- K DESC(3),DESC(4)
- S DESC(3)="Equation 2 with conventional Units and stuff the result into the test called"
- S DESC(4)="EST GFR"
- D DLTADICA(NAME,XCODE,OVER1,.DESC)
- ;
- S NAME="GFRSE2SI"
- S XCODE=XCODESTR
- S OVER1=OVER1STR_" S %X=$$GFRSE2SI^BLREXEC2(X)"
- K DESC(3),DESC(4)
- S DESC(3)="Equation 2 with SI Units and stuff the result into the test called EST GFR"
- D DLTADICA(NAME,XCODE,OVER1,.DESC)
- ;
- Q
- ;
- DLTADICA(NAME,XCODE,OVER1,DESC) ; EP
- NEW DICT0,DICT1,FDA,ERRS,PTR
- NEW HEREYAGO
- ;
- D BMES^XPDUTL("Adding "_NAME_" to Delta Check Dictionary")
- ;
- D ^XBFMK
- K ERRS,FDA,IENS,DIE
- ;
- S DICT1="62.1"
- S FDA(DICT1,"?+1,",.01)=NAME ; Find the Name node, or create it.
- S FDA(DICT1,"?+1,",10)=XCODE ; Execute Code
- S FDA(DICT1,"?+1,",20)=OVER1 ; Overflow 1
- D UPDATE^DIE("S","FDA",,"ERRS")
- ;
- I $D(ERRS("DIERR"))>0 D Q
- . D SORRY^BLRKIDSU("Error in adding "_NAME_" to the Delta Check Dictionary.","NONFATAL",,CP)
- ;
- D OKAY^BLRKIDSU(NAME_" Delta Check added to Delta Check Dictionary.",5)
- ;
- ; Now, add the Description
- K ERRS
- D FIND^DIC(62.1,"","","",NAME,"","","","","HEREYAGO") ; Get Pointer
- S PTR=$G(HEREYAGO("DILIST",2,1))
- M WPARRAY("WP")=DESC
- D WP^DIE(62.1,PTR_",",30,"K","WPARRAY(""WP"")","ERRS")
- ;
- I $D(ERRS("DIERR"))>0 D Q
- . D SORRY^BLRKIDSU("Error in adding DESCRIPTION to "_NAME_" Delta Check in the Delta Check Dictionary.","NONFATAL",,CP)
- ;
- D OKAY^BLRKIDSU(NAME_" Delta Check DESCRIPTION added to Delta Check Dictionary.",5)
- ;
- ; Now, add the SITE NOTES DATE
- K ERRS,FDA
- S FDA(62.131,"?+1,"_PTR_",",.01)=$P($$NOW^XLFDT,".",1)
- D UPDATE^DIE("S","FDA",,"ERRS")
- ;
- I $D(ERRS("DIERR"))>0 D Q
- . D SORRY^BLRKIDSU("Error in adding SITES NOTES DATE to "_NAME_" Delta Check in the Delta Check Dictionary.","NONFATAL",,CP)
- ;
- ; Now, add the TEXT
- K ERRS,WPARRAY
- S WPARRAY("WP",1)="Created by IHS Lab Patch 1025"
- D WP^DIE(62.131,"1,"_PTR_",",1,"K","WPARRAY(""WP"")","ERRS")
- ;
- I $D(ERRS("DIERR"))>0 D Q
- . D SORRY^BLRKIDSU("Error in adding TEXT to "_NAME_" Delta Check in the Delta Check Dictionary.","NONFATAL",,CP)
- ;
- D OKAY^BLRKIDSU(NAME_" Delta Check TEXT added to Delta Check Dictionary.",5)
- Q
- ;
- LASTPTCH(CP) ; EP
- NEW COMPFLAG,COMPPTCH,LASTPTCH,LRPATCH,LPIEN,STR
- ;
- S LASTPTCH=CP-1
- ;
- D BMES^XPDUTL("Need at least IHS Lab Patch "_LASTPTCH)
- ;
- S LRPATCH="LR*5.2*1099",COMPFLAG="NO"
- F S LRPATCH=$O(^XPD(9.7,"B",LRPATCH),-1) D Q:LRPATCH=""!(COMPFLAG="YES")!($E(LRPATCH,1,2)'="LR")!($P(LRPATCH,"*",3)<LASTPTCH)
- . S LPIEN=$O(^XPD(9.7,"B",LRPATCH,""),-1)
- . I $P($G(^XPD(9.7,+$G(LPIEN),0)),"^",9)=3 S COMPFLAG="YES",COMPPTCH=LRPATCH
- ;
- I COMPFLAG'="YES"!($P(COMPPTCH,"*",3)<LASTPTCH) D Q "NOT OK"
- . D SORRY("Need at least IHS Lab Patch "_LASTPTCH,,"Latest IHS Lab Patch Found is "_COMPPTCH_".",CP)
- ;
- D OKAY^BLRKIDSU("IHS Lab Patch "_LASTPTCH_" Installed.",10)
- ;
- Q "OK"
- ;
- SORRY(MSG,MODE,MSG2,CP) ; EP
- ; Error Message routine. It will send an ALERT and a MailMan message
- ; to the people who are assigned to the LMI Mail group (if it exists).
- ;
- ; The STR array is built so that the error/warning message will
- ; also appear on the INSTALL LOG via the D BMES^XPDUTL(.STR) call.
- ;
- NEW MESSAGE
- I $G(MODE)'["NONFATAL" D
- . S MESSAGE="Install Aborting due to the following Systems Environment issue:"
- . S XPDABORT=1 ; Fatal Error Flag Set
- ;
- I $G(MODE)["NONFATAL" S MESSAGE="*** WARNING *** WARNING *** WARNING ***"
- ;
- K DIFQ
- ;
- NEW STR,LINECNT
- S LINECNT=1
- D ADDLINE(" ",.LINECNT)
- D ADDLINE($TR($J("",65)," ","*"),.LINECNT) ; Row of asterisks
- D ADDLINE(" ",.LINECNT)
- D ADDLINE($$CJ^XLFSTR("Site: "_$$LOC^XBFUNC,65),.LINECNT)
- D ADDLINE(" ",.LINECNT)
- D ADDLINE($$CJ^XLFSTR(MESSAGE,65),.LINECNT)
- D ADDLINE(" ",.LINECNT)
- D ADDLINE($$CJ^XLFSTR(">>> "_MSG_" <<<",65),.LINECNT)
- I $D(MSG2) D ADDLINE($$CJ^XLFSTR(">>> "_MSG2_" <<<",65),.LINECNT)
- D ADDLINE(" ",.LINECNT)
- ;
- I $G(MODE)["NONFATAL" D ADDLINE($$CJ^XLFSTR(MESSAGE,65),.LINECNT)
- ;
- I $G(MODE)'["NONFATAL" D
- . D ADDLINE($$CJ^XLFSTR("Please print/capture this screen and",65),.LINECNT)
- . D ADDLINE($$CJ^XLFSTR("notify the Support Center at",65),.LINECNT)
- . D ADDLINE(" ",.LINECNT)
- . D ADDLINE($$CJ^XLFSTR("1-999-999-9999.",65),.LINECNT)
- . D ADDLINE(" ",.LINECNT)
- ;
- D ADDLINE($TR($J("",65)," ","*"),.LINECNT) ; Row of asterisks
- D ADDLINE(" ",.LINECNT)
- ;
- D BMES^XPDUTL(.STR) ; Display the message
- ;
- ; If Debugging, just exit -- Don't send e-mail nor alert
- I $G(DEBUG)="YES" Q
- ;
- ; If no DUZ, it's impossible to send e-mail & alert, so just quit
- I '$G(DUZ)!('$L($G(DUZ(0)))) Q
- ;
- I $G(MODE)'="NONFATAL" D Q
- . D SNDALERT("Laboratory Patch "_CP_" >> FATAL >> "_MSG)
- . D SENDMAIL("IHS Lab Patch "_CP_" Install FATAL Error")
- ;
- I $G(MODE)="NONFATAL" D
- . D SNDALERT("Laboratory Patch "_CP_" - "_MODE_" - "_MSG)
- . D SENDMAIL("IHS Lab Patch "_CP_" Install NONFATAL Error")
- Q
- ;
- SNDALERT(ALERTMSG) ; EP -Send alert to LMI group
- S XQAMSG=ALERTMSG
- S XQA("G.LMI")=""
- D SETUP^XQALERT
- K XQA,XQAMSG
- Q
- ;
- SENDMAIL(MAILMSG) ; EP - Send MailMan E-mail to LMI group
- K XMY
- S XMY("G.LMI")="" ; Group
- S %DT="T"
- S X="NOW"
- D ^%DT
- D DD^LRX
- S LRBLNOW=Y
- ;
- S XMSUB=MAILMSG
- S XMTEXT="STR("
- S XMDUZ=$P($G(^VA(200,DUZ,0)),U)
- D ^XMD ; Send the MailMan e-mail
- K X,XMDUZ,XMSUB,XMTEXT,Y ; Cleanup
- Q
- ;
- ADDLINE(ASTR,LC) ; EP
- ; Add a line to the STR array
- I $G(ASTR)="" S ASTR=" "
- S STR(LC)=ASTR
- S LC=LC+1
- Q
- ;
- CHECKLMI(WOTERR,CP) ; EP -CHECK FOR LMI MAIL GROUP
- NEW OKAY
- D BMES^XPDUTL("Must have 'LMI' mail group present.")
- S DIC="^XMB(3.8,"
- S X="LMI"
- D ^DIC
- S OKAY=+Y
- I OKAY>0 D OKAY^BLRKIDSU("'LMI' mail group found.")
- I OKAY<1 D
- . D SORRY^BLRKIDSU("'LMI' mail group NOT found!",,,CP)
- . S WOTERR("XMB(3.8","Mail Group","3.8")="LMI Mail Group"
- Q
- ;
- NEEDIT(MODULE,VERSION,PATCH,WOTERR,CP) ; EP
- ; Generic "Find RPMS Module's Version and (perhaps) Patch number"
- ; NOTE: The MODULE variable MUST be the PREFIX name
- ; from the PACKAGE file (9.4).
- NEW NAME ; NAME of RPMS Module
- NEW PTR ; PoinTeR to PACKAGE file
- NEW HEREYAGO ; Array to store returned values from FIND^DIC
- NEW STR1,STR2 ; Temporary Strings
- NEW SYSVER,SYSPATCH ; System Version & System Patch variables
- ;
- ; Use FileMan API to get information
- D FIND^DIC(9.4,"","","",MODULE,"","C","","","HEREYAGO")
- S PTR=$G(HEREYAGO("DILIST",2,1))
- S NAME=$G(HEREYAGO("DILIST",1,1))
- ;
- D BMES^XPDUTL("Need at least "_NAME_" "_VERSION)
- ;
- S SYSVER=$$VERSION^XPDUTL(MODULE) ; Get the System's Version
- ; If System Version < Needed Version, write message and quit
- I SYSVER<VERSION D Q
- . S WOTERR(MODULE,NAME,VERSION)=""
- . S STR1="Need "_NAME_" "_VERSION_" & "_NAME_" "_SYSVER_" found!"
- . I $L(STR1)<58 D SORRY^BLRKIDSU(STR1,,,CP)
- . I $L(STR1)>57 D
- .. S STR1="Need "_NAME_" "_VERSION_" & "
- .. S STR2=NAME_" "_SYSVER_" found!"
- .. D SORRY^BLRKIDSU(STR1,,STR2,CP)
- ;
- D OKAY^BLRKIDSU(NAME_" "_SYSVER_" found.")
- I VERSION<SYSVER Q ; If Version needed is lower, skip Patch check
- ;
- I $G(PATCH)="" Q ; If no Patch check, just exit
- ;
- D BMES^XPDUTL(" Need "_NAME_" "_VERSION_" Patch "_PATCH_".")
- S SYSPATCH=$$PATCH^XPDUTL(MODULE_"*"_VERSION_"*"_PATCH)
- I SYSPATCH'=1 D Q
- . S WOTERR(MODULE,NAME,VERSION)=$G(PATCH)
- . S STR1=NAME_" "_VERSION_" Patch "_PATCH_" WAS NOT installed!"
- . I $L(STR1)<58 D SORRY^BLRKIDSU(STR1,,,CP)
- . I $L(STR1)>57 D
- .. S STR1=NAME_" "_VERSION
- .. S STR2="Patch "_PATCH_" WAS NOT installed!"
- .. D SORRY^BLRKIDSU(STR1,,STR2,CP)
- ;
- D OKAY^BLRKIDSU(NAME_" "_VERSION_" Patch "_PATCH_" found.",10)
- ;
- Q
- BLRPRE25 ; IHS/OIT/MKK - IHS Lab PATCH 1025 Environment/Post Install Routine ;DEC 09, 2008 8:30 AM
- +1 ;;5.2;IHS LABORATORY;**1025**;NOV 01, 1997
- +2 ;
- PRECHK ; EP
- +1 DO BMES^XPDUTL("Beginning of Pre Check.")
- +2 NEW CP,LINE2,RPMS,RPMSVER
- +3 ; String -- used as an array for messages.
- NEW STR
- +4 ; Last Patch of Lab
- NEW LASTPTCH
- +5 ; Last Patch Install Status
- NEW LSTPISTS
- +6 ; Array of errors detected
- NEW WOTERR
- +7 ;
- +8 ; Second line of THIS Routine
- SET LINE2=$TEXT(+2)
- +9 ;
- +10 IF $GET(XPDNM)=""
- DO SORRY("XPDNM not defined or 0.",,,1025)
- QUIT
- +11 ;
- +12 ; Current Patch Number
- SET CP=$PIECE(XPDNM,"*",3)
- +13 ; RPMS Module
- SET RPMS=$PIECE(XPDNM,"*",1)
- +14 ; Version of RPMS module being patched
- SET RPMSVER=$PIECE(XPDNM,"*",2)
- +15 ;
- PTCHLAST ; EP - Check for previous patch
- +1 DO MES^XPDUTL(" Need LR*5.2*1024 Patch Installed.")
- +2 IF $$PATCH^XPDUTL("LR*5.2*1024")'=1
- DO SORRY("LR*5.2*1024 Patch Not Installed.",,,1025)
- QUIT
- +3 ;
- +4 DO OKAY^BLRKIDSU("LR*5.2*1024 Patch Installed.",10)
- +5 ; I $$LASTPTCH(1024)'="OK" Q ; Abort if Lab Patch 1024 NOT Installed
- +6 ;
- +7 ; No Queuing Allowed
- SET XPDNOQUE="NO QUE"
- +8 ;
- +9 ; The following line prevents the "Disable Options..." and "Move
- +10 ; Routines..." questions from being asked during the install.
- +11 IF $GET(XPDENV)=1
- SET (XPDDIQ("XPZ1"),XPDDIQ("XPZ2"))=0
- +12 IF $GET(XPDENV)=1
- SET (XPDDIQ("XPZ1"),XPDDIQ("XPZ2"))=0
- +13 FOR X="XPO1","XPZ1","XPZ2","XPI1"
- SET XPDDIQ(X)=0
- +14 ;
- +15 ; KIDS install Flag
- SET XPDABORT=0
- +16 ;
- USERID ; EP - CHECK FOR USER ID
- +1 IF '$GET(DUZ)
- DO SORRY("DUZ UNDEFINED OR 0.",,,CP)
- QUIT
- +2 ;
- +3 IF '$LENGTH($GET(DUZ(0)))
- DO SORRY("DUZ(0) UNDEFINED OR NULL.",,,CP)
- QUIT
- +4 ;
- +5 ; IO Defaults
- DO HOME^%ZIS
- +6 ; Set DT variable without Doing a Line Feed
- DO DTNOLF^DICRW
- +7 ;
- +8 SET X=$PIECE($GET(^VA(200,DUZ,0)),U)
- +9 IF $GET(X)
- DO SORRY^BLRKIDSU("Installer cannot be identified!",,,CP)
- QUIT
- +10 ;
- +11 DO MES^XPDUTL("Pre Check complete.")
- +12 ; D MES^XPDUTL(" ")
- +13 ;
- LETSGO ; EP - USER IDENTIFIED -- LET'S GO
- +1 DO BMES^XPDUTL("Hello, "_$PIECE(X,",",2)_" "_$PIECE(X,","))
- +2 ;
- +3 DO BMES^XPDUTL("Checking Environment for Patch "_CP_" of Version "_RPMSVER_" of "_RPMS_".")
- +4 ;
- +5 ; CHECK FOR FILEMAN 22.0
- DO NEEDIT("DI","22.0",,.WOTERR,CP)
- +6 ;
- +7 ; CHECK FOR KERNEL 8.0 & PATCH 1013
- DO NEEDIT("XU","8.0",1013,.WOTERR,CP)
- +8 ;
- +9 ; CHECK FOR LMI MAIL GROUP
- DO CHECKLMI(.WOTERR,CP)
- +10 ;
- +11 ; CHECK FOR MAILMAN 7.1
- DO NEEDIT("XM","7.1",1005,.WOTERR,CP)
- +12 ;
- +13 ; ENVIRONMENT OK
- IF XPDABORT<1
- DO BMES^XPDUTL("ENVIRONMENT OK.")
- +14 ;
- +15 ; ENVIRONMENT HAS ERROR(S)
- IF XPDABORT>0
- DO SORRYEND^BLRKIDSU(.WOTERR,CP)
- +16 ;
- +17 QUIT
- +18 ;
- BACKUP ; EP
- +1 ; Current Patch
- NEW CP
- +2 SET CP=$TRANSLATE($PIECE($TEXT(+2),";",5),"*")
- +3 ;
- +4 DO BACKUPS^BLRKIDSU(CP)
- +5 QUIT
- +6 ;
- POST ; EP -- POST INSTALL
- +1 ; Current Patch
- NEW CP
- +2 SET CP=$TRANSLATE($PIECE($TEXT(+2),";",5),"*")
- +3 ;
- +4 ; Modify BLRMENU option(s)
- DO MODBLRM
- +5 ;
- +6 ; Add 4 new Delta Checks
- DO ADDDELTA
- +7 ;
- +8 ; Blood Bank Modification
- DO BBMOD
- +9 ;
- +10 ; I $$EXIST^%R("BEHOLPCI.INT") D
- +11 ; . D POSTINIT^BEHOLPCI ; EHR Point-of-Care Initialization
- +12 ;
- +13 DO BMES^XPDUTL("Laboratory Patch "_CP_" INSTALL complete.")
- +14 ;
- +15 ; Store # of times installation occurred as well as person & date/time
- +16 DO ENDINSTL^BLRKIDSU(CP)
- +17 ;
- +18 ; Complete Message
- +19 SET XQAMSG="Laboratory Patch "_CP_" INSTALL complete."
- +20 SET XQA("G.LMI")=""
- +21 DO SETUP^XQALERT
- +22 ;
- +23 QUIT
- +24 ;
- BBMOD ; Blood Bank Module Modification -- Change the length of the UNIT ID field.
- +1 NEW MAXSTR,OKAY,SPEC,STR,SUBSTR
- +2 NEW WOTDD
- +3 ;
- +4 DO TABMESG^BLRKIDSU("Changing UNIT ID & HELP field max length in BLOOD PRODUCT file.",5)
- +5 SET MAXSTR=30
- +6 SET OKAY=0
- +7 ;
- +8 SET STR=$GET(^DD(65,.01,0))
- +9 SET SUBSTR=$PIECE($PIECE($PIECE($PIECE(STR,"^",5),">",2),")",1),"!",1)
- +10 ;
- +11 IF +SUBSTR'<MAXSTR
- Begin DoDot:1
- +12 DO OKAY^BLRKIDSU("UNIT ID field max length already CHANGED.",10)
- End DoDot:1
- QUIT
- +13 ;
- +14 IF +$LENGTH(SUBSTR)<1!($LENGTH($PIECE(STR,">",2))<1)
- Begin DoDot:1
- +15 DO SORRY("UNIT ID field in BLOOD PRODUCT file damaged: examine with FileMan.","NONFATAL")
- End DoDot:1
- QUIT
- +16 ;
- +17 SET SPEC(SUBSTR)=MAXSTR
- +18 SET STR=$$REPLACE^XLFSTR(STR,.SPEC)
- +19 SET WOTDD="^DD(65,.01,0)"
- +20 SET @WOTDD=STR
- +21 ;
- +22 SET SUBSTR=$PIECE($PIECE($PIECE($PIECE($GET(^DD(65,.01,0)),"^",5),">",2),")",1),"!",1)
- +23 ;
- +24 IF +SUBSTR'<MAXSTR
- Begin DoDot:1
- +25 DO OKAY^BLRKIDSU("UNIT ID field max length in BLOOD PRODUCT file changed.",10)
- +26 SET OKAY=OKAY+1
- End DoDot:1
- +27 ;
- +28 IF +SUBSTR<MAXSTR
- Begin DoDot:1
- +29 DO TABMESG^BLRKIDSU("UNIT ID field max length in BLOOD PRODUCT file NOT changed.",10)
- End DoDot:1
- +30 ;
- +31 SET STR=$GET(^DD(65,.01,3))
- +32 SET SUBSTR=$PIECE($PIECE(STR,"-",2)," ",1)
- +33 ;
- +34 IF +SUBSTR'<MAXSTR
- Begin DoDot:1
- +35 DO OKAY^BLRKIDSU("UNIT ID field HELP String in BLOOD PRODUCT file already >="_MAXSTR_".",10)
- End DoDot:1
- QUIT
- +36 ;
- +37 SET SPEC(SUBSTR)=MAXSTR
- +38 SET STR=$$REPLACE^XLFSTR(STR,.SPEC)
- +39 SET WOTDD="^DD(65,.01,3)"
- +40 SET @WOTDD=STR
- +41 ;
- +42 SET SUBSTR=$PIECE($PIECE($GET(^DD(65,.01,3)),"-",2)," ",1)
- +43 ;
- +44 IF +SUBSTR'<MAXSTR
- Begin DoDot:1
- +45 DO OKAY^BLRKIDSU("UNIT ID field HELP String in BLOOD PRODUCT file Changed.",10)
- +46 SET OKAY=OKAY+1
- End DoDot:1
- +47 ;
- +48 IF +SUBSTR<MAXSTR
- Begin DoDot:1
- +49 DO TABMESG^BLRKIDSU("UNIT ID field HELP String in BLOOD PRODUCT file NOT changed.",10)
- End DoDot:1
- QUIT
- +50 ;
- +51 DO OKAY^BLRKIDSU("Changed UNIT ID & HELP field max length in BLOOD PRODUCT file.")
- +52 QUIT
- +53 ;
- DEBUG ; EP - Debugging Line Label for environment checker
- +1 NEW CP,DEBUG,LINE2,XPDNM
- +2 SET DEBUG="YES"
- +3 SET XPDNM="LR*5.2*1025"
- +4 DO PRECHK
- +5 QUIT
- +6 ;
- MODBLRM ; EP
- +1 ; Add Lab Version/Patch report option to the BLRMENU
- +2 DO ADDTMENU^BLRKIDSU("BLRMENU","BLRVPTCH","LVP",,CP)
- +3 ;
- +4 ; Add "Busy Device" Report option to BLRMENU
- +5 DO ADDTMENU^BLRKIDSU("BLRMENU","BLRPCCBD","BZY",,CP)
- +6 ;
- +7 ; Add Lab Description File Abbreviation Report to BLRMENU
- +8 DO ADDTMENU^BLRKIDSU("BLRMENU","BLRLDFAR","MMR",,CP)
- +9 ;
- +10 QUIT
- +11 ;
- ADDDELTA ; EP
- +1 NEW DESC,DESC1STR,DESC2STR,NAME,OVER1,OVER1STR,XCODE,XCODESTR
- +2 ; Add 4 new Delta Checks to the Delta Check dictionary.
- +3 ; This is to accomodate the Estimated GFR calculations required by
- +4 ; the National Kidney Foundation:
- +5 ; www.nkdep.nih.gov/resources/laboratory_reporting.htm
- +6 ;
- +7 SET DESC1STR="This delta check, when added to a test named CREATININE (NKDF), will calculate an"
- +8 SET DESC2STR="estimated Glomerular Filtration Rate (GFR) using the standard MDRD Study"
- +9 SET XCODESTR="S %X="""" X:$D(LRDEL(1)) LRDEL(1) W:$G(%X)'="""" "" Calculated GFR:"",%X S:LRVRM>10 LRSB($$GETDNAM^BLREXEC2(""EST GFR""))=%X K %,%X,%Y,%Z,%ZZ"
- +10 SET OVER1STR="S %ZZ=$$GETDNAM^BLREXEC2(""CREATININE (NKDF)"") X:LRVRM>10 ""F %=%ZZ S %X(%)=$S(%=LRSB:X,$D(LRSB(%)):+LRSB(%),1:0)"" X:LRVRM>10 ""F %=%ZZ S %X(%)=$S($D(LRSB(%)):LRSB(%),1:0)"""
- +11 ;
- +12 SET NAME="GFRSE1CU"
- +13 SET XCODE=XCODESTR
- +14 SET OVER1=OVER1STR_" S %X=$$GFRSE1CU^BLREXEC2(X)"
- +15 SET DESC(1)=DESC1STR
- +16 SET DESC(2)=DESC2STR
- +17 SET DESC(3)="Equation 1 with conventional Units and stuff the result into the test called"
- +18 SET DESC(4)="EST GFR"
- +19 DO DLTADICA(NAME,XCODE,OVER1,.DESC)
- +20 ;
- +21 SET NAME="GFRSE1SI"
- +22 SET XCODE=XCODESTR
- +23 SET OVER1=OVER1STR_" S %X=$$GFRSE1SI^BLREXEC2(X)"
- +24 KILL DESC(3),DESC(4)
- +25 SET DESC(3)="Equation 1 with SI Units and stuff the result into the test called EST GFR"
- +26 DO DLTADICA(NAME,XCODE,OVER1,.DESC)
- +27 ;
- +28 SET NAME="GFRSE2CU"
- +29 SET XCODE=XCODESTR
- +30 SET OVER1=OVER1STR_" S %X=$$GFRSE2CU^BLREXEC2(X)"
- +31 KILL DESC(3),DESC(4)
- +32 SET DESC(3)="Equation 2 with conventional Units and stuff the result into the test called"
- +33 SET DESC(4)="EST GFR"
- +34 DO DLTADICA(NAME,XCODE,OVER1,.DESC)
- +35 ;
- +36 SET NAME="GFRSE2SI"
- +37 SET XCODE=XCODESTR
- +38 SET OVER1=OVER1STR_" S %X=$$GFRSE2SI^BLREXEC2(X)"
- +39 KILL DESC(3),DESC(4)
- +40 SET DESC(3)="Equation 2 with SI Units and stuff the result into the test called EST GFR"
- +41 DO DLTADICA(NAME,XCODE,OVER1,.DESC)
- +42 ;
- +43 QUIT
- +44 ;
- DLTADICA(NAME,XCODE,OVER1,DESC) ; EP
- +1 NEW DICT0,DICT1,FDA,ERRS,PTR
- +2 NEW HEREYAGO
- +3 ;
- +4 DO BMES^XPDUTL("Adding "_NAME_" to Delta Check Dictionary")
- +5 ;
- +6 DO ^XBFMK
- +7 KILL ERRS,FDA,IENS,DIE
- +8 ;
- +9 SET DICT1="62.1"
- +10 ; Find the Name node, or create it.
- SET FDA(DICT1,"?+1,",.01)=NAME
- +11 ; Execute Code
- SET FDA(DICT1,"?+1,",10)=XCODE
- +12 ; Overflow 1
- SET FDA(DICT1,"?+1,",20)=OVER1
- +13 DO UPDATE^DIE("S","FDA",,"ERRS")
- +14 ;
- +15 IF $DATA(ERRS("DIERR"))>0
- Begin DoDot:1
- +16 DO SORRY^BLRKIDSU("Error in adding "_NAME_" to the Delta Check Dictionary.","NONFATAL",,CP)
- End DoDot:1
- QUIT
- +17 ;
- +18 DO OKAY^BLRKIDSU(NAME_" Delta Check added to Delta Check Dictionary.",5)
- +19 ;
- +20 ; Now, add the Description
- +21 KILL ERRS
- +22 ; Get Pointer
- DO FIND^DIC(62.1,"","","",NAME,"","","","","HEREYAGO")
- +23 SET PTR=$GET(HEREYAGO("DILIST",2,1))
- +24 MERGE WPARRAY("WP")=DESC
- +25 DO WP^DIE(62.1,PTR_",",30,"K","WPARRAY(""WP"")","ERRS")
- +26 ;
- +27 IF $DATA(ERRS("DIERR"))>0
- Begin DoDot:1
- +28 DO SORRY^BLRKIDSU("Error in adding DESCRIPTION to "_NAME_" Delta Check in the Delta Check Dictionary.","NONFATAL",,CP)
- End DoDot:1
- QUIT
- +29 ;
- +30 DO OKAY^BLRKIDSU(NAME_" Delta Check DESCRIPTION added to Delta Check Dictionary.",5)
- +31 ;
- +32 ; Now, add the SITE NOTES DATE
- +33 KILL ERRS,FDA
- +34 SET FDA(62.131,"?+1,"_PTR_",",.01)=$PIECE($$NOW^XLFDT,".",1)
- +35 DO UPDATE^DIE("S","FDA",,"ERRS")
- +36 ;
- +37 IF $DATA(ERRS("DIERR"))>0
- Begin DoDot:1
- +38 DO SORRY^BLRKIDSU("Error in adding SITES NOTES DATE to "_NAME_" Delta Check in the Delta Check Dictionary.","NONFATAL",,CP)
- End DoDot:1
- QUIT
- +39 ;
- +40 ; Now, add the TEXT
- +41 KILL ERRS,WPARRAY
- +42 SET WPARRAY("WP",1)="Created by IHS Lab Patch 1025"
- +43 DO WP^DIE(62.131,"1,"_PTR_",",1,"K","WPARRAY(""WP"")","ERRS")
- +44 ;
- +45 IF $DATA(ERRS("DIERR"))>0
- Begin DoDot:1
- +46 DO SORRY^BLRKIDSU("Error in adding TEXT to "_NAME_" Delta Check in the Delta Check Dictionary.","NONFATAL",,CP)
- End DoDot:1
- QUIT
- +47 ;
- +48 DO OKAY^BLRKIDSU(NAME_" Delta Check TEXT added to Delta Check Dictionary.",5)
- +49 QUIT
- +50 ;
- LASTPTCH(CP) ; EP
- +1 NEW COMPFLAG,COMPPTCH,LASTPTCH,LRPATCH,LPIEN,STR
- +2 ;
- +3 SET LASTPTCH=CP-1
- +4 ;
- +5 DO BMES^XPDUTL("Need at least IHS Lab Patch "_LASTPTCH)
- +6 ;
- +7 SET LRPATCH="LR*5.2*1099"
- SET COMPFLAG="NO"
- +8 FOR
- SET LRPATCH=$ORDER(^XPD(9.7,"B",LRPATCH),-1)
- Begin DoDot:1
- +9 SET LPIEN=$ORDER(^XPD(9.7,"B",LRPATCH,""),-1)
- +10 IF $PIECE($GET(^XPD(9.7,+$GET(LPIEN),0)),"^",9)=3
- SET COMPFLAG="YES"
- SET COMPPTCH=LRPATCH
- End DoDot:1
- IF LRPATCH=""!(COMPFLAG="YES")!($EXTRACT(LRPATCH,1,2)'="LR")!($PIECE(LRPATCH,"*",3)<LASTPTCH)
- QUIT
- +11 ;
- +12 IF COMPFLAG'="YES"!($PIECE(COMPPTCH,"*",3)<LASTPTCH)
- Begin DoDot:1
- +13 DO SORRY("Need at least IHS Lab Patch "_LASTPTCH,,"Latest IHS Lab Patch Found is "_COMPPTCH_".",CP)
- End DoDot:1
- QUIT "NOT OK"
- +14 ;
- +15 DO OKAY^BLRKIDSU("IHS Lab Patch "_LASTPTCH_" Installed.",10)
- +16 ;
- +17 QUIT "OK"
- +18 ;
- SORRY(MSG,MODE,MSG2,CP) ; EP
- +1 ; Error Message routine. It will send an ALERT and a MailMan message
- +2 ; to the people who are assigned to the LMI Mail group (if it exists).
- +3 ;
- +4 ; The STR array is built so that the error/warning message will
- +5 ; also appear on the INSTALL LOG via the D BMES^XPDUTL(.STR) call.
- +6 ;
- +7 NEW MESSAGE
- +8 IF $GET(MODE)'["NONFATAL"
- Begin DoDot:1
- +9 SET MESSAGE="Install Aborting due to the following Systems Environment issue:"
- +10 ; Fatal Error Flag Set
- SET XPDABORT=1
- End DoDot:1
- +11 ;
- +12 IF $GET(MODE)["NONFATAL"
- SET MESSAGE="*** WARNING *** WARNING *** WARNING ***"
- +13 ;
- +14 KILL DIFQ
- +15 ;
- +16 NEW STR,LINECNT
- +17 SET LINECNT=1
- +18 DO ADDLINE(" ",.LINECNT)
- +19 ; Row of asterisks
- DO ADDLINE($TRANSLATE($JUSTIFY("",65)," ","*"),.LINECNT)
- +20 DO ADDLINE(" ",.LINECNT)
- +21 DO ADDLINE($$CJ^XLFSTR("Site: "_$$LOC^XBFUNC,65),.LINECNT)
- +22 DO ADDLINE(" ",.LINECNT)
- +23 DO ADDLINE($$CJ^XLFSTR(MESSAGE,65),.LINECNT)
- +24 DO ADDLINE(" ",.LINECNT)
- +25 DO ADDLINE($$CJ^XLFSTR(">>> "_MSG_" <<<",65),.LINECNT)
- +26 IF $DATA(MSG2)
- DO ADDLINE($$CJ^XLFSTR(">>> "_MSG2_" <<<",65),.LINECNT)
- +27 DO ADDLINE(" ",.LINECNT)
- +28 ;
- +29 IF $GET(MODE)["NONFATAL"
- DO ADDLINE($$CJ^XLFSTR(MESSAGE,65),.LINECNT)
- +30 ;
- +31 IF $GET(MODE)'["NONFATAL"
- Begin DoDot:1
- +32 DO ADDLINE($$CJ^XLFSTR("Please print/capture this screen and",65),.LINECNT)
- +33 DO ADDLINE($$CJ^XLFSTR("notify the Support Center at",65),.LINECNT)
- +34 DO ADDLINE(" ",.LINECNT)
- +35 DO ADDLINE($$CJ^XLFSTR("1-999-999-9999.",65),.LINECNT)
- +36 DO ADDLINE(" ",.LINECNT)
- End DoDot:1
- +37 ;
- +38 ; Row of asterisks
- DO ADDLINE($TRANSLATE($JUSTIFY("",65)," ","*"),.LINECNT)
- +39 DO ADDLINE(" ",.LINECNT)
- +40 ;
- +41 ; Display the message
- DO BMES^XPDUTL(.STR)
- +42 ;
- +43 ; If Debugging, just exit -- Don't send e-mail nor alert
- +44 IF $GET(DEBUG)="YES"
- QUIT
- +45 ;
- +46 ; If no DUZ, it's impossible to send e-mail & alert, so just quit
- +47 IF '$GET(DUZ)!('$LENGTH($GET(DUZ(0))))
- QUIT
- +48 ;
- +49 IF $GET(MODE)'="NONFATAL"
- Begin DoDot:1
- +50 DO SNDALERT("Laboratory Patch "_CP_" >> FATAL >> "_MSG)
- +51 DO SENDMAIL("IHS Lab Patch "_CP_" Install FATAL Error")
- End DoDot:1
- QUIT
- +52 ;
- +53 IF $GET(MODE)="NONFATAL"
- Begin DoDot:1
- +54 DO SNDALERT("Laboratory Patch "_CP_" - "_MODE_" - "_MSG)
- +55 DO SENDMAIL("IHS Lab Patch "_CP_" Install NONFATAL Error")
- End DoDot:1
- +56 QUIT
- +57 ;
- SNDALERT(ALERTMSG) ; EP -Send alert to LMI group
- +1 SET XQAMSG=ALERTMSG
- +2 SET XQA("G.LMI")=""
- +3 DO SETUP^XQALERT
- +4 KILL XQA,XQAMSG
- +5 QUIT
- +6 ;
- SENDMAIL(MAILMSG) ; EP - Send MailMan E-mail to LMI group
- +1 KILL XMY
- +2 ; Group
- SET XMY("G.LMI")=""
- +3 SET %DT="T"
- +4 SET X="NOW"
- +5 DO ^%DT
- +6 DO DD^LRX
- +7 SET LRBLNOW=Y
- +8 ;
- +9 SET XMSUB=MAILMSG
- +10 SET XMTEXT="STR("
- +11 SET XMDUZ=$PIECE($GET(^VA(200,DUZ,0)),U)
- +12 ; Send the MailMan e-mail
- DO ^XMD
- +13 ; Cleanup
- KILL X,XMDUZ,XMSUB,XMTEXT,Y
- +14 QUIT
- +15 ;
- ADDLINE(ASTR,LC) ; EP
- +1 ; Add a line to the STR array
- +2 IF $GET(ASTR)=""
- SET ASTR=" "
- +3 SET STR(LC)=ASTR
- +4 SET LC=LC+1
- +5 QUIT
- +6 ;
- CHECKLMI(WOTERR,CP) ; EP -CHECK FOR LMI MAIL GROUP
- +1 NEW OKAY
- +2 DO BMES^XPDUTL("Must have 'LMI' mail group present.")
- +3 SET DIC="^XMB(3.8,"
- +4 SET X="LMI"
- +5 DO ^DIC
- +6 SET OKAY=+Y
- +7 IF OKAY>0
- DO OKAY^BLRKIDSU("'LMI' mail group found.")
- +8 IF OKAY<1
- Begin DoDot:1
- +9 DO SORRY^BLRKIDSU("'LMI' mail group NOT found!",,,CP)
- +10 SET WOTERR("XMB(3.8","Mail Group","3.8")="LMI Mail Group"
- End DoDot:1
- +11 QUIT
- +12 ;
- NEEDIT(MODULE,VERSION,PATCH,WOTERR,CP) ; EP
- +1 ; Generic "Find RPMS Module's Version and (perhaps) Patch number"
- +2 ; NOTE: The MODULE variable MUST be the PREFIX name
- +3 ; from the PACKAGE file (9.4).
- +4 ; NAME of RPMS Module
- NEW NAME
- +5 ; PoinTeR to PACKAGE file
- NEW PTR
- +6 ; Array to store returned values from FIND^DIC
- NEW HEREYAGO
- +7 ; Temporary Strings
- NEW STR1,STR2
- +8 ; System Version & System Patch variables
- NEW SYSVER,SYSPATCH
- +9 ;
- +10 ; Use FileMan API to get information
- +11 DO FIND^DIC(9.4,"","","",MODULE,"","C","","","HEREYAGO")
- +12 SET PTR=$GET(HEREYAGO("DILIST",2,1))
- +13 SET NAME=$GET(HEREYAGO("DILIST",1,1))
- +14 ;
- +15 DO BMES^XPDUTL("Need at least "_NAME_" "_VERSION)
- +16 ;
- +17 ; Get the System's Version
- SET SYSVER=$$VERSION^XPDUTL(MODULE)
- +18 ; If System Version < Needed Version, write message and quit
- +19 IF SYSVER<VERSION
- Begin DoDot:1
- +20 SET WOTERR(MODULE,NAME,VERSION)=""
- +21 SET STR1="Need "_NAME_" "_VERSION_" & "_NAME_" "_SYSVER_" found!"
- +22 IF $LENGTH(STR1)<58
- DO SORRY^BLRKIDSU(STR1,,,CP)
- +23 IF $LENGTH(STR1)>57
- Begin DoDot:2
- +24 SET STR1="Need "_NAME_" "_VERSION_" & "
- +25 SET STR2=NAME_" "_SYSVER_" found!"
- +26 DO SORRY^BLRKIDSU(STR1,,STR2,CP)
- End DoDot:2
- End DoDot:1
- QUIT
- +27 ;
- +28 DO OKAY^BLRKIDSU(NAME_" "_SYSVER_" found.")
- +29 ; If Version needed is lower, skip Patch check
- IF VERSION<SYSVER
- QUIT
- +30 ;
- +31 ; If no Patch check, just exit
- IF $GET(PATCH)=""
- QUIT
- +32 ;
- +33 DO BMES^XPDUTL(" Need "_NAME_" "_VERSION_" Patch "_PATCH_".")
- +34 SET SYSPATCH=$$PATCH^XPDUTL(MODULE_"*"_VERSION_"*"_PATCH)
- +35 IF SYSPATCH'=1
- Begin DoDot:1
- +36 SET WOTERR(MODULE,NAME,VERSION)=$GET(PATCH)
- +37 SET STR1=NAME_" "_VERSION_" Patch "_PATCH_" WAS NOT installed!"
+38 IF $LENGTH(STR1)<58
DO SORRY^BLRKIDSU(STR1,,,CP)
+39 IF $LENGTH(STR1)>57
Begin DoDot:2
+40 SET STR1=NAME_" "_VERSION
+41 SET STR2="Patch "_PATCH_" WAS NOT installed!"
+42 DO SORRY^BLRKIDSU(STR1,,STR2,CP)
End DoDot:2
End DoDot:1
QUIT
+43 ;
+44 DO OKAY^BLRKIDSU(NAME_" "_VERSION_" Patch "_PATCH_" found.",10)
+45 ;
+46 QUIT