[613] | 1 | PXRMERRH ; SLC/PKR - Error handling routines. ;03/27/2006
|
---|
| 2 | ;;2.0;CLINICAL REMINDERS;**4**;Feb 04, 2005;Build 21
|
---|
| 3 | ;
|
---|
| 4 | ;=================================================================
|
---|
| 5 | ERRHDLR ;PXRM error handler. Send a MailMan message to the mail group defined
|
---|
| 6 | ;by the site and put the error in the error trap.
|
---|
| 7 | ;References to %ZTER covered by DBIA #1621.
|
---|
| 8 | N ERROR,MGIEN,MGROUP,NL,REMINDER,XMDUZ,XMSUB,XMY,XMZ
|
---|
| 9 | S ERROR=$$EC^%ZOSV
|
---|
| 10 | ;Ignore the "errors" the unwinder creates.
|
---|
| 11 | I ERROR["ZTER" D UNWIND^%ZTER
|
---|
| 12 | ;Make sure we don't loop if there is an error during procesing of
|
---|
| 13 | ;the error handler.
|
---|
| 14 | N $ET S $ET="D ^%ZTER,CLEAN^PXRMERRH,UNWIND^%ZTER"
|
---|
| 15 | ;
|
---|
| 16 | ;Save the error then put it in the error trap, this saves the correct
|
---|
| 17 | ;last global reference.
|
---|
| 18 | D ^%ZTER
|
---|
| 19 | ;
|
---|
| 20 | ;If this is a test run write out the error.
|
---|
| 21 | I $G(PXRMDEBG) W !,ERROR
|
---|
| 22 | ;
|
---|
| 23 | ;Make the sender the Postmaster.
|
---|
| 24 | S XMDUZ=0.5
|
---|
| 25 | S XMSUB="ERROR EVALUATING CLINICAL REMINDER"
|
---|
| 26 | ;
|
---|
| 27 | RETRY ;Get the message number.
|
---|
| 28 | D XMZ^XMA2
|
---|
| 29 | I XMZ<1 G RETRY
|
---|
| 30 | ;
|
---|
| 31 | ;Load the message
|
---|
| 32 | S ^XMB(3.9,XMZ,2,1,0)="The following error occurred:"
|
---|
| 33 | S ^XMB(3.9,XMZ,2,2,0)=ERROR
|
---|
| 34 | I +$G(PXRMITEM)>0 S REMINDER=$P(^PXD(811.9,PXRMITEM,0),U,1)
|
---|
| 35 | E S PXRMITEM=999999,REMINDER="?"
|
---|
| 36 | S ^XMB(3.9,XMZ,2,3,0)="While evaluating reminder "_REMINDER
|
---|
| 37 | S ^XMB(3.9,XMZ,2,4,0)="For patient DFN="_$G(PXRMPDEM("DFN"))
|
---|
| 38 | S ^XMB(3.9,XMZ,2,5,0)="The time of the error was "_$$FMTE^XLFDT($$NOW^XLFDT,"5Z")
|
---|
| 39 | S ^XMB(3.9,XMZ,2,6,0)="See the error trap for complete details."
|
---|
| 40 | S NL=6
|
---|
| 41 | ;Look for specific error text to append to the message.
|
---|
| 42 | I $D(^TMP(PXRMPID,$J,PXRMITEM,"FERROR","ERROR TRAP")) D
|
---|
| 43 | . N ESOURCE,IND
|
---|
| 44 | . S ESOURCE=""
|
---|
| 45 | . F S ESOURCE=$O(^TMP(PXRMPID,$J,PXRMITEM,"FERROR","ERROR TRAP",ESOURCE)) Q:ESOURCE="" D
|
---|
| 46 | .. S IND=0
|
---|
| 47 | .. F S IND=$O(^TMP(PXRMPID,$J,PXRMITEM,"FERROR","ERROR TRAP",ESOURCE,IND)) Q:IND="" D
|
---|
| 48 | ... S NL=NL+1
|
---|
| 49 | ... S ^XMB(3.9,XMZ,2,NL,0)=^TMP(PXRMPID,$J,PXRMITEM,"FERROR","ERROR TRAP",ESOURCE,IND)
|
---|
| 50 | ;
|
---|
| 51 | ;Send the message to the site defined mailgroup.
|
---|
| 52 | S MGIEN=$G(^PXRM(800,1,"MGFE"))
|
---|
| 53 | ;If the mailgroup has not been defined send the message to the user.
|
---|
| 54 | I MGIEN="" D
|
---|
| 55 | . S MGROUP=DUZ
|
---|
| 56 | . S NL=NL+1,^XMB(3.9,XMZ,2,NL,0)=" "
|
---|
| 57 | . S NL=NL+1,^XMB(3.9,XMZ,2,NL,0)="You received this message because your IRM has not set up a mailgroup"
|
---|
| 58 | . S NL=NL+1,^XMB(3.9,XMZ,2,NL,0)="to receive Clinical Reminder errors; please notify them."
|
---|
| 59 | E S MGROUP="G."_$$GET1^DIQ(3.8,MGIEN,.01)
|
---|
| 60 | ;
|
---|
| 61 | S ^XMB(3.9,XMZ,2,0)="^3.92^"_+NL_U_+NL_U_DT
|
---|
| 62 | S XMY(MGROUP)=""
|
---|
| 63 | D ENT1^XMD
|
---|
| 64 | ;
|
---|
| 65 | ;If the reminder exists mark that an error occured.
|
---|
| 66 | I PXRMITEM=999999 Q
|
---|
| 67 | S ^TMP(PXRMPID,$J,PXRMITEM,"FERROR","ERROR TRAP")=""
|
---|
| 68 | N DEFARR,DUE,DUEDATE,FREQ,FIEVAL,PCLOGIC,RESDATE
|
---|
| 69 | S (DUE,DUEDATE,FREQ,FIEVAL,PCLOGIC,RESDATE)=""
|
---|
| 70 | D DEF^PXRMLDR(PXRMITEM,.DEFARR)
|
---|
| 71 | D OUTPUT^PXRMOUTD(5,.DEFARR,PCLOGIC,DUE,DUEDATE,RESDATE,FREQ,.FIEVAL)
|
---|
| 72 | ;
|
---|
| 73 | ;Set the first line of ^TMP("PXRHM") to ERROR.
|
---|
| 74 | S ^TMP("PXRHM",$J,PXRMITEM,PXRMRNAM)="ERROR"
|
---|
| 75 | ;
|
---|
| 76 | I '$G(PXRMDEBG) D CLEAN
|
---|
| 77 | D UNWIND^%ZTER
|
---|
| 78 | Q
|
---|
| 79 | ;
|
---|
| 80 | ;=================================================================
|
---|
| 81 | CLEAN ;Clean-up scratch arrays
|
---|
| 82 | K ^TMP("PXRM",$J)
|
---|
| 83 | I $D(PXRMPID) K ^TMP(PXRMPID,$J)
|
---|
| 84 | Q
|
---|
| 85 | ;
|
---|
| 86 | ;=================================================================
|
---|
| 87 | NODEF(IEN) ;Non-existent reminder definition.
|
---|
| 88 | N SUBJ
|
---|
| 89 | K ^TMP("PXRMXMZ",$J)
|
---|
| 90 | S ^TMP("PXRMXMZ",$J,1,0)="A request was made to evaluate a non-existent reminder; the ien is "_IEN_"."
|
---|
| 91 | S ^TMP("PXRMXMZ",$J,2,0)="An entry was made in the error trap that does not have a description."
|
---|
| 92 | S ^TMP("PXRMXMZ",$J,3,0)="Match the time of this message with the time in the error trap."
|
---|
| 93 | S SUBJ="Request to evaluate a non-existent reminder"
|
---|
| 94 | D SEND^PXRMMSG(SUBJ)
|
---|
| 95 | K ^TMP("PXRMXMZ",$J)
|
---|
| 96 | D ^%ZTER
|
---|
| 97 | Q
|
---|
| 98 | ;
|
---|
| 99 | ;=================================================================
|
---|
| 100 | NOINDEX(FTYPE,IEN,FILENUM) ;Error handling for missing index.
|
---|
| 101 | N ETEXT,SUBJ
|
---|
| 102 | K ^TMP("PXRMXMZ",$J)
|
---|
| 103 | S ETEXT(1)=""
|
---|
| 104 | S ETEXT(2)="Index for file number "_FILENUM_" does not exist or is not complete."
|
---|
| 105 | I FTYPE="D" S ETEXT(3)="Reminder "_IEN_" will not be properly evaluated!"
|
---|
| 106 | I FTYPE="TR" S ETEXT(3)="Term "_IEN_" will not be properly evaluated!"
|
---|
| 107 | I FTYPE="TX" S ETEXT(3)="Taxonomy "_IEN_" will not be properly evaluated!"
|
---|
| 108 | I $D(PXRMPID) D
|
---|
| 109 | . S ^TMP(PXRMPID,$J,PXRMITEM,"WARNING","MISSING INDEX")=ETEXT(2)
|
---|
| 110 | . S ^TMP(PXRMPID,$J,PXRMITEM,"INFO","MISSING INDEX")=ETEXT(2)
|
---|
| 111 | ;Mail out the error message.
|
---|
| 112 | S ^TMP("PXRMXMZ",$J,1,0)=ETEXT(2)
|
---|
| 113 | S ^TMP("PXRMXMZ",$J,2,0)=ETEXT(3)
|
---|
| 114 | S ^TMP("PXRMXMZ",$J,3,0)="Patient DFN="_$G(PXRMPDEM("DFN"))_", User DUZ="_DUZ_", Reminder="_$G(PXRMITEM)
|
---|
| 115 | S SUBJ="Problem with index for file number "_FILENUM
|
---|
| 116 | D SEND^PXRMMSG(SUBJ)
|
---|
| 117 | K ^TMP("PXRMXMZ",$J)
|
---|
| 118 | Q
|
---|
| 119 | ;
|
---|