| [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 | 
|---|