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

BLRPRE27.m

Go to the documentation of this file.
  1. BLRPRE27 ;IHS/OIT/MKK - IHS Lab PATCH 1027 Environment Routine ;JUL 06, 2010 3:14 PM
  1. ;;5.2;IHS LABORATORY;**1027**;NOV 01, 1997
  1. ;
  1. ; TESTING ONE TWO THREE
  1. ;
  1. PRE ; EP
  1. D BMES^XPDUTL("Beginning of Pre Check.")
  1. NEW CP,RPMS,RPMSVER,QFLG,STR
  1. NEW ERRARRAY ; Array of errors detected
  1. NEW ROWSTARS
  1. ;
  1. I $G(XPDNM)="" D SORRY("XPDNM not defined or 0.") Q
  1. ;
  1. S CP=$P(XPDNM,"*",3) ; Current Patch Number
  1. S RPMS=$P(XPDNM,"*",1) ; RPMS Module
  1. S RPMSVER=$P(XPDNM,"*",2) ; Version of RPMS module being patched
  1. ;
  1. S ROWSTARS=$TR($J("",65)," ","*") ; Row of asterisks
  1. ;
  1. USERID ; EP - CHECK FOR USER ID
  1. I +$G(DUZ)<1 D SORRY("DUZ UNDEFINED OR 0.") Q
  1. ;
  1. I $P($G(^VA(200,DUZ,0)),U)="" D SORRY("Installer cannot be identified!") Q
  1. ;
  1. GETREADY ; EP
  1. S XPDNOQUE="NO QUE" ; 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
  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 Doing a Line Feed
  1. ;
  1. ENVICHEK ; Environment Checker
  1. NEW CHKPATCH
  1. ;
  1. D CHKENHED ; Header
  1. ;
  1. F CHKPATCH=46,61,62,63,65 D NEEDIT("LA","5.2",CHKPATCH,.ERRARRAY)
  1. D MES^XPDUTL(" ")
  1. F CHKPATCH=1005,1006 D NEEDIT("HL","1.6",CHKPATCH,.ERRARRAY)
  1. D MES^XPDUTL(" ")
  1. F CHKPATCH=261,1013 D NEEDIT("XU","8.0",CHKPATCH,.ERRARRAY)
  1. D MES^XPDUTL(" ")
  1. F CHKPATCH=187,202,220,222,230,232,256,261,269,271,282,283,285,287,312,1026 D
  1. . D NEEDIT("LR","5.2",CHKPATCH,.ERRARRAY)
  1. D MES^XPDUTL(" ")
  1. D CHECKLMI(.ERRARRAY) ; CHECK FOR LMI MAIL GROUP
  1. D MES^XPDUTL(" ")
  1. D NEEDIT("XM","8.0",,.ERRARRAY) ; MAILMAN 8.0
  1. D MES^XPDUTL(" ")
  1. D NEEDIT("PIMS","5.3",,.ERRARRAY) ; PIMS 5.3
  1. D MES^XPDUTL(" ")
  1. D NEEDIT("AUT","98.1","22",.ERRARRAY) ; AUT 98.1 & PATCH 22
  1. D MES^XPDUTL(" ")
  1. D NEEDIT("DI","22.0",,.ERRARRAY) ; VA FILEMAN 22.0
  1. D MES^XPDUTL(" ")
  1. ;
  1. I XPDABORT>0 D SORRYEND(.ERRARRAY,CP) Q ; ENVIRONMENT HAS ERROR(S)
  1. ;
  1. D BMES^XPDUTL("ENVIRONMENT OK.")
  1. ;
  1. Q
  1. ;
  1. POST ; EP -- POST INSTALL
  1. NEW CP,STR
  1. ;
  1. S CP=$P($T(+2),"*",3) ; Current Patch
  1. ;
  1. D ADDEAGDC^BLRPR27P ; EAG Delta Check Addition -- POST Install
  1. ;
  1. ; Store # of times installation occurred as well as person & date/time
  1. D ENDINSTL^BLRKIDSU(CP)
  1. ;
  1. D SNDALERT("Laboratory Patch "_CP_" INSTALL complete.")
  1. ;
  1. S STR(1)=" "
  1. S STR(2)=$J("",10)_"POST INSTALL of BLRPRE27 Routine."
  1. S STR(3)=" "
  1. S STR(4)=$J("",15)_"Laboratory Patch "_CP_" INSTALL completed."
  1. S STR(5)=" "
  1. D SENDMAIL("Laboratory Patch "_CP_" INSTALL complete.")
  1. ;
  1. Q
  1. ;
  1. CHKENHED ; EP -- Header
  1. NEW STR
  1. S STR=$TR($J("",IOM)," ","*")
  1. ;
  1. D ^XBCLS
  1. W STR,!
  1. W $TR($$CJ^XLFSTR("@Checking@Environment@for@Patch@"_CP_"@of@Version@"_RPMSVER_"@of@"_RPMS_".@",IOM)," @","* "),!
  1. W STR,!
  1. Q
  1. ;
  1. DEBUG ; EP - Debugging Line Label for environment checker
  1. NEW CP,DEBUG,XPDNM
  1. W !!
  1. D PASSMESG^BLRPRE27("DEBUGGING@BLRPRE27")
  1. ;
  1. S DEBUG="YES"
  1. ;
  1. D ^XBFMK
  1. S DIR(0)="YO"
  1. S DIR("B")="NO"
  1. S DIR("A")="Send Alerts/E-Mails"
  1. D ^DIR
  1. S:+$G(Y)=1 DEBUG="NO"
  1. ;
  1. W !
  1. S XPDNM="LR*5.2*1027"
  1. S XPDENV=0
  1. D PRE
  1. ;
  1. W !!
  1. D ^XBFMK
  1. S DIR(0)="YO"
  1. S DIR("B")="NO"
  1. S DIR("A")="Debug POST Install Code"
  1. D ^DIR
  1. ;
  1. D:+$G(Y)=1 POST
  1. ;
  1. W !!,$TR($J("",IOM)," ","*"),!
  1. W $TR($$CJ^XLFSTR("@DEBUGGING@BLRPRE27@Complete.@",IOM)," @","* "),!
  1. W $TR($J("",IOM)," ","*"),!!
  1. ;
  1. Q
  1. ;
  1. ; Error Message routine.
  1. SORRY(MSG,MODE,MSG2) ; EP
  1. NEW MESSAGE,ROWSTARS
  1. ;
  1. S CP=$P($T(+2),"*",3) ; Current Patch
  1. S ROWSTARS=$TR($J("",65)," ","*") ; Row of asterisks
  1. ;
  1. S MODE=$G(MODE,"FATAL")
  1. ;
  1. I $G(MODE)="FATAL" D
  1. . S MESSAGE="Install Aborting due to the following Systems Environment issue:"
  1. . S XPDABORT=1 ; Fatal Error Flag Set
  1. ;
  1. I $G(MODE)["NONFATAL" S MESSAGE="*** WARNING *** WARNING *** WARNING ***"
  1. ;
  1. K DIFQ
  1. ;
  1. ; STR Array will be used to write to the screen, send E-Mail & Alert
  1. NEW STR,LINECNT
  1. S LINECNT=1
  1. D ADDLINE(" ",.LINECNT)
  1. D ADDLINE(ROWSTARS,.LINECNT)
  1. D ADDLINE(" ",.LINECNT)
  1. D ADDLINE("Site: "_$$LOC^XBFUNC,.LINECNT,"YES")
  1. D ADDLINE(" ",.LINECNT)
  1. D ADDLINE(MESSAGE,.LINECNT,"YES")
  1. D ADDLINE(" ",.LINECNT)
  1. D ADDLINE(">>> "_MSG_" <<<",.LINECNT,"YES")
  1. I $D(MSG2) D ADDLINE(">>> "_MSG2_" <<<",.LINECNT,"YES")
  1. D ADDLINE(" ",.LINECNT)
  1. ;
  1. I $G(MODE)["NONFATAL" D ADDLINE(MESSAGE,.LINECNT,"YES")
  1. ;
  1. I $G(MODE)="FATAL" D
  1. . D ADDLINE("Please print/capture this screen and",.LINECNT,"YES")
  1. . D ADDLINE("notify the Support Center at",.LINECNT,"YES")
  1. . D ADDLINE(" ",.LINECNT)
  1. . D ADDLINE("1-888-830-7280.",.LINECNT,"YES")
  1. . D ADDLINE(" ",.LINECNT)
  1. ;
  1. D ADDLINE(ROWSTARS,.LINECNT) ; Row of asterisks
  1. D ADDLINE(" ",.LINECNT)
  1. ;
  1. D BMES^XPDUTL(.STR)
  1. ;
  1. I $G(DEBUG)="YES" Q
  1. ;
  1. I $G(MODE)="FATAL" D Q
  1. . D SNDALERT("Laboratory Patch "_CP_" >> FATAL << "_MSG)
  1. . D SENDMAIL("IHS Lab Patch "_CP_" Install FATAL Error")
  1. ;
  1. D SNDALERT("Laboratory Patch "_CP_" - "_MODE_" - "_MSG)
  1. D SENDMAIL("IHS Lab Patch "_CP_" Install NONFATAL Error")
  1. Q
  1. ;
  1. SNDALERT(ALERTMSG) ; EP - Send alert to LMI group AND Installer
  1. Q:$G(DEBUG)="YES"
  1. ;
  1. S XQAMSG=ALERTMSG
  1. S XQA("G.LMI")=""
  1. ;
  1. ; If installer not part of LMI Mail Group, send them alert also
  1. S:$$NINLMI(DUZ) XQA(DUZ)=""
  1. ;
  1. D SETUP^XQALERT
  1. K XQA,XQAMSG
  1. Q
  1. ;
  1. NINLMI(CHKDUZ) ; EP -- Check to see if DUZ is NOT part of LMI Mail Group
  1. NEW MGRPIEN,XMDUZ
  1. ;
  1. ; Get IEN of LMI MaiL Group
  1. D CHKGROUP^XMBGRP("LMI",.MGRPIEN) ; VA DBIA 1146
  1. Q:+(MGRPIEN)<1 1 ; If no Mail Group, return TRUE
  1. ;
  1. ; XMDUZ = DUZ of the user
  1. ; Y = IEN of the mail group
  1. S XMDUZ=DUZ
  1. S Y=MGRPIEN
  1. D CHK^XMA21 ; VA DBIA 10067
  1. ;
  1. Q $S($T=1:0,1:1)
  1. ;
  1. SENDMAIL(MAILMSG) ; EP -- Send MailMan E-mail to LMI group AND Installer
  1. Q:$G(DEBUG)="YES"
  1. ;
  1. NEW DIFROM
  1. ;
  1. K XMY
  1. S XMY("G.LMI")=""
  1. ;
  1. ; If installer not part of LMI Mail Group, send them e-mail also
  1. S:$$NINLMI(DUZ) XMY(DUZ)=""
  1. ;
  1. S LRBLNOW=$E($$NOW^XLFDT,1,12)
  1. ;
  1. S XMSUB=MAILMSG
  1. S XMTEXT="STR("
  1. S XMDUZ="Lab Patch 1027"
  1. S XMZ="NOT OKAY"
  1. D ^XMD
  1. ;
  1. I $G(XMMG)'=""!(XMZ="NOT OKAY") D
  1. . D BMES^XPDUTL($J("",5)_"MAILMAN ERROR.")
  1. . D BMES^XPDUTL($J("",10)_"XMZ:"_XMZ)
  1. . D BMES^XPDUTL($J("",10)_"XMMG:"_XMMG)
  1. ;
  1. K X,XMDUZ,XMSUB,XMTEXT,XMY,XMZ,Y ; Cleanup
  1. Q
  1. ;
  1. ADDLINE(ASTR,LC,CENTER) ; EP -- Add a line to the STR array; CENTER if requested
  1. I $G(ASTR)="" S ASTR=" "
  1. S:$G(CENTER)'="YES" STR(LC)=ASTR
  1. S:$G(CENTER)="YES" STR(LC)=$$CJ^XLFSTR(ASTR,65)
  1. S LC=LC+1
  1. Q
  1. ;
  1. SORRYEND(WOTERR,CP) ; EP -- ALL the errors detected during the environment check.
  1. NEW STR,MODULE,NAME,VERSION,PATCH,LINECNT,TMP
  1. ;
  1. D SORRYHED
  1. ;
  1. S (MODULE,NAME,VERSION)=""
  1. F S MODULE=$O(WOTERR(MODULE)) Q:MODULE="" D
  1. . F S NAME=$O(WOTERR(MODULE,NAME)) Q:NAME="" D
  1. .. F S VERSION=$O(WOTERR(MODULE,NAME,VERSION)) Q:VERSION="" D
  1. ... D ADDMESG
  1. ;
  1. D SORRYFIN
  1. ;
  1. D BMES^XPDUTL(.STR)
  1. ;
  1. Q
  1. ;
  1. SORRYHED ; EP -- "Header" of Final Fatal Message
  1. S LINECNT=1
  1. D ADDLINE(" ",.LINECNT)
  1. D ADDLINE(ROWSTARS,.LINECNT)
  1. D ADDLINE(" ",.LINECNT)
  1. D ADDLINE("Systems Environment Error Detected",.LINECNT,"YES")
  1. D ADDLINE("KIDS build will be deleted",.LINECNT,"YES")
  1. D ADDLINE(" ",.LINECNT)
  1. D ADDLINE("Modules with Version or Patch errors",.LINECNT,"YES")
  1. D ADDLINE(" ",.LINECNT)
  1. Q
  1. ;
  1. ADDMESG ; EP
  1. NEW WOT
  1. ;
  1. D ADDLINE(NAME_" ("_MODULE_")",.LINECNT,"YES")
  1. ;
  1. S WOT=$G(WOTERR(MODULE,NAME,VERSION))
  1. S TMP="Version:"_VERSION
  1. I $P(WOT,"^",2)="VERSION" D
  1. . S TMP="Needed Version:"_VERSION
  1. . S TMP=TMP_" Found Version:"_$P(WOT,"^")
  1. I $P(WOT,"^",2)="PATCH" D
  1. . S TMP=TMP_" Needed Patch:"_$P(WOT,"^")
  1. ;
  1. D ADDLINE(TMP,.LINECNT,"YES")
  1. D ADDLINE(" ",.LINECNT)
  1. Q
  1. ;
  1. SORRYFIN ; EP -- "Fin" of Final Fatal Message
  1. D ADDLINE("Re-Installation will be necessary.",.LINECNT,"YES")
  1. D ADDLINE(" ",.LINECNT)
  1. D ADDLINE("If assistance is needed, please call 1-888-830-7280.",.LINECNT,"YES")
  1. D ADDLINE(" ",.LINECNT)
  1. D ADDLINE(ROWSTARS,.LINECNT)
  1. D ADDLINE(" ",.LINECNT)
  1. Q
  1. ;
  1. CHECKLMI(ERRARRAY) ; EP -- CHECK FOR LMI MAIL GROUP
  1. NEW MGRPIEN
  1. D CHKGROUP^XMBGRP("LMI",.MGRPIEN) ; VA DBIA 1146
  1. I MGRPIEN D Q
  1. . D OKAY^BLRKIDSU("LMI Mail Group Exists.")
  1. ;
  1. D BMES^XPDUTL("")
  1. D SORRY("LMI Mail Group Does NOT Exist!")
  1. S ERRARRAY("XMB","Mail Group","3.8")="LMI Mail Group"
  1. Q
  1. ;
  1. ; Generic "Find RPMS Module's Version and (perhaps) Patch number"
  1. ; The MODULE variable MUST be the PREFIX name from the PACKAGE file (9.4).
  1. NEEDIT(MODULE,VERSION,PATCH,ERRARRAY) ; EP
  1. NEW NAME ; NAME of PACKAGE
  1. NEW PTR ; PoinTeR to PACKAGE file
  1. NEW HEREYAGO,STR1,STR2 ; Scratch variables/arrays
  1. NEW SYSVER,SYSPATCH ; System Version & System Patch variables
  1. NEW NAMEVER,NAMESYS
  1. ;
  1. D FIND^DIC(9.4,"",,,MODULE,,"C",,,"HEREYAGO")
  1. S PTR=+$G(HEREYAGO("DILIST",2,1))
  1. ;
  1. I PTR<1 D Q ; Modlue not installed on system -- write message and quit
  1. . S ERRARRAY(MODULE,MODULE,VERSION)="0^VERSION"
  1. . D NEEDMSG("Needed Module "_MODULE_" not Found!")
  1. ;
  1. S NAME=$G(HEREYAGO("DILIST",1,1))
  1. ;
  1. S SYSVER=$$VERSION^XPDUTL(MODULE) ; Get the System's Version
  1. ;
  1. S NAMEVER=NAME_" "_VERSION,NAMESYS=NAME_" "_SYSVER
  1. ;
  1. ; If System Version < Needed Version, write message and quit
  1. I SYSVER<VERSION D Q
  1. . S ERRARRAY(MODULE,NAME,VERSION)=SYSVER_"^VERSION"
  1. . D NEEDMSG("Need "_NAMEVER_" & "_NAMESYS_" found!")
  1. ;
  1. ; If System Version > Needed Version, write message and quit
  1. I VERSION<SYSVER D OKAY^BLRKIDSU("Need "_NAMEVER_" & "_NAMESYS_" found.",5) Q
  1. ;
  1. I $G(PATCH)="" D Q ; If no Patch check, write message and quit
  1. . D OKAY^BLRKIDSU(NAMEVER_" found.",5)
  1. ;
  1. S SYSPATCH=$$PATCH^XPDUTL(MODULE_"*"_VERSION_"*"_PATCH)
  1. I SYSPATCH'=1 D Q
  1. . S ERRARRAY(MODULE,NAME,VERSION)=$G(PATCH)_"^PATCH"
  1. . D NEEDMSG(NAMEVER_" & Patch "_PATCH_" WAS NOT installed!")
  1. ;
  1. D OKAY^BLRKIDSU(NAMEVER_" Patch "_PATCH_" found.",5)
  1. ;
  1. Q
  1. ;
  1. NEEDMSG(MESSAGE) ; EP
  1. NEW STR1,STR2
  1. ;
  1. S STR1=MESSAGE
  1. I $L(STR1)<58 D SORRY(STR1) Q
  1. ;
  1. S STR1=$P(MESSAGE,"&")_" &"
  1. S STR2=$$TRIM^XLFSTR($P(MESSAGE,"&",2),"L"," ")
  1. D SORRY(STR1,,STR2)
  1. Q
  1. ;
  1. MEGAWARN ; EP
  1. NEW CP
  1. ;
  1. S CP=$P($T(+2),"*",3) ; Current Patch
  1. ;
  1. Q:$$BACKUPS="Q"
  1. ;
  1. Q:$$MAKESURE="Q"
  1. ;
  1. W !!
  1. D TEXTONGO
  1. D PRESSKEY(5)
  1. I $G(QFLG)="Q" D Q
  1. . S XPDABORT=1
  1. . D BMES^XPDUTL("")
  1. . D BMES^XPDUTL($J("",15)_"Continue stopped. Install Aborting.")
  1. . D BMES^XPDUTL("")
  1. ;
  1. D REALLYIN ; Store info regarding person insisting on install
  1. Q
  1. ;
  1. JUSTTXT() ; EP
  1. D PASSMESG("ATTENTION")
  1. W !
  1. D COMPLEX
  1. W ?5,"It is also critical that all Laboratorians are prepared for this patch.",!!
  1. W ?5,"Verify with the Lab Supervisor.",!
  1. Q $$MAKESURE
  1. ;
  1. COMPLEX ; EP
  1. W ?5,"Due to the complexities of this install, it is absolutely imperative",!!
  1. W $$CJ^XLFSTR(">>> A VALID BACKUP EXISTS <<<",IOM),!!
  1. W ?5,"because there is no recovery possible except restoring from backup.",!!!
  1. Q
  1. ;
  1. PASSMESG(WOT) ; EP -- Splash message
  1. NEW MAXIT,AROUND
  1. ;
  1. S MAXIT="@"
  1. F J=1:1:$L(WOT) S MAXIT=MAXIT_$E(WOT,J,J)_"@"
  1. S AROUND=$TR($J("",8+$L(MAXIT))," ","@")
  1. S MAXIT="@@!!"_$TR(MAXIT," ","@")_"!!@@"
  1. ;
  1. D ^XBCLS
  1. W $TR($J("",IOM)," ","*"),!
  1. W $TR($J("",IOM)," ","*"),!
  1. W $TR($$CJ^XLFSTR(AROUND,IOM)," @","* "),!
  1. W $TR($$CJ^XLFSTR(MAXIT,IOM)," @","* "),!
  1. W $TR($$CJ^XLFSTR(AROUND,IOM)," @","* "),!
  1. W $TR($J("",IOM)," ","*"),!
  1. W $TR($J("",IOM)," ","*"),!
  1. Q
  1. ;
  1. BACKUPS() ; EP -- Ask for confirmation of Backup
  1. D PASSMESG("ATTENTION")
  1. W !
  1. D COMPLEX
  1. ;
  1. D ^XBFMK
  1. S DIR(0)="Y"
  1. S DIR("B")="NO"
  1. S DIR("A")=$J("",10)_"Has a SUCCESSFUL system backup been performed??"
  1. D ^DIR
  1. W !
  1. ;
  1. I +$G(Y)'=1 D Q "Q"
  1. . S XPDABORT=1
  1. . D PASSMESG("ATTENTION")
  1. . W !!
  1. . W ?15,"SUCCESSFUL system backup has >>> NOT <<< been confirmed.",!!
  1. . W ?15,"Install Aborting.",!!
  1. ;
  1. ; Store backup confirmation person & date/time
  1. NEW BCKUPCNT ; Current Patch,Backup count
  1. S BCKUPCNT=1+$O(^BLRINSTL("LAB PATCH",CP,"BACKUP CONFIRMED BY",""),-1)
  1. S ^BLRINSTL("LAB PATCH",CP,"BACKUP CONFIRMED BY",BCKUPCNT)=DUZ_"^"_$P($G(^VA(200,DUZ,0)),U)
  1. S ^BLRINSTL("LAB PATCH",CP,"BACKUP CONFIRMED BY",BCKUPCNT,"DATE/TIME")=$$HTE^XLFDT($H,"5MZ")
  1. ;
  1. Q "OK"
  1. ;
  1. MAKESURE() ; EP
  1. D PASSMESG("PLEASE NOTE")
  1. W !
  1. ;
  1. W ?5,"There are over 335 routines, multiple Data Dictionary changes as well as",!
  1. W ?5,"numerous new options and processes that are included in this patch.",!
  1. W !
  1. S ANSWER=$$AREUSURE("CERTAIN")
  1. Q:ANSWER="Q" ANSWER
  1. ;
  1. D PASSMESG("SECOND CHANCE")
  1. S ANSWER=$$AREUSURE("REALLY certain")
  1. Q:ANSWER="Q" ANSWER
  1. W !
  1. ;
  1. D PASSMESG("LAST CHANCE")
  1. Q $$AREUSURE("ABSOLUTELY certain")
  1. ;
  1. AREUSURE(MSG) ; EP
  1. NEW PROMPT
  1. S PROMPT=$J("",5)_"Are you "_MSG_" you want to continue loading this patch"
  1. D ^XBFMK
  1. S DIR(0)="YO"
  1. S DIR("B")="NO"
  1. S DIR("A")=PROMPT
  1. D ^DIR
  1. I $E($$UP^XLFSTR(X),1)'="Y" D Q "Q"
  1. . S XPDABORT=1
  1. . W !!,?10,"YES was NOT entered. Install Aborted.",!
  1. . D PRESSKEY(10)
  1. ;
  1. Q "OK"
  1. ;
  1. TEXTONGO ; EP
  1. D PASSMESG("LOADING OF PATCH WILL COMMENCE")
  1. W !
  1. D BMES^XPDUTL($$CJ^XLFSTR(">>>> IHS Lab Patch 1027 will now be loaded. <<<<",IOM))
  1. D BMES^XPDUTL($$CJ^XLFSTR("Once installed there is no recovery possible except",IOM))
  1. D MES^XPDUTL($$CJ^XLFSTR("restoring from BACKUP.",IOM))
  1. D BMES^XPDUTL("")
  1. ;
  1. Q
  1. ;
  1. PRESSKEY(TAB,MSGSTR) ; EP
  1. NEW TABSTR
  1. S TABSTR=$J("",+$G(TAB))_$S(+$L($G(MSGSTR)):$G(MSGSTR),1:"Press RETURN Key")
  1. ;
  1. W !
  1. D ^XBFMK
  1. S DIR(0)="E"
  1. S DIR("A")=TABSTR
  1. D ^DIR
  1. I $G(DUOUT) S QFLG="Q" ; If Fileman quit, then set Quit Flag
  1. ;
  1. Q
  1. REALLYIN ; EP
  1. NEW CP,INSTCNT
  1. ;
  1. S CP=$P($T(+2),"*",3)
  1. S INSTCNT=1+$O(^BLRINSTL("LAB PATCH",CP,"REALLY INSTALL",""),-1)
  1. ;
  1. S ^BLRINSTL("LAB PATCH",CP,"REALLY INSTALL",INSTCNT)=DUZ_"^"_$P($G(^VA(200,DUZ,0)),"^")
  1. S ^BLRINSTL("LAB PATCH",CP,"REALLY INSTALL",INSTCNT,"DATE/TIME")=$$HTE^XLFDT($H,"5Z")
  1. Q
  1. ;
  1. ; TESTING FOUR FIVE SIX