| 1 | TIUPEVNT ; SLC/JER - Event logger for upload/filer ;3/30/05
 | 
|---|
| 2 |  ;;1.0;TEXT INTEGRATION UTILITIES;**3,21,81,131,113,184**;Jun 20, 1997
 | 
|---|
| 3 | MAIN(BUFDA,ETYPE,ECODE,TIUTYPE,FDA,MSG) ; ---- Controls branching
 | 
|---|
| 4 |  N EVNTDA
 | 
|---|
| 5 |  ; ---- ETYPE = 1: Filing error event
 | 
|---|
| 6 |  ; ---- ETYPE = 2: Missing/incorrect field error event
 | 
|---|
| 7 |  ; ---- ETYPE = 0: Other event (no errors)
 | 
|---|
| 8 |  D LOG(BUFDA,ETYPE,$G(ECODE),$G(TIUTYPE),.EVNTDA,.FDA,.MSG)
 | 
|---|
| 9 |  I ETYPE=2 D FIELDS^TIUPEVN1(EVNTDA,.MSG)
 | 
|---|
| 10 |  Q
 | 
|---|
| 11 | LOG(BUFDA,ETYPE,ECODE,TIUTYPE,EVNTDA,FDA,MSG) ; ---- Register event in 
 | 
|---|
| 12 |  ;                                              TIU UPLOAD LOG file
 | 
|---|
| 13 |  ;                                              (#8925.4)
 | 
|---|
| 14 |  N BUFREC,ERRMSG,NEWBUF,DIC,DLAYGO,DIE,DA,DR,TIUK,TIUL,X,Y
 | 
|---|
| 15 |  S BUFREC=$G(^TIU(8925.2,+BUFDA,0))
 | 
|---|
| 16 |  S (DIC,DLAYGO)=8925.4,DIC(0)="MLX",X=""""_$$NOW^TIULC_"""" D ^DIC
 | 
|---|
| 17 |  Q:+Y'>0
 | 
|---|
| 18 |  ; ---- File upload log record
 | 
|---|
| 19 |  S DIE=DIC,(EVNTDA,DA)=+Y,ERRMSG=$$ERRMSG(ETYPE,ECODE,TIUTYPE,.FDA,.MSG)
 | 
|---|
| 20 |  S DR=".02////"_$P(BUFREC,U,2)_";.03////"_TIUTYPE_";.04////"_ERRMSG_";.06////"_$S(+ETYPE:0,1:"")_";.08////"_ETYPE_";.09////"_$S($G(TIUINST):TIUINST,1:DUZ(2))
 | 
|---|
| 21 |  D ^DIE K DA
 | 
|---|
| 22 |  I ETYPE'=1 Q
 | 
|---|
| 23 |  ; ---- Store Header of failed record in log
 | 
|---|
| 24 |  S ^TIU(8925.4,+EVNTDA,"HEAD",0)="^^^^"_DT_"^"
 | 
|---|
| 25 |  S TIUL=0 F TIUK=TIUFRST:1:$S($P(TIUPRM0,U,16)="C":TIUI,1:TIUFRST+1) D
 | 
|---|
| 26 |  . S TIUL=TIUL+1,^TIU(8925.4,+EVNTDA,"HEAD",TIUL,0)=$G(^TIU(8925.2,+BUFDA,"TEXT",TIUK,0))
 | 
|---|
| 27 |  S $P(^TIU(8925.4,+EVNTDA,"HEAD",0),U,3,4)=TIUL_U_TIUL
 | 
|---|
| 28 |  ; ---- Create a new buffer entry w/ uploaded data
 | 
|---|
| 29 |  S NEWBUF=$$MAKEBUF^TIUUPLD
 | 
|---|
| 30 |  I +NEWBUF>0 D
 | 
|---|
| 31 |  . N TIUJ,TIUL,TIUBLIN
 | 
|---|
| 32 |  . S ^TIU(8925.2,+NEWBUF,"TEXT",0)="^^^^"_DT_"^"
 | 
|---|
| 33 |  . S TIUJ=TIUFRST,TIUL=1
 | 
|---|
| 34 |  . S ^TIU(8925.2,+NEWBUF,"TEXT",TIUL,0)=$G(^TIU(8925.2,+BUFDA,"TEXT",TIUJ,0)) K ^TIU(8925.2,+BUFDA,"TEXT",TIUJ,0)
 | 
|---|
| 35 |  . F  S TIUJ=$O(^TIU(8925.2,+BUFDA,"TEXT",TIUJ)) Q:$S(+TIUJ'>0:1,($G(^TIU(8925.2,+BUFDA,"TEXT",TIUJ,0))[TIUHSIG):1,1:0)  D
 | 
|---|
| 36 |  . . S TIUL=TIUL+1
 | 
|---|
| 37 |  . . S ^TIU(8925.2,+NEWBUF,"TEXT",TIUL,0)=$G(^TIU(8925.2,+BUFDA,"TEXT",TIUJ,0)),TIUI=TIUJ
 | 
|---|
| 38 |  . . K ^TIU(8925.2,+BUFDA,"TEXT",TIUJ,0)
 | 
|---|
| 39 |  . S $P(^TIU(8925.2,+NEWBUF,"TEXT",0),U,3,4)=TIUL_U_TIUL
 | 
|---|
| 40 |  . ; ---- Stuff new buffer entry pointer into event log file
 | 
|---|
| 41 |  . S DIE=8925.4,DA=+EVNTDA,DR=".05////"_+NEWBUF D ^DIE
 | 
|---|
| 42 |  . ; ---- File the error log pointer in buffer file
 | 
|---|
| 43 |  . S ^TIU(8925.2,+NEWBUF,"ERR",0)="^8925.22PA^^",DLAYGO=8925.22
 | 
|---|
| 44 |  . S DA(1)=+NEWBUF,DIC="^TIU(8925.2,"_+DA(1)_",""ERR"",",DIC(0)="L"
 | 
|---|
| 45 |  . S X="`"_EVNTDA
 | 
|---|
| 46 |  . D ^DIC
 | 
|---|
| 47 |  . K DIC,DLAYGO
 | 
|---|
| 48 |  . ; ---- Send filing error alerts
 | 
|---|
| 49 |  . D ALERT(+NEWBUF,.ERRMSG,.EVNTDA)
 | 
|---|
| 50 |  Q
 | 
|---|
| 51 | ERRMSG(ETYPE,ECODE,TIUTYPE,FDA,MSG) ; ---- Set error messages
 | 
|---|
| 52 |  N DIC,DIE,DA,X,Y
 | 
|---|
| 53 |  I +ETYPE'>0 S Y="" G ERRMSX
 | 
|---|
| 54 |  S TIUTYPE=$S($G(TIUTITLE)]"":$G(TIUTITLE),1:$G(TIUTYPE))
 | 
|---|
| 55 |  I +$G(TIUREC("FILE"))=8925,($G(TIUHDR(.09))="PRIORITY"),($G(TIUTYPE)]"") S TIUTYPE="STAT "_$G(TIUTYPE)
 | 
