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