| [613] | 1 | ONCSAPIE ;Hines OIFO/SG - COLLABORATIVE STAGING (ERRORS)  ; 10/27/06 8:59am | 
|---|
|  | 2 | ;;2.11;ONCOLOGY;**40,47**;Mar 07, 1995;Build 19 | 
|---|
|  | 3 | ;; | 
|---|
|  | 4 | ; | 
|---|
|  | 5 | Q | 
|---|
|  | 6 | ; | 
|---|
|  | 7 | ;***** INITIALIZES THE ERROR STACK | 
|---|
|  | 8 | ; | 
|---|
|  | 9 | ; [ENABLE]      Enable error stack (0/1) | 
|---|
|  | 10 | ; | 
|---|
|  | 11 | CLEAR(ENABLE) ; | 
|---|
|  | 12 | S:'$D(ENABLE) ENABLE=$D(ONCSAPI("MSG"))#10 | 
|---|
|  | 13 | K ONCSAPI("MSG")  S:ENABLE ONCSAPI("MSG")="" | 
|---|
|  | 14 | D CLEAN^DILF | 
|---|
|  | 15 | Q | 
|---|
|  | 16 | ; | 
|---|
|  | 17 | ;***** CHECKS THE ERRORS AFTER A FILEMAN DBS CALL | 
|---|
|  | 18 | ; | 
|---|
|  | 19 | ; ONC8MSG       Closed reference of the error messages array | 
|---|
|  | 20 | ;               (from DBS calls) | 
|---|
|  | 21 | ; [ERRCODE]     Error code to assign | 
|---|
|  | 22 | ; [FILE]        File number used in the DBS call | 
|---|
|  | 23 | ; [IENS]        IENS used in the DBS call | 
|---|
|  | 24 | ; | 
|---|
|  | 25 | ; The $$DBS^ONCSAPIE function checks the DIERR and @ONC8MSG | 
|---|
|  | 26 | ; variables for errors after a FileMan DBS call. | 
|---|
|  | 27 | ; | 
|---|
|  | 28 | ; Return Values: | 
|---|
|  | 29 | ; | 
|---|
|  | 30 | ; If there are no errors found, it returns an empty string. | 
|---|
|  | 31 | ; In case of errors, the result depends on value of the ERRCODE | 
|---|
|  | 32 | ; parameter: | 
|---|
|  | 33 | ; | 
|---|
|  | 34 | ; If ERRCODE is omitted or equals 0, the function returns a string | 
|---|
|  | 35 | ; containing the list of error codes separated by comma. | 
|---|
|  | 36 | ; | 
|---|
|  | 37 | ; If ERRCODE is not zero, the $$ERROR^ONCSAPIE function is called | 
|---|
|  | 38 | ; and its return value is returned. | 
|---|
|  | 39 | ; | 
|---|
|  | 40 | ; NOTE: This entry point can also be called as a procedure: | 
|---|
|  | 41 | ;       D DBS^ONCSAPIE(...) if you do not need its return value. | 
|---|
|  | 42 | ; | 
|---|
|  | 43 | DBS(ONC8MSG,ERRCODE,FILE,IENS) ; | 
|---|
|  | 44 | I '$G(DIERR)  Q:$QUIT ""  Q | 
|---|
|  | 45 | N ERRLST,ERRNODE,I,MSGTEXT | 
|---|
|  | 46 | S ERRNODE=$S($G(ONC8MSG)'="":$NA(@ONC8MSG@("DIERR")),1:$NA(^TMP("DIERR",$J))) | 
|---|
|  | 47 | I $D(@ERRNODE)<10  Q:$QUIT ""  Q | 
|---|
|  | 48 | ;--- Return a list of errors | 
|---|
|  | 49 | I '$G(ERRCODE)  D  Q:$QUIT $P(ERRLST,",",2,99)  Q | 
|---|
|  | 50 | . S ERRLST="",I=0 | 
|---|
|  | 51 | . F  S I=$O(@ERRNODE@("E",I))  Q:'I  S ERRLST=ERRLST_","_I | 
|---|
|  | 52 | . D CLEAN^DILF | 
|---|
|  | 53 | ;--- Record the error message | 
|---|
|  | 54 | D MSG^DIALOG("AE",.MSGTEXT,,,$G(ONC8MSG)),CLEAN^DILF | 
|---|
|  | 55 | S I=$S($G(FILE):"; File #"_FILE,1:"") | 
|---|
|  | 56 | S:$G(IENS)'="" I=I_"; IENS: """_IENS_"""" | 
|---|
|  | 57 | S I=$$ERROR(ERRCODE,.MSGTEXT,I) | 
|---|
|  | 58 | Q:$QUIT I  Q | 
|---|
|  | 59 | ; | 
|---|
|  | 60 | ;***** GENERATES THE ERROR MESSAGE | 
|---|
|  | 61 | ; | 
|---|
|  | 62 | ; ERRCODE       Error code. | 
|---|
|  | 63 | ;               If the 'S' suffix is appended to the code, the error | 
|---|
|  | 64 | ;               descriptor will not be stored into the error stack. | 
|---|
|  | 65 | ; | 
|---|
|  | 66 | ; [[.]ONCINFO]  Optional additional information (either a string or | 
|---|
|  | 67 | ;               a reference to a local array that contains strings | 
|---|
|  | 68 | ;               prepared for storing in a word processing field) | 
|---|
|  | 69 | ; | 
|---|
|  | 70 | ; [ARG1-ARG5]   Optional parameters as for $$MSG^ONCSAPIE | 
|---|
|  | 71 | ; | 
|---|
|  | 72 | ; Return Values: | 
|---|
|  | 73 | ;       <0  Error code^Message Text^Label+Offset^Routine | 
|---|
|  | 74 | ;        0  Ok (if ERRCOCE'<0) | 
|---|
|  | 75 | ; | 
|---|
|  | 76 | ; NOTE: This entry point can also be called as a procedure: | 
|---|
|  | 77 | ;       D ERROR^ONCSAPIE(...) if you do not need its return value. | 
|---|
|  | 78 | ; | 
|---|
|  | 79 | ERROR(ERRCODE,ONCINFO,ARG1,ARG2,ARG3,ARG4,ARG5) ; | 
|---|
|  | 80 | I ERRCODE'<0  Q:$QUIT 0  Q | 
|---|
|  | 81 | N IEN,MSG,PLACE,SL,TMP | 
|---|
|  | 82 | ;--- Get the error location | 
|---|
|  | 83 | S SL=$STACK(-1)-1 | 
|---|
|  | 84 | F  Q:SL'>0  D  Q:'(PLACE["^ONCSAPIE")  S SL=SL-1 | 
|---|
|  | 85 | . S PLACE=$P($STACK(SL,"PLACE")," ") | 
|---|
|  | 86 | S:$G(PLACE)'[U PLACE=U | 
|---|
|  | 87 | ;--- Prepare the additional information | 
|---|
|  | 88 | I $D(ONCINFO)=1  S TMP=ONCINFO  K ONCINFO  S ONCINFO(1)=TMP | 
|---|
|  | 89 | ;--- Prepare and store the message descriptor | 
|---|
|  | 90 | S MSG=$$MSG(ERRCODE,,.ARG1,.ARG2,.ARG3,.ARG4,.ARG5) | 
|---|
|  | 91 | S MSG=(+ERRCODE)_U_MSG_U_PLACE | 
|---|
|  | 92 | D:ERRCODE'["S" STORE(MSG,"ONCINFO") | 
|---|
|  | 93 | ;--- | 
|---|
|  | 94 | Q:$QUIT MSG  Q | 
|---|
|  | 95 | ; | 
|---|
|  | 96 | ;***** RETURNS THE TEXT AND TYPE OF THE MESSAGE | 
|---|
|  | 97 | ; | 
|---|
|  | 98 | ; ERRCODE       Error code | 
|---|
|  | 99 | ; | 
|---|
|  | 100 | ; [.TYPE]       Type of the error | 
|---|
|  | 101 | ; | 
|---|
|  | 102 | ; [ARG1-ARG5]   Optional parameters that substitute the |n| "windows" | 
|---|
|  | 103 | ;               in the text of the message (for example, the |2| will | 
|---|
|  | 104 | ;               be substituted by the value of the ARG2). | 
|---|
|  | 105 | ; | 
|---|
|  | 106 | ; NOTE: The "^" is replaced with the "~" in the resulting message. | 
|---|
|  | 107 | ; | 
|---|
|  | 108 | MSG(ERRCODE,TYPE,ARG1,ARG2,ARG3,ARG4,ARG5) ; | 
|---|
|  | 109 | S TYPE=6  Q:ERRCODE'<0 "" | 
|---|
|  | 110 | N ARG,I1,I2,MSG | 
|---|
|  | 111 | ;--- Get a descriptor of the message | 
|---|
|  | 112 | S I1=-ERRCODE,MSG=$P($T(MSGLIST+I1),";;",2) | 
|---|
|  | 113 | S I1=+$TR($P(MSG,U,2)," "),MSG=$P(MSG,U,3,999) | 
|---|
|  | 114 | S:I1>0 TYPE=I1 | 
|---|
|  | 115 | Q:MSG?." " "Unknown error ("_ERRCODE_")" | 
|---|
|  | 116 | ;--- Substitute parameters | 
|---|
|  | 117 | S I1=2 | 
|---|
|  | 118 | F  S I1=$F(MSG,"|",I1-1)  Q:'I1  D | 
|---|
|  | 119 | . S I2=$F(MSG,"|",I1)  Q:'I2 | 
|---|
|  | 120 | . X "S ARG=$G(ARG"_+$TR($E(MSG,I1,I2-2)," ")_")" | 
|---|
|  | 121 | . S $E(MSG,I1-1,I2-1)=ARG | 
|---|
|  | 122 | Q $TR($$TRIM^XLFSTR(MSG),U,"~") | 
|---|
|  | 123 | ; | 
|---|
|  | 124 | ;***** DISPLAYS THE ERROR STACK OR A SINGLE ERROR MESSAGE | 
|---|
|  | 125 | ; | 
|---|
|  | 126 | ; [ERROR]       Descriptor of a single error to be displayed | 
|---|
|  | 127 | ; | 
|---|
|  | 128 | PRTERRS(ERROR) ; | 
|---|
|  | 129 | Q:'$G(ERROR)&($D(ONCSAPI("MSG"))<10) | 
|---|
|  | 130 | N EXIT,IMSG,INFONODE,ONCMNL | 
|---|
|  | 131 | S ONCMNL=$S($G(IOSL)>3:IOSL-3,1:20),$Y=0 | 
|---|
|  | 132 | ;--- Print table header | 
|---|
|  | 133 | D EN^DDIOL("Code",,"!"),EN^DDIOL("Description",,"?6") | 
|---|
|  | 134 | D EN^DDIOL("Additional Information",,"!?6") | 
|---|
|  | 135 | D EN^DDIOL("Type",,"!?6"),EN^DDIOL("Location",,"?22") | 
|---|
|  | 136 | D EN^DDIOL("----",,"!"),EN^DDIOL($$REPEAT^XLFSTR("-",IOM-7),,"?6") | 
|---|
|  | 137 | ;--- Print a single error message | 
|---|
|  | 138 | I $G(ERROR)  S EXIT=$$PRT1ERR(ERROR)  Q | 
|---|
|  | 139 | ;--- Print the error stack (most recent messages first) | 
|---|
|  | 140 | S IMSG=" ",EXIT=0 | 
|---|
|  | 141 | F  S IMSG=$O(ONCSAPI("MSG",IMSG),-1)  Q:IMSG'>0  D  Q:EXIT | 
|---|
|  | 142 | . S INFONODE=$NA(ONCSAPI("MSG",IMSG,1)) | 
|---|
|  | 143 | . S EXIT=$$PRT1ERR(ONCSAPI("MSG",IMSG,0),INFONODE) | 
|---|
|  | 144 | Q | 
|---|
|  | 145 | ; | 
|---|
|  | 146 | PRT1ERR(ERR,ONC8INFO) ; | 
|---|
|  | 147 | N EXIT,I,LOC,TYPE | 
|---|
|  | 148 | S LOC=$S($P(ERR,U,4)'="":$P(ERR,U,3,4),1:$P(ERR,U,3)) | 
|---|
|  | 149 | S I=$$TYPE(+ERR,.TYPE) | 
|---|
|  | 150 | ;--- | 
|---|
|  | 151 | S EXIT=0  D | 
|---|
|  | 152 | . D EN^DDIOL($J(+ERR,4),,"!"),EN^DDIOL($E($P(ERR,U,2),1,IOM-7),,"?6") | 
|---|
|  | 153 | . I $Y'<ONCMNL  S EXIT=$$PAGE^ONCSAPIU()  Q:EXIT | 
|---|
|  | 154 | . ;--- | 
|---|
|  | 155 | . I $G(ONC8INFO)'="",$D(@ONC8INFO)>1  S I=""  D | 
|---|
|  | 156 | . . F  S I=$O(@ONC8INFO@(I))  Q:I=""  D  Q:EXIT | 
|---|
|  | 157 | . . . D EN^DDIOL($E(@ONC8INFO@(I),1,IOM-7),,"!?6") | 
|---|
|  | 158 | . . . S:$Y'<ONCMNL EXIT=$$PAGE^ONCSAPIU() | 
|---|
|  | 159 | . Q:EXIT | 
|---|
|  | 160 | . ;--- | 
|---|
|  | 161 | . D EN^DDIOL(TYPE,,"!?6"),EN^DDIOL(LOC,,"?22"):LOC'?.1"^" | 
|---|
|  | 162 | . I $Y'<ONCMNL  S EXIT=$$PAGE^ONCSAPIU()  Q:EXIT | 
|---|
|  | 163 | ;--- | 
|---|
|  | 164 | D EN^DDIOL(" ") | 
|---|
|  | 165 | Q EXIT | 
|---|
|  | 166 | ; | 
|---|
|  | 167 | ;***** STORES THE MESSAGE INTO THE ERROR STACK | 
|---|
|  | 168 | ; | 
|---|
|  | 169 | ; ERROR         Error descriptor (see ^ONCSAPI) | 
|---|
|  | 170 | ; | 
|---|
|  | 171 | ; [ONC8INFO]    Closed root of the variable that contains | 
|---|
|  | 172 | ;               additional information related to the error | 
|---|
|  | 173 | ; | 
|---|
|  | 174 | STORE(ERROR,ONC8INFO) ; | 
|---|
|  | 175 | Q:'$D(ONCSAPI("MSG"))!($G(ERROR)'<0) | 
|---|
|  | 176 | N IEN | 
|---|
|  | 177 | S IEN=$O(ONCSAPI("MSG"," "),-1)+1 | 
|---|
|  | 178 | S ONCSAPI("MSG",IEN,0)=ERROR | 
|---|
|  | 179 | M:$G(ONC8INFO)'="" ONCSAPI("MSG",IEN,1)=@ONC8INFO | 
|---|
|  | 180 | S ONCSAPI("MSG","E",+ERROR,IEN)="" | 
|---|
|  | 181 | Q | 
|---|
|  | 182 | ; | 
|---|
|  | 183 | ;***** RETURNS TYPE OF THE MESSAGE | 
|---|
|  | 184 | ; | 
|---|
|  | 185 | ; ERRCODE       Error code | 
|---|
|  | 186 | ; | 
|---|
|  | 187 | ; [.DESCR]      Reference to a local variable where the type | 
|---|
|  | 188 | ;               description is returned to | 
|---|
|  | 189 | ; | 
|---|
|  | 190 | TYPE(ERRCODE,DESCR) ; | 
|---|
|  | 191 | I ERRCODE'<0  S DESCR=""  Q 0 | 
|---|
|  | 192 | N I,TYPE  S I=-ERRCODE | 
|---|
|  | 193 | S I=$P($T(MSGLIST+I),";;",2),TYPE=+$TR($P(I,U,2)," ") | 
|---|
|  | 194 | S:TYPE'>0 TYPE=6 | 
|---|
|  | 195 | S DESCR=$P("Debug^Information^Data Quality^Warning^Database Error^Error",U,TYPE) | 
|---|
|  | 196 | Q TYPE | 
|---|
|  | 197 | ; | 
|---|
|  | 198 | ;***** LIST OF THE MESSAGES (THERE SHOULD BE NOTHING AFTER THE LIST!) | 
|---|
|  | 199 | ; | 
|---|
|  | 200 | ; The error codes are provided in the table only for clarity. | 
|---|
|  | 201 | ; Text of the messages are extracted using the $TEXT function and | 
|---|
|  | 202 | ; absolute values of the ERRCODE parameter. | 
|---|
|  | 203 | ; | 
|---|
|  | 204 | ; Message Type: | 
|---|
|  | 205 | ;               1  Debug          4  Warning | 
|---|
|  | 206 | ;               2  Information    5  Database Error | 
|---|
|  | 207 | ;               3  Data Quality   6  Error | 
|---|
|  | 208 | ; | 
|---|
|  | 209 | MSGLIST ; Code Type  Message Text | 
|---|
|  | 210 | ;;  -1 ^ 6 ^ Missing input parameters | 
|---|
|  | 211 | ;;  -2 ^ 6 ^ Errors returned by the Oncology web-service | 
|---|
|  | 212 | ;;  -3 ^ 4 ^ XML parsing warning | 
|---|
|  | 213 | ;;  -4 ^ 6 ^ XML parsing error | 
|---|
|  | 214 | ;;  -5 ^ 6 ^ Error(s) during parsing of the result XML | 
|---|
|  | 215 | ;;  -6 ^ 6 ^ Parameter '|1|' has an invalid value: '|2|' | 
|---|
|  | 216 | ;;  -7 ^ 2 ^ Oncology web-service temporary moved to '|1|' | 
|---|
|  | 217 | ;;  -8 ^ 2 ^ Oncology web-service permanently moved to '|1|' | 
|---|
|  | 218 | ;;  -9 ^ 6 ^ FileMan DBS call error(s)|2| | 
|---|
|  | 219 | ;; -10 ^ 6 ^ HTTP client error(s) | 
|---|
|  | 220 | ;; -11 ^ 6 ^ Invalid URL of the Oncology web-service | 
|---|
|  | 221 | ;; -12 ^ 6 ^ Too many redirections (|1|) | 
|---|
|  | 222 | ;; -13 ^ 6 ^ Cannot get the CS version number | 
|---|
|  | 223 | ;; -14 ^ 6 ^ Cannot get the schema number and name | 
|---|
|  | 224 | ;; -15 ^ 6 ^ Cannot lock the |1| | 
|---|
|  | 225 | ;; -16 ^ 6 ^ Invalid combination of input parameters: |1| | 
|---|
|  | 226 | ;; -17 ^ 6 ^ Cannot update the Oncology web-service URL in file #160.1 | 
|---|
|  | 227 | ;; -18 ^ 6 ^ Missing redirection URL | 
|---|
|  | 228 | ;; -19 ^ 2 ^ Unfortunately, the extended help is unavailable now. | 
|---|
|  | 229 | ;; -20 ^ 2 ^ Unfortunately, input value cannot be validated. | 
|---|
|  | 230 | ;; -21 ^ 2 ^ Unfortunately, the code description is unavailable now. | 
|---|
|  | 231 | ;; -22 ^ 6 ^ Cannot get the URL of the Oncology web-service | 
|---|
|  | 232 | ;; -23 ^ 6 ^ Cannot get the EDITS metafile version number | 
|---|