|---|
| 56 |  ; ---- Set filing error message
 | 
|---|
| 57 |  I +ETYPE=1,+ECODE D  G ERRMSX
 | 
|---|
| 58 |  . S DIC=8925.3,DIC(0)="MXZ",X="`"_ECODE D ^DIC
 | 
|---|
| 59 |  . S Y="FILING ERROR: "_$G(TIUTYPE)_" "_$P(Y(0),U,2)
 | 
|---|
| 60 |  ; ---- If target file is 8925, get info on entry & set missing fld msg
 | 
|---|
| 61 |  I $G(MSG("DIERR",1,"PARAM","FILE"))=8925 D  G ERRMSX
 | 
|---|
| 62 |  . N TIU,DA S DA=+$O(FDA(8925,"")) D GETTIU^TIULD(.TIU,DA)
 | 
|---|
| 63 |  . S Y=$$NAME^TIULS(TIU("PNM"),"LAST,FI MI ")
 | 
|---|
| 64 |  . S:$G(TIUHDR("TIUTITLE"))]"" TIUTYPE=TIUHDR("TIUTITLE")
 | 
|---|
| 65 |  . S Y=Y_TIU("PID")_": "_$$DATE^TIULS(+TIU("EDT"),"MM/DD/YY ")_$G(TIUTYPE)_" is missing fields."
 | 
|---|
| 66 |  ; ---- Otherwise get message from FM Filer error msg array
 | 
|---|
| 67 |  S Y=$G(MSG("DIERR",1,"TEXT",1))
 | 
|---|
| 68 | ERRMSX Q Y
 | 
|---|
| 69 | ALERT(BUFDA,ERRMSG,EVNTDA) ; ---- Send alerts for filing errors
 | 
|---|
| 70 |  N BUFREC,XQA,XQAID,XQADATA,XQAMSG,XQAKILL,XQAROU,TIUI,TIUSUB,TYPE
 | 
