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

BLRPRE41.m

Go to the documentation of this file.
  1. BLRPRE41 ; IHS/MSC/MKK - RPMS Lab Patch LR*5.2*1041 Pre/Install/Post Routine ; 13-Oct-2017 14:04 ; MKK
  1. ;;5.2;IHS LABORATORY;**1041**;NOV 01, 1997;Build 23
  1. ;
  1. ENVICHEK ; EP - Environment Checker
  1. NEW BLRVERN,BLRVERN2,CP,ERRARRAY,ROWSTARS,RPMS,RPMSVER,TODAY,WOTCNT
  1. ;
  1. Q:$$ENVIVARS()="Q"
  1. ;
  1. D ENVHEADR^BLRKIDS2(CP,RPMSVER,RPMS),BLANK
  1. ;
  1. D NEEDIT^BLRKIDS2(CP,"LR","5.2",1040,.ERRARRAY),BLANK ; Lab Pre-Requisite
  1. ;
  1. I XPDABORT>0 D SORRYEND^BLRKIDS2(.ERRARRAY,CP) Q ; ENVIRONMENT HAS ERROR(S)
  1. ;
  1. D BOKAY^BLRKIDS2("ENVIRONMENT")
  1. ;
  1. Q
  1. ;
  1. ENVIVARS() ; EP - Setup the Environment variables
  1. D SETEVARS
  1. ;
  1. S TODAY=$$DT^XLFDT
  1. S WOTCNT=$$WOTCNT(BLRVERN)
  1. S ROWSTARS=$TR($J("",65)," ","*") ; Row of asterisks
  1. ;
  1. S ^XTMP(BLRVERN,0)=$$HTFM^XLFDT(+$H+90)_"^"_$$DT^XLFDT_"^IHS Lab Patch "_CPSTR
  1. M ^XTMP(BLRVERN,TODAY,WOTCNT,"DUZ")=DUZ
  1. S ^XTMP(BLRVERN,TODAY,WOTCNT,"BEGIN")=$$NOW^XLFDT
  1. ;
  1. S XUMF=1
  1. ;
  1. I $G(XPDNM)="" D SORRY^BLRKIDS2(CP,"XPDNM not defined or 0.") Q "Q"
  1. ;
  1. S RPMS=$P(XPDNM,"*",1) ; RPMS Module
  1. S RPMSVER=$P(XPDNM,"*",2) ; RPMS Version
  1. ;
  1. I +$G(DUZ)<1 D SORRY^BLRKIDS2(CP,"DUZ UNDEFINED OR 0.") Q "Q"
  1. I $$GET1^DIQ(200,DUZ,"NAME")="" D SORRY^BLRKIDS2(CP,"Installer cannot be identified!") Q "Q"
  1. ;
  1. S XPDNOQUE=1 ; No Queuing Allowed
  1. ;
  1. ; The following line prevents the "Disable Options..." and "Move
  1. ; Routines..." questions from being asked during the install.
  1. F X="XPO1","XPZ1","XPZ2","XPI1" S XPDDIQ(X)=0,XPDDIQ(X,"B")="NO"
  1. ;
  1. S XPDABORT=0 ; KIDS install Flag
  1. ;
  1. D HOME^%ZIS ; Reset/Initialize IO variables
  1. D DTNOLF^DICRW ; Set DT variable without a Line Feed
  1. ;
  1. Q "OK"
  1. ;
  1. PRE ; EP - Ask for confirmation of Backup
  1. NEW BLRVERN,BLRVERN2,CNT,CP,CPSTR,CRTLINE,DIRASTR,FDAROOT,IEN,IENS,MSGROOT
  1. NEW BCKUPCNT ; Current Patch,Backup count
  1. ;
  1. D SETEVARS
  1. ;
  1. S XUMF=1
  1. ;
  1. D INITSCR
  1. D TITLE^XPDID(CPSTR)
  1. D BLANK,BMES^XPDUTL("Pre-Install begins "_$$UP^XLFSTR($$HTE^XLFDT($H,"5MPZ"))_".")
  1. ;
  1. Q:$$BACKUP()="Q"
  1. ;
  1. D INITSCR
  1. D TITLE^XPDID(CPSTR)
  1. D BLANK,BMES^XPDUTL("Pre-Install of "_BLRVERN_" Continues.")
  1. ;
  1. ; Do Pre-install stuff here.
  1. D SAVEOFF
  1. ;
  1. D BMES^XPDUTL("Pre-Install ends "_$$UP^XLFSTR($$HTE^XLFDT($H,"5MPZ"))_".")
  1. H 2 ; Pause so user can see the message.
  1. ;
  1. ; D EXIT^XPDID
  1. Q
  1. ;
  1. BACKUP() ; EP - Confirm Backup
  1. NEW BCKUPCNT,SUCCSTR
  1. ;
  1. D SHOWBOX^BLRGMENU("ATTENTION",10,70)
  1. ;
  1. D ^XBFMK
  1. S DIR(0)="Y"
  1. S DIR("B")="NO"
  1. I $G(IOST)["C-VT" S SUCCSTR=$C(27)_"[1;7;5m"_">> SUCCESSFUL <<"_$C(27)_"[0m"
  1. E S SUCCSTR=">> SUCCESSFUL <<"
  1. S DIR("A")=$J("",10)_"Has a "_SUCCSTR_" backup been performed?"
  1. S DIR("?")="A *NO* answer will abort the install process."
  1. D ^DIR
  1. W !
  1. ;
  1. Q:+$G(Y)'=1 $$NOBACKUP() ; If BACKUP not performed, then ABORT installation.
  1. ;
  1. Q:+$G(DEBUG) $$OKBACKUP() ; DEBUG will *NOT* store Backup Confirmation data.
  1. ;
  1. ; Store backup confirmation person & date/time
  1. S BCKUPCNT=1+$O(^BLRINSTL("LAB PATCH",CP,"BACKUP CONFIRMED BY",0),-1)
  1. S ^BLRINSTL("LAB PATCH",CP,"BACKUP CONFIRMED BY",BCKUPCNT)=$P($G(^VA(200,DUZ,0)),U)
  1. S ^BLRINSTL("LAB PATCH",CP,"BACKUP CONFIRMED BY",BCKUPCNT,"DUZ")=DUZ
  1. S ^BLRINSTL("LAB PATCH",CP,"BACKUP CONFIRMED BY",BCKUPCNT,"DATE/TIME")=$$HTE^XLFDT($H,"5MZ")
  1. ;
  1. Q $$OKBACKUP()
  1. ;
  1. OKBACKUP() ; EP - Backup Confirmed.
  1. D BLANK
  1. D OKAY^BLRKIDSU("SUCCESSFUL system backup CONFIRMED by: "_$$GET1^DIQ(200,DUZ,"NAME")_".",5)
  1. I +$G(DEBUG) D
  1. . D BLANK
  1. . D TABMENU^BLRKIDSU("DEBUG will **NOT** Store Backup Confirmation.",10)
  1. ;
  1. H 2 ; Pause to let the user see the message.
  1. Q "OK"
  1. ;
  1. NOBACKUP() ; EP - No backup message
  1. S XPDABORT=1
  1. D PASSMESG^BLRKIDS2("ATTENTION")
  1. D TABMESG^BLRKIDSU("SUCCESSFUL system backup has >>> NOT <<< been confirmed.",15)
  1. D TABMESG^BLRKIDSU("Installer: "_$$GET1^DIQ(200,DUZ,"NAME")_" ["_DUZ_"].",25)
  1. D TABMESG^BLRKIDSU("Install Aborting.",15)
  1. H 2 ; Pause to let the user see the message.
  1. Q "Q"
  1. ;
  1. DEBUG ; EP - Debugging Line Label for environment checker
  1. NEW BEGTIME,BLRVERN,CP,CPSTR,DEBUG,ENDTIME,ERRARRAY,LASTLOGI
  1. NEW LRBLNOW,PATCHNUM,PREREQ,QFLG,ROWSTARS,RPMS,RPMSVER,STR
  1. NEW SUCCSTR,TODAY,WHATCNT,WOTCNT,XPDABORT,XPDENV,XPDNM
  1. ;
  1. ; NOTE: DEBUG will not store "Backup" data.
  1. ;
  1. D SETEVARS
  1. ;
  1. W !!
  1. W "Debug Routine ",BLRVERN," Begins:",!!
  1. ;
  1. S DEBUG=1 ; Don't Send Alerts
  1. ;
  1. W !
  1. S XPDNM=CPSTR
  1. S (XPDENV,XPDABORT)=0
  1. ;
  1. D PRE
  1. Q:XPDABORT
  1. ;
  1. W !!!
  1. ;
  1. D ^XBFMK
  1. S DIR(0)="YO"
  1. S DIR("B")="NO"
  1. S DIR("A")="Test Post Install Code"
  1. D ^DIR
  1. ;
  1. D:+$G(Y)=1 POST
  1. ;
  1. W !!,"Debug Routine ",BLRVERN," Ends.",!!
  1. Q
  1. ;
  1. POST ; EP - Post-Install
  1. NEW BLRVERN,BLRVERN2,CP,CPSTR,PATCHNUM,TODAY,WOTCNT
  1. ;
  1. D SETEVARS
  1. ;
  1. D BLANK
  1. D BMES^XPDUTL("Laboratory Patch "_CPSTR_" POST INSTALL begins at "_$$UP^XLFSTR($$HTE^XLFDT($H,"5MPZ"))_".")
  1. D BLANK
  1. ;
  1. S TODAY=$$DT^XLFDT
  1. S WOTCNT=$$WOTCNT(BLRVERN)
  1. ;
  1. D ADDOPTS ; Add new options to BLRMENU
  1. ;
  1. D VBECSUPD ; VBECS Update
  1. ;
  1. D FORCENO ; Force new parameters to NO
  1. ;
  1. D ADDDESC ; Add Descriptions to 3 Mail Groups
  1. ;
  1. I $L($G(^DD(90475.8,0,"VR")))<1 D
  1. . S FORCEDD="^DD(90475.8,0,""VR"")"
  1. . S @FORCEDD=5.2 ; Force Version Number into Data Dictionary.
  1. . S FORCEDD="^DD(90475.8,0,""VRPK"")"
  1. . S @FORCEDD="LR" ; Force Lab Link into Data Dictionary.
  1. ;
  1. D BLANK
  1. D BMES^XPDUTL("Laboratory Patch "_CPSTR_" POST INSTALL ends at "_$$UP^XLFSTR($$HTE^XLFDT($H,"5MPZ"))_".")
  1. D BLANK
  1. ;
  1. D POSTMAIL(BLRVERN,CPSTR)
  1. ;
  1. S ^XTMP(BLRVERN,TODAY,WOTCNT,"END")=$$NOW^XLFDT
  1. Q
  1. ;
  1. ADDOPTS ; EP - Add new options
  1. D ADDOPTS^BLRKIDS2("BLRMENU","BLR PARMETERS AND MAIL GROUPS","PAMG")
  1. D ADDOPTS^BLRKIDS2("BLRMENU","BLROLOR","ORDO")
  1. ; D ADDOPTS^BLRKIDS2("BLRMENU","BLRPURGU","PURG")
  1. D ADDOPTS^BLRKIDS2("LRSUPERVISOR","BLRPURGU","PURR")
  1. D ADDOPTS^BLRKIDS2("BLRMENU","BLR PATIENT REMINDER DOCUMENT","PDOC")
  1. D ADDOPTS^BLRKIDS2("BLRMENU","BLRERRTR","ERRT")
  1. Q
  1. ;
  1. FORCENO ; EP - Force new parameters to be NO
  1. NEW (DEBUG,DILOCKTM,DISYS,DT,DTIME,DUZ,IO,IOBS,IOF,IOM,ION,IOS,IOSL,IOST,IOT,IOXY,U,XPARSYS,XQXFLG)
  1. ;
  1. D SETBLRVS
  1. Q:'$$GETPARS(.PARSLIST)
  1. ;
  1. I +$G(DEBUG) D Q ; If DEBUG, just print messages & quit
  1. . S TAB=$J("",10)
  1. . D BLANK,OKAY^BLRKIDSU("DEBUG: FORCENO^"_BLRVERN,4)
  1. . S PARAMETER=""
  1. . F S PARAMETER=$O(PARSLIST(PARAMETER)) Q:PARAMETER="" D
  1. .. D MES^XPDUTL(TAB_"DEBUG will *NOT* modify "_PARAMETER_" parameter.")
  1. ;
  1. S PARAMETER=""
  1. F S PARAMETER=$O(PARSLIST(PARAMETER)) Q:PARAMETER="" D
  1. . K ERRS
  1. . D EN^XPAR("PKG",PARAMETER,,"NO",.ERRS)
  1. . I +$G(ERRS) D
  1. .. D BLANK,MES^XPDUTL(PARAMETER_" parameter not modified."),BLANK
  1. .. D STORERRS^BLREMERA(ERRS,PARAMETER)
  1. Q
  1. ;
  1. GETPARS(PARSLIST) ; EP - Function to get Parameters from BUILD file
  1. NEW (DEBUG,DILOCKTM,DISYS,DT,DTIME,DUZ,IO,IOBS,IOF,IOM,ION,IOS,IOSL,IOST,IOT,IOXY,PARSLIST,U,XPARSYS,XQXFLG)
  1. ;
  1. D SETEVARS
  1. ;
  1. S BUILDIEN=$$FIND1^DIC(9.6,,,CPSTR)
  1. Q:BUILDIEN<1 0
  1. ;
  1. S PARAMTRS="",CNT=0
  1. F S PARAMTRS=$O(^XPD(9.6,BUILDIEN,"KRN",8989.51,"NM","B",PARAMTRS)) Q:PARAMTRS="" D
  1. . S PARSLIST(PARAMTRS)="",CNT=CNT+1
  1. ;
  1. Q CNT
  1. ;
  1. ;
  1. SAVEOFF ; EP - Save off all routines being updated by this patch into the ^rBACKUP global.
  1. NEW (DEBUG,DILOCKTM,DISYS,DT,DTIME,DUZ,IO,IOBS,IOF,IOM,ION,IOS,IOSL,IOST,IOT,IOXY,U,XPARSYS,XQXFLG)
  1. ;
  1. Q:$G(^%ZOSF("OS"))'["OpenM" ; If not Cache, cannot use ^%R
  1. ;
  1. S BLRVERN=$TR($P($T(+1),";")," ")
  1. ;
  1. I +$G(DEBUG) D Q ; If DEBUG, just print messages & quit
  1. . S TAB=$J("",10)
  1. . D BLANK,OKAY^BLRKIDSU("DEBUG: SAVEOFF^"_BLRVERN,4)
  1. . D BMES^XPDUTL(TAB_"DEBUG does *NOT* Save off routines.")
  1. ;
  1. S PATCH=$P($T(+2),"*",3)
  1. S BUILD="LR*5.2*"_PATCH
  1. S PATCHIEN=+$O(^XPD(9.6,"B",BUILD,"A"),-1) ; Get the most current Patch IEN
  1. Q:PATCHIEN<1 ; If not in BUILD file, skip
  1. ;
  1. D BMES^XPDUTL("Backing up routines.")
  1. S RTN="",(CNT,RTNCNT)=0
  1. F S RTN=$O(^XPD(9.6,PATCHIEN,"KRN",9.8,"NM","B",RTN)) Q:RTN="" D
  1. . S RTNPATCH=+$RE($P($RE($TR($P($G(^ROUTINE(RTN,0,2)),";",5),"*")),","))
  1. . Q:RTNPATCH<1 ; If RTN not in the ^ROUTINE global, skip
  1. . Q:RTNPATCH'<PATCH ; Only versions < this patch
  1. . ;
  1. . S RTNCNT=RTNCNT+1
  1. . K ERRS,RTNA
  1. . F LN=0:1:$G(^ROUTINE(RTN,0,0)) S RTNA(LN)=$G(^ROUTINE(RTN,0,LN))
  1. . S X=$$ROUTINE^%R(RTN_".INT",.RTNA,.ERRS,"CSB")
  1. . S NOW=$H
  1. . S ^BLRINSTL("LAB PATCH",PATCH,"SAVEOFF",NOW)=$$HTE^XLFDT(NOW,"5MZ")
  1. . S ^BLRINSTL("LAB PATCH",PATCH,"SAVEOFF",NOW,RTN)=$S($D(ERRS)>1:"ERRORS",1:"OK")
  1. . I $D(ERRS)'>1 D
  1. .. D OKAY^BLRKIDSU("Routine "_RTN_" backed up.",4)
  1. .. S CNT=CNT+1
  1. ;
  1. I RTNCNT D
  1. . S TAB=$J("",5)
  1. . D BMES^XPDUTL(TAB_RTNCNT_" routines analyzed.")
  1. . D BMES^XPDUTL(TAB_TAB_CNT_" routines backed up.")
  1. Q
  1. ;
  1. ;
  1. VBECSUPD ; EP - VBECS Update
  1. NEW (DEBUG,DILOCKTM,DISYS,DT,DTIME,DUZ,IO,IOBS,IOF,IOM,ION,IOS,IOSL,IOST,IOT,IOXY,U,XPARSYS,XQXFLG)
  1. ;
  1. Q:$G(^%ZOSF("OS"))'["OpenM" ; If not Cache, cannot use ^%R
  1. ;
  1. D SETBLRVS
  1. ;
  1. S RTN="VB",CNT=0
  1. F S RTN=$O(^ROUTINE(RTN)) Q:RTN=""!($E(RTN,1,2)'="VB") D
  1. . S X=$$DEL^%R(RTN_".INT")
  1. . S X=$$DEL^%R(RTN_".OBJ")
  1. . S CNT=CNT+1
  1. ;
  1. Q:CNT<1
  1. ;
  1. D:$D(^XTMP(BLRVERN,0))<1 XTMPHEAD
  1. S ^XTMP(BLRVERN,$J,"VBECSUPD")=CNT_" VBECS routines removed during Post Install."
  1. Q
  1. ;
  1. ADDDESC ; EP - Add Descriptons to 3 Mail Groups, if and only if they are currently blank
  1. NEW (DILOCKTM,DISYS,DT,DTIME,DUZ,IO,IOBS,IOF,IOM,ION,IOS,IOSL,IOST,IOT,IOXY,U,XPARSYS,XQXFLG)
  1. ;
  1. D ADDLMI
  1. D ADDBLRL
  1. D ADDLABT
  1. Q
  1. ;
  1. ADDLMI ; EP - Add description to LMI Mail Group
  1. NEW WPARRAY
  1. ;
  1. S WPARRAY("WP")=""
  1. S WPARRAY("WP",1)="Laboratory Management Mail Group to receive anomalous and/or descriptive"
  1. S WPARRAY("WP",2)="messages from the Lab subsystem."
  1. ;
  1. D STORDESC("LMI",.WPARRAY)
  1. Q
  1. ;
  1. ADDBLRL ; EP - Add Description to BLRLINK Mail Group
  1. NEW WPARRAY
  1. ;
  1. S WPARRAY("WP")=""
  1. S WPARRAY("WP",1)="Mail Group to receive Lab to PCC linker issues and/or"
  1. S WPARRAY("WP",2)="descriptive messages."
  1. ;
  1. D STORDESC("BLRLINK",.WPARRAY)
  1. Q
  1. ;
  1. ADDLABT ; EP - Add Description to LAB TECHS Mail Group
  1. NEW WPARRAY
  1. ;
  1. S WPARRAY("WP")=""
  1. S WPARRAY("WP",1)="Laboratory Techs."
  1. ;
  1. D STORDESC("LAB TECHS",.WPARRAY)
  1. Q
  1. ;
  1. STORDESC(MGRP,WPARRAY) ; EP - Store description into Mail Group file
  1. NEW LMGIEN
  1. ;
  1. D ^XBFMK
  1. S LMGIEN=+$$FIND1^DIC(3.8,,"O",MGRP) ; Skip if cannot determine Mail Group IEN
  1. ;
  1. Q:$L($$GET1^DIQ(3.801,"1,"_LMGIEN,.01)) ; Skip if description already exists
  1. ;
  1. D ^XBFMK
  1. K ERRS
  1. D WP^DIE(3.8,LMGIEN_",",3,"K","WPARRAY(""WP"")","ERRS")
  1. I '$D(ERRS) D OKAY^BLRKIDSU("Added Description to "_MGRP_" Mail Group.",5) Q
  1. ;
  1. D TABMESG^BLRKIDSU("Could Not Add Description to "_MGRP_" Mail Group.",10)
  1. Q
  1. ;
  1. ;
  1. ; ========================= UTILITIES FOLLOW ==========================
  1. ;
  1. SETEVARS ; EP - SET standard "Enviroment" VARiables.
  1. S (CP,PATCHNUM)=$P($T(+2),"*",3)
  1. S CPSTR="LR*5.2*"_CP
  1. D SETBLRVS
  1. Q
  1. ;
  1. SETBLRVS(TWO) ; EP - Set the BLRVERN variable(s)
  1. K BLRVERN,BLRVERN2
  1. ;
  1. S BLRVERN=$P($P($T(+1),";")," ")
  1. S:$L($G(TWO)) BLRVERN2=$G(TWO)
  1. Q
  1. ;
  1. XTMPHEAD ; EP - Initialize XTMP for this patch
  1. NEW BLRVERN,BLRVERN2,PTCHNAME
  1. D SETBLRVS
  1. S PTCHNAME=$$TRIM^XLFSTR($P($P($P($T(+1),";",2),"-",2),"Pre"),"LR"," ")
  1. S ^XTMP(BLRVERN,0)=$$FMADD^XLFDT($$DT^XLFDT,30)_U_$$DT^XLFDT_U_PTCHNAME
  1. Q
  1. ;
  1. BLANK ; EP - Blank Line
  1. D MES^XPDUTL("")
  1. Q
  1. ;
  1. MESCNTR(STR) ; EP - Center a line and use XPDUTL to display it
  1. D MES^XPDUTL($$CJ^XLFSTR(STR,IOM))
  1. Q
  1. ;
  1. WOTCNT(BLRVERN) ; EP - Counter for ^XTMP
  1. NEW CNT,TODAY
  1. ;
  1. S TODAY=$$DT^XLFDT
  1. ;
  1. S CNT=1+$G(^XTMP(BLRVERN,0,TODAY))
  1. S ^XTMP(BLRVERN,0,TODAY)=CNT
  1. Q $TR($J(CNT,3)," ","0")
  1. ;
  1. INITSCR ; EP - Initialize screen. Cloned from INIT^XPDID
  1. N X,XPDSTR
  1. I IO'=IO(0)!(IOST'["C-VT") S XPDIDVT=0 Q
  1. I $T(PREP^XGF)="" S XPDIDVT=0 Q
  1. D PREP^XGF
  1. S XPDIDVT=1,X="IOSTBM",XPDSTR=""
  1. D ENDR^%ZISS
  1. S IOTM=3,IOBM=IOSL-4
  1. W @IOSTBM
  1. D FRAME^XGF(IOTM-2,0,IOTM-2,IOM-1) ; Top line
  1. ; D FRAME^XGF(IOBM+1,0,IOBM+1,IOM-1) ; Bottom line
  1. D IOXY^XGF(IOTM-2,0)
  1. Q
  1. ;
  1. POSTMAIL(BLRVERN,CPSTR) ; EP - Post Install MailMan Message
  1. Q:+$G(DEBUG) ; No MailMan messages during debugging
  1. ;
  1. NEW STR
  1. ;
  1. S STR(1)=" "
  1. S STR(2)=$J("",10)_"POST INSTALL of "_BLRVERN_" Routine."
  1. S STR(3)=" "
  1. S STR(4)=$J("",15)_"Laboratory Patch "_CPSTR_" INSTALL completed."
  1. S STR(5)=" "
  1. ;
  1. ; Send E-Mail to LMI Mail Group & Installer
  1. D MAILALMI^BLRUTIL3("Laboratory Patch "_CPSTR_" INSTALL complete.",.STR,BLRVERN)
  1. ;
  1. Q