[613] | 1 | RORKIDS ;HCIOFO/SG - INSTALL UTILITIES (LOW-LEVEL) ; 4/21/05 2:02pm
|
---|
| 2 | ;;1.5;CLINICAL CASE REGISTRIES;;Feb 17, 2006
|
---|
| 3 | ;
|
---|
| 4 | Q
|
---|
| 5 | ;
|
---|
| 6 | ;***** DISPLAYS THE MESSAGE IF THE INSTALLATION ABORTS
|
---|
| 7 | ABTMSG() ;
|
---|
| 8 | ;;You can use the Print Log Files [RORMNT PRINT LOGS] option from
|
---|
| 9 | ;;the Clinical Case Registries Maintenance [RORMNT MAIN] menu to
|
---|
| 10 | ;;review the log file(s). The Install File Print [XPD PRINT INSTALL
|
---|
| 11 | ;;FILE] option from the Utilities [XPD UTILITY] can help also.
|
---|
| 12 | ;;Please fix the error(s) and restart the installation.
|
---|
| 13 | ;;
|
---|
| 14 | ;;NOTE: You must have the ROR VA IRM key to be able to access
|
---|
| 15 | ;; the Clinical Case Registries files and view the logs.
|
---|
| 16 | ;
|
---|
| 17 | N I,INFO,MODE,TMP
|
---|
| 18 | S MODE=+$G(RORPARM("KIDS"))
|
---|
| 19 | S MODE=$S(MODE=1:"PRE-INSTALL",MODE=2:"POST-INSTALL",1:"")
|
---|
| 20 | Q:MODE=""
|
---|
| 21 | F I=1:1 S TMP=$T(ABTMSG+I) Q:TMP'[";;" S INFO(I)=$P(TMP,";;",2,99)
|
---|
| 22 | D BMES("FATAL ERROR(S) DURING THE REGISTRY "_MODE_"!",.INFO)
|
---|
| 23 | Q
|
---|
| 24 | ;
|
---|
| 25 | ;***** SENDS AN ALERT
|
---|
| 26 | ;
|
---|
| 27 | ; DUZ DUZ of the addressee
|
---|
| 28 | ;
|
---|
| 29 | ; MSG Text of the message or negative error code. The '^'
|
---|
| 30 | ; characters are replaced with spaces in the text.
|
---|
| 31 | ;
|
---|
| 32 | ; [REGNAME] Registry name
|
---|
| 33 | ;
|
---|
| 34 | ; [PATIEN] Patient IEN
|
---|
| 35 | ;
|
---|
| 36 | ; [ARG2-ARG5] Optional parameters as for $$ERROR^RORERR
|
---|
| 37 | ;
|
---|
| 38 | ALERT(DUZ,MSG,REGNAME,PATIEN,ARG2,ARG3,ARG4,ARG5) ;
|
---|
| 39 | Q:'$G(DUZ)
|
---|
| 40 | N XQA,XQADATA,XQAFLG,XQAMSG,XQAROU,TMP
|
---|
| 41 | S XQA(DUZ)=""
|
---|
| 42 | ;--- Get text of the error message
|
---|
| 43 | I +MSG=MSG Q:MSG'<0 D
|
---|
| 44 | . S MSG=$$MSG^RORERR20(+MSG,,.PATIEN,.ARG2,.ARG3,.ARG4,.ARG5)
|
---|
| 45 | S MSG=$TR(MSG,"^","~"),XQAMSG="ROR: ",TMP=70-$L(XQAMSG)-3
|
---|
| 46 | S XQAMSG=XQAMSG_$S($L(MSG)>TMP:$E(MSG,1,TMP)_"...",1:MSG)
|
---|
| 47 | ;--- Setup alert processing routine
|
---|
| 48 | S $P(XQADATA,U,1)=$E(MSG,1,78)
|
---|
| 49 | S $P(XQADATA,U,2)=$G(REGNAME)
|
---|
| 50 | S $P(XQADATA,U,3)=$G(PATIEN)
|
---|
| 51 | S XQAROU="ALERTRTN^RORKIDS"
|
---|
| 52 | ;--- Send the alert
|
---|
| 53 | S XQAFLG="D" D SETUP^XQALERT
|
---|
| 54 | Q
|
---|
| 55 | ;
|
---|
| 56 | ;***** ALERT PROCESSING ROUTINE
|
---|
| 57 | ;
|
---|
| 58 | ; XQADATA Alert data
|
---|
| 59 | ; ^1: Message
|
---|
| 60 | ; ^2: Registry name
|
---|
| 61 | ; ^3: Patient DFN
|
---|
| 62 | ;
|
---|
| 63 | ALERTRTN ;
|
---|
| 64 | ;;Registry Name:
|
---|
| 65 | ;;Patient DFN:
|
---|
| 66 | ;
|
---|
| 67 | Q:$G(XQADATA)=""
|
---|
| 68 | N I,TMP
|
---|
| 69 | W !!,$P(XQADATA,"^"),!
|
---|
| 70 | F I=1:1:2 S TMP=$P(XQADATA,"^",I+1) D:TMP'=""
|
---|
| 71 | . W $P($T(ALERTRTN+I),";;",2),?15,TMP,!
|
---|
| 72 | Q
|
---|
| 73 | ;
|
---|
| 74 | ;***** OUTPUTS THE MESSAGE AND PUTS IT INTO THE LOG
|
---|
| 75 | BMES(MSG,INFO) ;
|
---|
| 76 | N I
|
---|
| 77 | D BMES^XPDUTL(" "_MSG)
|
---|
| 78 | S I=""
|
---|
| 79 | F S I=$O(INFO(I)) Q:I="" D MES^XPDUTL(" "_INFO(I))
|
---|
| 80 | D LOG^RORLOG(,MSG,,.INFO)
|
---|
| 81 | Q
|
---|
| 82 | ;
|
---|
| 83 | ;***** CHECKS THE SCHEDULED OPTION
|
---|
| 84 | ;
|
---|
| 85 | ; OPTION Option name
|
---|
| 86 | ;
|
---|
| 87 | ; Return Values:
|
---|
| 88 | ; <0 Error code
|
---|
| 89 | ; 0 Ok
|
---|
| 90 | ;
|
---|
| 91 | ; This function can be used in the environment check routines to
|
---|
| 92 | ; check if the option is running and/or scheduled to run.
|
---|
| 93 | ;
|
---|
| 94 | ; The function displays appropriate error messages and warnings
|
---|
| 95 | ; using the WRITE command. So, it MUST NOT be called from the
|
---|
| 96 | ; pre-install or post-install routines.
|
---|
| 97 | ;
|
---|
| 98 | ; The function uses the ^UTILITY($J,"W") node (^DIWP and ^DIWW).
|
---|
| 99 | ;
|
---|
| 100 | CHKOPT(OPTION) ;
|
---|
| 101 | N DIWF,DIWL,DIWR,RC,RORBUF,RORI,RORSDT,TMP,X,ZTSK
|
---|
| 102 | ;--- Check status of the option
|
---|
| 103 | D OPTSTAT^XUTMOPT(OPTION,.RORBUF)
|
---|
| 104 | S (RC,RORSDT)=0
|
---|
| 105 | F RORI=1:1:$G(RORBUF) K ZTSK D I $G(ZTSK(1))=2 S RC=-76 Q
|
---|
| 106 | . S ZTSK=$P(RORBUF(RORI),"^") Q:'ZTSK
|
---|
| 107 | . D STAT^%ZTLOAD
|
---|
| 108 | . S TMP=$P(RORBUF(RORI),"^",2)
|
---|
| 109 | . I TMP>0 S:'RORSDT!(TMP<RORSDT) RORSDT=TMP
|
---|
| 110 | ;--- Display an error message if the option is running
|
---|
| 111 | I RC D Q RC
|
---|
| 112 | . W !,$$MSG^RORERR20(RC,,,OPTION),!
|
---|
| 113 | ;--- Display an apropriate warning
|
---|
| 114 | S DIWL=5,DIWR=$G(IOM,80)-DIWL
|
---|
| 115 | K ^UTILITY($J,"W")
|
---|
| 116 | CM1 I RORSDT>0 D
|
---|
| 117 | . ;;"The ["_OPTION_"] option is scheduled to run "_RORSDT_"."
|
---|
| 118 | . ;;"If you are going to schedule the installation, please, choose"
|
---|
| 119 | . ;;"an appropriate time so that the post-install will either"
|
---|
| 120 | . ;;"finish well before the ["_OPTION_"] scheduled time or start"
|
---|
| 121 | . ;;"after the option completion."
|
---|
| 122 | . ;---
|
---|
| 123 | . S RORSDT=$$FMTE^XLFDT(RORSDT)
|
---|
| 124 | . S RORSDT="on "_$P(RORSDT,"@")_" at "_$P(RORSDT,"@",2)
|
---|
| 125 | . F RORI=1:1 S X=$T(CM1+RORI) Q:X'[";;" D
|
---|
| 126 | . . X "S X="_$P(X,";;",2) D ^DIWP
|
---|
| 127 | CM2 E D
|
---|
| 128 | . ;;"The ["_OPTION_"] option is not scheduled. Do not forget"
|
---|
| 129 | . ;;"to schedule it after completion of the installation."
|
---|
| 130 | . ;---
|
---|
| 131 | . F RORI=1:1 S X=$T(CM2+RORI) Q:X'[";;" D
|
---|
| 132 | . . X "S X="_$P(X,";;",2) D ^DIWP
|
---|
| 133 | W ! D ^DIWW
|
---|
| 134 | Q 0
|
---|
| 135 | ;
|
---|
| 136 | ;***** PROCESSES THE INSTALL CHECKPOINT
|
---|
| 137 | ;
|
---|
| 138 | ; CPNAME Checkpoint name
|
---|
| 139 | ;
|
---|
| 140 | ; CALLBACK Callback entry point ($$TAG^ROUTINE). This function
|
---|
| 141 | ; accepts no parameters and must return either 0 if
|
---|
| 142 | ; everything is Ok or a negative error code.
|
---|
| 143 | ;
|
---|
| 144 | ; [PARAM] Value to set checkpoint parameter to.
|
---|
| 145 | ;
|
---|
| 146 | ; The function checks if the checkpoint is completed. If it is not,
|
---|
| 147 | ; the callback entry point is XECUTEd. If everything is Ok, the
|
---|
| 148 | ; function will complete the checkpoint.
|
---|
| 149 | ;
|
---|
| 150 | ; Return Values:
|
---|
| 151 | ; <0 Error code
|
---|
| 152 | ; 0 Ok
|
---|
| 153 | ;
|
---|
| 154 | CP(CPNAME,CALLBACK,PARAM) ;
|
---|
| 155 | N RC
|
---|
| 156 | ;--- Verify the checkpoint and quit if it is completed
|
---|
| 157 | S RC=$$VERCP^XPDUTL(CPNAME) Q:RC>0 0
|
---|
| 158 | ;--- Create the new checkpoint
|
---|
| 159 | I RC<0 D Q:'RC $$ERROR^RORERR(-50,,,,CPNAME)
|
---|
| 160 | . S RC=$$NEWCP^XPDUTL(CPNAME,,.PARAM)
|
---|
| 161 | ;--- Reset the KIDS progress bar
|
---|
| 162 | S XPDIDTOT=0 D UPDATE^XPDID(0)
|
---|
| 163 | ;--- Execute the callback entry point
|
---|
| 164 | X "S RC="_CALLBACK Q:RC<0 RC
|
---|
| 165 | ;--- Complete the check point
|
---|
| 166 | S RC=$$COMCP^XPDUTL(CPNAME)
|
---|
| 167 | Q:'RC $$ERROR^RORERR(-51,,,,CPNAME)
|
---|
| 168 | Q 0
|
---|
| 169 | ;
|
---|
| 170 | ;***** DELETES THE (SUB)FILE DD AND DATA (IF REQUESTED)
|
---|
| 171 | ;
|
---|
| 172 | ; FILE File number
|
---|
| 173 | ;
|
---|
| 174 | ; [FLAGS] String that contains flags for EN^DIU2:
|
---|
| 175 | ; "D" Delete the data as well as the DD
|
---|
| 176 | ; "E" Echo back information during deletion
|
---|
| 177 | ; "S" Subfile data dictionary is to be deleted
|
---|
| 178 | ; "T" Templates are to be deleted
|
---|
| 179 | ;
|
---|
| 180 | ; [SILENT] If this parameters is defined and non-zero, the
|
---|
| 181 | ; function will work in "silent" mode.
|
---|
| 182 | ; Nothing (except error messages if debug mode >1 is
|
---|
| 183 | ; enabled) will be displayed on the console or stored
|
---|
| 184 | ; into the INSTALLATION file.
|
---|
| 185 | ;
|
---|
| 186 | ; Return Values:
|
---|
| 187 | ; <0 Error code
|
---|
| 188 | ; 0 Ok
|
---|
| 189 | ;
|
---|
| 190 | ; NOTE: This entry point can also be called as a procedure:
|
---|
| 191 | ; D DELFILE^RORKIDS(...) if you do not need its return value.
|
---|
| 192 | ;
|
---|
| 193 | DELFILE(FILE,FLAGS,SILENT) ;
|
---|
| 194 | I '$$VFILE^DILFD(+FILE) Q:$QUIT 0 Q
|
---|
| 195 | N DIU,FT,RC
|
---|
| 196 | S DIU=+FILE,DIU(0)=$G(FLAGS)
|
---|
| 197 | I '$G(SILENT) D
|
---|
| 198 | . S FT=$S(DIU(0)["S":"subfile",1:"file")
|
---|
| 199 | . D BMES("Deleting the "_FT_" #"_(+FILE)_"...")
|
---|
| 200 | D EN^DIU2
|
---|
| 201 | D:'$G(SILENT) MES("The "_FT_" has been deleted.")
|
---|
| 202 | Q:$QUIT 0 Q
|
---|
| 203 | ;
|
---|
| 204 | ;***** DELETES FIELD DEFENITIONS FROM THE DD
|
---|
| 205 | ;
|
---|
| 206 | ; FILE File number
|
---|
| 207 | ;
|
---|
| 208 | ; FLDLST String that contains list of field numbers to
|
---|
| 209 | ; delete (separated with the ';').
|
---|
| 210 | ;
|
---|
| 211 | ; [SILENT] If this parameters is defined and non-zero, the
|
---|
| 212 | ; function will work in "silent" mode.
|
---|
| 213 | ; Nothing (except error messages if debug mode >1 is
|
---|
| 214 | ; enabled) will be displayed on the console or stored
|
---|
| 215 | ; into the INSTALLATION file.
|
---|
| 216 | ;
|
---|
| 217 | ; Return Values:
|
---|
| 218 | ; <0 Error code
|
---|
| 219 | ; 0 Ok
|
---|
| 220 | ;
|
---|
| 221 | ; NOTE: This entry point can also be called as a procedure:
|
---|
| 222 | ; D DELFLDS^RORKIDS(...) if you do not need its return value.
|
---|
| 223 | ;
|
---|
| 224 | DELFLDS(FILE,FLDLST,SILENT) ;
|
---|
| 225 | I '$$VFILE^DILFD(+FILE) Q:$QUIT 0 Q
|
---|
| 226 | N DA,DIK,I,RC
|
---|
| 227 | D:'$G(SILENT)
|
---|
| 228 | . D BMES("Deleting the field definitions...")
|
---|
| 229 | . D MES("File #"_(+FILE)_", Fields: '"_FLDLST_"'")
|
---|
| 230 | S DA(1)=+FILE,DIK="^DD("_DA(1)_","
|
---|
| 231 | F I=1:1 S DA=$P(FLDLST,";",I) Q:'DA D ^DIK
|
---|
| 232 | D:'$G(SILENT) MES("The definitions have been deleted.")
|
---|
| 233 | Q:$QUIT 0 Q
|
---|
| 234 | ;
|
---|
| 235 | ;***** OUTPUTS THE MESSAGE AND PUTS IT INTO THE LOG
|
---|
| 236 | MES(MSG,INFO) ;
|
---|
| 237 | N I
|
---|
| 238 | D MES^XPDUTL(" "_MSG)
|
---|
| 239 | S I=""
|
---|
| 240 | F S I=$O(INFO(I)) Q:I="" D MES^XPDUTL(" "_INFO(I))
|
---|
| 241 | D LOG^RORLOG(,MSG,,.INFO)
|
---|
| 242 | Q
|
---|
| 243 | ;
|
---|
| 244 | ;***** RETURNS A VALUE OF THE INSTALLATION PARAMETER
|
---|
| 245 | ;
|
---|
| 246 | ; NAME Name of the parameter
|
---|
| 247 | ;
|
---|
| 248 | PARAM(NAME) ;
|
---|
| 249 | Q $G(RORPARM("KIDS",NAME))
|
---|
| 250 | ;
|
---|
| 251 | ;***** UPDATES THE FILE'S PACKAGE REVISION DATA (IF NECESSARY)
|
---|
| 252 | ;
|
---|
| 253 | ; FILE File number
|
---|
| 254 | ;
|
---|
| 255 | ; [PRD] Package revision data
|
---|
| 256 | ; ^01: Revision number (N.N)
|
---|
| 257 | ; ^02: Patch name
|
---|
| 258 | ;
|
---|
| 259 | ; If this entry point is called as a function, it returns the
|
---|
| 260 | ; previous value of the PACKAGE REVISION DATA attribute.
|
---|
| 261 | ;
|
---|
| 262 | PRD(FILE,PRD) ;
|
---|
| 263 | N OLDPRD,RORMSG
|
---|
| 264 | S OLDPRD=$$GET1^DID(FILE,,,"PACKAGE REVISION DATA",,"RORMSG")
|
---|
| 265 | D:$G(PRD)>OLDPRD PRD^DILFD(FILE,PRD)
|
---|
| 266 | Q:$QUIT OLDPRD Q
|
---|