|---|
| 71 |  S BUFREC=$G(^TIU(8925.2,+BUFDA,0))
 | 
|---|
| 72 |  ; ---- TIU*1*81 TIUHDR is newed in MAIN+11^TIUPUTC, set in
 | 
|---|
| 73 |  ;      GETREC^TIUPUTC1, so it exists for file errs.
 | 
|---|
| 74 |  S TYPE=+$$WHATITLE^TIUPUTU($G(TIUHDR("TIUTITLE")))
 | 
|---|
| 75 |  I TYPE'>0 S TYPE=+$G(TIUREC("TYPE"))
 | 
|---|
| 76 |  I TYPE N TIUDAD D WHOGETS^TIUPEVN1(.XQA,TYPE) ;TIU*1*81 New TIUDAD here, not in WHOGETS
 | 
|---|
| 77 |  ;  ---- If no 8925.95 (Document Parameter) recipients, get 8925.99
 | 
|---|
| 78 |  ;       (Site Parameter) recipients
 | 
|---|
| 79 |  I $D(XQA)'>9 D
 | 
|---|
| 80 |  . S TIUI=$O(^TIU(8925.99,"B",+$G(DUZ(2)),0)) S:+TIUI'>0 TIUI=+$O(^TIU(8925.99,0))
 | 
|---|
| 81 |  . S TIUSUB=0 F  S TIUSUB=$O(^TIU(8925.99,+TIUI,2,TIUSUB)) Q:TIUSUB'>0  D
 | 
|---|
| 82 |  . . S XQA($G(^TIU(8925.99,+TIUI,2,TIUSUB,0)))=""
 | 
|---|
| 83 |  Q:$D(XQA)'>9
 | 
|---|
| 84 |  S XQAID="TIUERR"_+BUFDA
 | 
|---|
| 85 |  S XQAMSG=ERRMSG
 | 
|---|
| 86 |  W:'$D(ZTQUEUED) !!,XQAMSG,!
 | 
|---|
| 87 |  S XQADATA=BUFDA_";"_ERRMSG_";"_EVNTDA_";"_$G(TIUREC("TYPE"))
 | 
|---|
| 88 |  S XQAROU="DISPLAY^TIUPEVNT"
 | 
|---|
| 89 |  D SETUP^XQALERT
 | 
|---|
| 90 |  Q
 | 
|---|
| 91 | DISPLAY ; ---- Alert followup action for filing errors
 | 
|---|
| 92 |  N DIC,INQUIRE,RETRY,DWPK,EVNTDA,TIU K XQAKILL,RESCODE,TIUTYPE,TIUDONE
 | 
|---|
| 93 |  N TIUEVNT,TIUSKIP,TIUBUF,PRFILERR
 | 
|---|
| 94 |  I '$D(TIUPRM0)!'$D(TIUPRM1) D SETPARM^TIULE
 | 
|---|
| 95 |  ; Set EVNTDA for backward compatibility, TIUEVNT for PN resolve code
 | 
|---|
| 96 |  S (EVNTDA,TIUEVNT)=+$P(XQADATA,";",3)
 | 
|---|
| 97 |  ; Set TIUBUF for similarity w TIURE.  DON'T set BUFDA since
 | 
|---|
| 98 |  ; old code interprets that as set by TIURE only:
 | 
|---|
| 99 |  S TIUBUF=+XQADATA
 | 
|---|
| 100 |  I TIUEVNT D  I +$G(TIUDONE)!$G(TIUSKIP) G DISPX
 | 
|---|
| 101 |  . D WRITEHDR(TIUEVNT)
 | 
|---|
| 102 |  . S TIUTYPE=+$P(XQADATA,";",4)
 | 
|---|
| 103 |  . I TIUTYPE>0 S RESCODE=$$FIXCODE^TIULC1(TIUTYPE)
 | 
|---|
| 104 |  . ;E  S RESCODE="D GETPAT^TIUCHLP"
 | 
|---|
| 105 |  . I $G(RESCODE)]"" D  Q
 | 
|---|
| 106 |  . . W ! S INQUIRE=$$READ^TIUU("YO","Inquire to patient record","YES","^D INQRHELP^TIUPEVNT")
 | 
|---|
| 107 |  . . I $D(DIRUT) S TIUSKIP=1 Q
 | 
|---|
| 108 |  . . I +INQUIRE X RESCODE
 | 
|---|
| 109 |  . . ; Redundant if all RESCODEs do RESOLVE:
 | 
|---|
| 110 |  . . I +$G(TIUDONE),+$G(TIUEVNT) D RESOLVE(+$G(TIUEVNT))
 | 
|---|
| 111 |  . W !!,"Filing error resolution code could not be found for this document type.",!,"Please edit the buffered data directly and refile."
 | 
|---|
| 112 |  W !!,"You may now edit the buffered upload data in an attempt to resolve error:",!,$P(XQADATA,";",2),!
 | 
|---|
| 113 |  I '$$READ^TIUU("EA","Press RETURN to continue and edit the buffer or '^' to exit: ") G DISPX
 | 
|---|
| 114 |  S DIC="^TIU(8925.2,"_TIUBUF_",""TEXT"",",DWPK=1 D EN^DIWE
 | 
|---|
| 115 |  S RETRY=$$READ^TIUU("YO","Now would you like to retry the filer","YES","^D FIL^TIUDIRH")
 | 
|---|
| 116 |  ; -- If refiling, tell Patient Record Flag LOOKUP to ask for flag link:
 | 
|---|
| 117 |  I +RETRY S PRFILERR=1
 | 
|---|
| 118 |  ; -- Refile
 | 
|---|
| 119 |  I +RETRY D ALERTDEL(TIUBUF)
 | 
|---|
| 120 |  I +RETRY D RESOLVE(TIUEVNT,1)
 | 
|---|
| 121 |  I +RETRY D FILE^TIUUPLD(TIUBUF)
 | 
|---|
| 122 | DISPX K XQX1
 | 
|---|
| 123 |  Q
 | 
|---|
| 124 | WRITEHDR(EVNTDA) ; ---- Write header to screen
 | 
|---|
| 125 |  ;Write header, as stored in Upload Log event (NOT buffer record,
 | 
|---|
| 126 |  ;which can be edited w/o refiling)
 | 
|---|
| 127 |  N TIUI
 | 
|---|
| 128 |  S TIUI=0
 | 
|---|
| 129 |  W !!,"The header of the original, failed record looks like this:",!
 | 
|---|
| 130 |  F  S TIUI=$O(^TIU(8925.4,+EVNTDA,"HEAD",TIUI)) Q:+TIUI'>0  D
 | 
|---|
| 131 |  . W !,$G(^TIU(8925.4,+EVNTDA,"HEAD",TIUI,0))
 | 
|---|
| 132 |  Q
 | 
|---|
| 133 | ALERTDEL(DA) ; ---- Delete alerts associated with a given record
 | 
|---|
| 134 |  N XQA,XQAID,XQAKILL S XQAID="TIUERR"_+DA
 | 
|---|
| 135 |  F  D DELETEA^XQALERT S XQAID="TIUERR"_+DA Q:'$D(^VA(200,"AXQAN",XQAID))
 | 
|---|
| 136 |  Q
 | 
|---|
| 137 | RESOLVE(EVNTDA,ECHO) ; ---- Indicate resolution of error
 | 
|---|
| 138 |  N DA,DIE,DR,TIUI,RESTIME,X,Y
 | 
|---|
| 139 |  W:+$G(ECHO) !,"Filing Record/Resolving Error..."
 | 
|---|
| 140 |  S RESTIME=$$NOW^TIULC
 | 
|---|
| 141 |  S DIE="^TIU(8925.4,"
 | 
|---|
| 142 |  S DA=+$G(EVNTDA) Q:+DA'>0
 | 
|---|
| 143 |  ; ---- If already resolved, Quit. (Go on to next record)
 | 
|---|
| 144 |  I +$P(^TIU(8925.4,DA,0),U,6)>0 Q
 | 
|---|
| 145 |  ; ---- Mark error log record as resolved
 | 
|---|
| 146 |  S DR=".05///@;.06////1;.07////"_RESTIME_";1///@"
 | 
|---|
| 147 |  D ^DIE
 | 
|---|
| 148 |  Q
 | 
|---|
| 149 | INQRHELP ; Help for Upload Error Inquire to Patient Record prompt
 | 
|---|
| 150 |  W !,"Do you wish to be prompted for the data necessary to resolve the filing error?"
 | 
|---|
| 151 |  W !,"If not, answer NO to proceed and edit the buffered data directly without"
 | 
|---|
| 152 |  W !,"prompts, or enter '^' to come back and resolve the error later."
 | 
|---|
| 153 |  Q
 | 
|---|