[613] | 1 | GMRCIERR ;SLC/JFR - process IFC message error alert ;07/08/03 11:16
|
---|
| 2 | ;;3.0;CONSULT/REQUEST TRACKING;**22,28,30,35**;DEC 27, 1997
|
---|
| 3 | Q
|
---|
| 4 | EN(GMRCLOG,GMRCDA,GMRCACT,GMRCRPT) ;start here
|
---|
| 5 | ;Build ^TMP array for processing alert
|
---|
| 6 | ;
|
---|
| 7 | K ^TMP("GMRCIERR",$J)
|
---|
| 8 | N GMRCPNM,GMRCACTV,GMRCERR,GMRCRP,GMRCEP,GMRCACTM,GMRCCOM,GMRCSS
|
---|
| 9 | N GMRCPROC,GMRCSITE,GMRCFCN,GMRCPT,GMRCSSN,VAHOW,VAROOT
|
---|
| 10 | I '$D(^GMR(123.6,GMRCLOG,0)) D Q
|
---|
| 11 | . S ^TMP("GMRCIERR",$J,1,0)="Message log entry no longer exists"
|
---|
| 12 | I $P(^GMR(123.6,GMRCLOG,0),U,4)'=GMRCDA D Q
|
---|
| 13 | . S ^TMP("GMRCIERR",$J,1,0)="Message log entry and Consult# don't match"
|
---|
| 14 | I $P(^GMR(123.6,GMRCLOG,0),U,5)'=GMRCACT D Q
|
---|
| 15 | . S ^TMP("GMRCIERR",$J,1,0)="Message log entry & activity# don't match"
|
---|
| 16 | S DFN=$P(^GMR(123,GMRCDA,0),U,2),VAROOT="GMRCPT",VAHOW=1
|
---|
| 17 | D DEM^VADPT
|
---|
| 18 | S GMRCPNM=GMRCPT("NM")
|
---|
| 19 | S GMRCSSN=$P(GMRCPT("SS"),U,2)
|
---|
| 20 | S GMRCACTV=$G(^GMR(123,GMRCDA,40,GMRCACT,0))
|
---|
| 21 | S GMRCRP=$$GET1^DIQ(200,+$P(GMRCACTV,U,4),.01)
|
---|
| 22 | S GMRCEP=$$GET1^DIQ(200,+$P(GMRCACTV,U,5),.01)
|
---|
| 23 | S GMRCACTM=$$FMTE^XLFDT($P(GMRCACTV,U,3))
|
---|
| 24 | S GMRCACTV=$$GET1^DIQ(123.1,$P(GMRCACTV,U,2),.01)
|
---|
| 25 | S GMRCCOM=$O(^GMR(123,GMRCDA,40,GMRCACT,1,0))
|
---|
| 26 | S GMRCSS=$$GET1^DIQ(123.5,+$P(^GMR(123,GMRCDA,0),U,5),.01)
|
---|
| 27 | S GMRCPROC=$$GET1^DIQ(123.3,+$P(^GMR(123,GMRCDA,0),U,8),.01)
|
---|
| 28 | S GMRCFCN=$P(^GMR(123,GMRCDA,0),U,22)
|
---|
| 29 | D F4^XUAF4($$STA^XUAF4($P(^GMR(123,GMRCDA,0),U,23)),.GMRCSITE)
|
---|
| 30 | N LN S LN=1
|
---|
| 31 | S ^TMP("GMRCIERR",$J,LN,0)="An error occurred transmitting the following inter-facility consult ",LN=LN+1
|
---|
| 32 | S ^TMP("GMRCIERR",$J,LN,0)="activity to "_GMRCSITE("NAME")_":",LN=LN+1
|
---|
| 33 | S ^TMP("GMRCIERR",$J,LN,0)="",LN=LN+1
|
---|
| 34 | S ^TMP("GMRCIERR",$J,LN,0)="Consult #: "_GMRCDA,LN=LN+1
|
---|
| 35 | S ^TMP("GMRCIERR",$J,LN,0)="Remote Consult #: "_GMRCFCN,LN=LN+1
|
---|
| 36 | S ^TMP("GMRCIERR",$J,LN,0)="Patient Name: "_GMRCPNM,LN=LN+1
|
---|
| 37 | S ^TMP("GMRCIERR",$J,LN,0)="SSN: "_GMRCSSN,LN=LN+1
|
---|
| 38 | S ^TMP("GMRCIERR",$J,LN,0)="To Service: "_GMRCSS,LN=LN+1
|
---|
| 39 | I $L(GMRCPROC) S ^TMP("GMRCIERR",$J,LN,0)="Procedure: "_GMRCPROC,LN=LN+1
|
---|
| 40 | S ^TMP("GMRCIERR",$J,LN,0)="",LN=LN+1
|
---|
| 41 | I '$D(GMRCRPT) D ACTLG(GMRCDA,GMRCACT,GMRCLOG,.LN)
|
---|
| 42 | Q
|
---|
| 43 | ACTLG(GMRCDA,GMRCACT,LOG,LN) ;build activity log entry
|
---|
| 44 | N GMRCCT,TAB,GMRCERR,GMRCDIF
|
---|
| 45 | S TAB="",$P(TAB," ",30)=""
|
---|
| 46 | S GMRCERR=$T(@("ERR"_$P(^GMR(123.6,LOG,0),U,8)_"^GMRCIUTL"))
|
---|
| 47 | S GMRCERR=$S($L(GMRCERR):$P(GMRCERR,";",2),1:"Technical error")
|
---|
| 48 | S ^TMP("GMRCIERR",$J,LN,0)="Activity #: "_GMRCACT,LN=LN+1
|
---|
| 49 | S ^TMP("GMRCIERR",$J,LN,0)="Activity"_$E(TAB,1,17)_"Date/Time/Zone"_$E(TAB,1,6)_"Responsible Person"_$E(TAB,1,2)_"Entered By",LN=LN+1
|
---|
| 50 | S GMRCCT=LN
|
---|
| 51 | D BLDALN^GMRCSLM4(GMRCDA,GMRCACT)
|
---|
| 52 | S ^TMP("GMRCIERR",$J,LN,0)="",LN=LN+1
|
---|
| 53 | S ^TMP("GMRCIERR",$J,LN,0)="",LN=LN+1
|
---|
| 54 | S ^TMP("GMRCIERR",$J,LN,0)="The error was: "_GMRCERR
|
---|
| 55 | M ^TMP("GMRCIERR",$J)=^TMP("GMRCR",$J,"DT")
|
---|
| 56 | K ^TMP("GMRCR",$J,"DT")
|
---|
| 57 | Q
|
---|
| 58 | ;
|
---|
| 59 | DIALOG(GMRCDATA) ;ask user what to do based on error and activity
|
---|
| 60 | ;Input:
|
---|
| 61 | ; GMRCDATA = XQADATA from alert handler
|
---|
| 62 | ; in form: IFC_msg_log#|consult#|activity#
|
---|
| 63 | ;
|
---|
| 64 | ;Output:
|
---|
| 65 | ; value to set XQAKILL to
|
---|
| 66 | N DIR,X,Y,LN,DUOUT,DTOUT
|
---|
| 67 | D EN($P(GMRCDATA,"|"),$P(GMRCDATA,"|",2),$P(GMRCDATA,"|",3))
|
---|
| 68 | W @IOF
|
---|
| 69 | S LN=0 F S LN=$O(^TMP("GMRCIERR",$J,LN)) Q:'LN W !,^(LN,0)
|
---|
| 70 | W !
|
---|
| 71 | I $O(^TMP("GMRCIERR",$J," "),-1)<2 Q 0 ;some problem so delete alert
|
---|
| 72 | S DIR(0)="E" D ^DIR
|
---|
| 73 | I $D(DTOUT)!($D(DUOUT)) Q "@"
|
---|
| 74 | W !
|
---|
| 75 | I $O(^GMR(123.6,"AC",$P(GMRCDATA,"|",2),$P(GMRCDATA,"|",3)),-1) D Q "@"
|
---|
| 76 | . W !,"There is at least one earlier incomplete transaction for this"
|
---|
| 77 | . W !,"consult, all incomplete transactions should be processed in "
|
---|
| 78 | . W !,"order.",!
|
---|
| 79 | . W !,"You can use the List incomplete IFC transactions option to"
|
---|
| 80 | . W !,"locate and process the incomplete transactions for this consult."
|
---|
| 81 | . S DIR(0)="E" D ^DIR
|
---|
| 82 | S DIR(0)="YA",DIR("B")="N"
|
---|
| 83 | S DIR("A",1)="If you have corrected this problem you may resend this activity!"
|
---|
| 84 | S DIR("A",2)=" "
|
---|
| 85 | S DIR("A")="Do you want to retransmit this? " D ^DIR
|
---|
| 86 | I $G(Y)=1 D Q 0
|
---|
| 87 | . D TRIGR^GMRCIEVT($P(GMRCDATA,"|",2),$P(GMRCDATA,"|",3)) ; re-transmit
|
---|
| 88 | K DIR
|
---|
| 89 | W !
|
---|
| 90 | S DIR(0)="YA",DIR("B")="N"
|
---|
| 91 | S DIR("A")="Do you want to delete this alert for all recipients? "
|
---|
| 92 | D ^DIR
|
---|
| 93 | I $G(Y)=1 Q 0
|
---|
| 94 | W !
|
---|
| 95 | S DIR(0)="YA",DIR("B")="N"
|
---|
| 96 | S DIR("A")="Do you want to delete this alert for yourself only? "
|
---|
| 97 | D ^DIR
|
---|
| 98 | I $G(Y)=1 Q 1
|
---|
| 99 | Q "@"
|
---|
| 100 | ;
|
---|
| 101 | FOLLUP ;action to take from alert
|
---|
| 102 | S XQAKILL=$$DIALOG(XQADATA)
|
---|
| 103 | I XQAKILL="@" K XQAKILL
|
---|
| 104 | K ^TMP("GMRCIERR",$J)
|
---|
| 105 | Q
|
---|
| 106 | ;
|
---|
| 107 | SNDALRT(GMRCLOG,TYPE,XQAMSG) ; send an alert on some errors
|
---|
| 108 | ;Input:
|
---|
| 109 | ; GMRCLOG = IFC MESSAGE LOG entry
|
---|
| 110 | ; TYPE = "C" for a clinical error, "T" for a technical error
|
---|
| 111 | ;
|
---|
| 112 | N XQA,XQAROU,XQADATA,XQAID,GROUP,GMRCACT,GMRCDA,GMRCLOG0
|
---|
| 113 | S GMRCLOG0=$G(^GMR(123.6,GMRCLOG,0)) Q:'$L(GMRCLOG0)
|
---|
| 114 | S GMRCDA=$P(GMRCLOG0,U,4) Q:'GMRCDA
|
---|
| 115 | S GMRCACT=$P(GMRCLOG0,U,5) Q:'GMRCACT
|
---|
| 116 | S GROUP=$S(TYPE="C":"G.IFC CLIN ERRORS",1:"G.IFC TECH ERRORS")
|
---|
| 117 | S XQA(GROUP)=""
|
---|
| 118 | I '$D(XQAMSG) S XQAMSG="Failed IFC transaction"
|
---|
| 119 | S XQAROU="FOLLUP^GMRCIERR"
|
---|
| 120 | S XQAID="GMRCIFC,trans error,"_GMRCLOG
|
---|
| 121 | S XQADATA=GMRCLOG_"|"_GMRCDA_"|"_GMRCACT
|
---|
| 122 | D SETUP^XQALERT
|
---|
| 123 | Q
|
---|
| 124 | PTERRMSG(GMRCPID,GMRCSTA,GMRCDOM,GMRCOBR) ;send IFC pt err to mail group
|
---|
| 125 | ;Input:
|
---|
| 126 | ; GMRCPID = PID seg from IFC message
|
---|
| 127 | ; GMRCSTA = station # of site where message originated
|
---|
| 128 | ; GMRCDOM = domain to send the message to, if defined (optional)
|
---|
| 129 | ; GMRCOBR = OBR segment from IFC msg (optional)
|
---|
| 130 | ;
|
---|
| 131 | ;Output:
|
---|
| 132 | ; mail message containing patient demographics
|
---|
| 133 | ;
|
---|
| 134 | N GMRCGRP,GMRCMSG,GMRCNM,GMRCNAM,GMRCDOB
|
---|
| 135 | N XMERR,GMRCSUB,GMRCSITE,GMRCERR,GMRCICN
|
---|
| 136 | N XMTEXT,XMY,XMDUZ,XMSUB,XMZ,XMMG
|
---|
| 137 | S GMRCNAM=$P(GMRCPID,"|",5)
|
---|
| 138 | S GMRCNM("FAMILY")=$P(GMRCNAM,U),GMRCNM("GIVEN")=$P(GMRCNAM,U,2)
|
---|
| 139 | S GMRCNM("MIDDLE")=$P(GMRCNAM,U,3),GMRCNM("SUFFIX")=$P(GMRCNAM,U,4)
|
---|
| 140 | S GMRCNAM=$$NAMEFMT^XLFNAME(.GMRCNM,"F","CL56Xc")
|
---|
| 141 | S GMRCDOB=$$HL7TFM^XLFDT($P(GMRCPID,"|",7))
|
---|
| 142 | S GMRCDOB=$$FMTE^XLFDT(GMRCDOB)
|
---|
| 143 | S GMRCICN=+$P(GMRCPID,"|",2)
|
---|
| 144 | D F4^XUAF4(GMRCSTA,.GMRCSITE)
|
---|
| 145 | S GMRCMSG(1,0)="An Inter-facility Consult for the following patient has been requested."
|
---|
| 146 | S GMRCMSG(2,0)="The patient has either never been registered at your facility or the national"
|
---|
| 147 | S GMRCMSG(3,0)="MPI ICN for this patient at your site does not match that from the requesting"
|
---|
| 148 | S GMRCMSG(4,0)="site. Please refer to the Master Patient Index/Patient Demographics (MPI/PD)"
|
---|
| 149 | S GMRCMSG(5,0)="User Manual and Master Patient Index/Patient Demographics Exception"
|
---|
| 150 | S GMRCMSG(6,0)="Handling Manuals to resolve this error so the request may be processed."
|
---|
| 151 | S GMRCMSG(7,0)=" ",GMRCMSG(8,0)=" "
|
---|
| 152 | S GMRCMSG(9,0)="Patient demographics from "_GMRCSITE("NAME")
|
---|
| 153 | S GMRCMSG(10,0)=" Patient name: "_GMRCNAM
|
---|
| 154 | S GMRCMSG(11,0)=" SSN: "_$P(GMRCPID,"|",19)
|
---|
| 155 | S GMRCMSG(12,0)=" Date of birth: "_GMRCDOB
|
---|
| 156 | S GMRCMSG(13,0)=" Sex: "_$P(GMRCPID,"|",8)
|
---|
| 157 | S GMRCMSG(14,0)=" Remote ICN: "_GMRCICN
|
---|
| 158 | S GMRCMSG(15,0)=" "
|
---|
| 159 | I $L($G(GMRCOBR)) D
|
---|
| 160 | . N GMRCITM
|
---|
| 161 | . S GMRCITM=$P(GMRCOBR,"|",4)
|
---|
| 162 | . I GMRCITM["VA1235" S GMRCITM="Ordered service: "_$P(GMRCITM,U,2)
|
---|
| 163 | . I GMRCITM["VA1233" S GMRCITM=" Ordered proc.: "_$P(GMRCITM,U,2)
|
---|
| 164 | . S GMRCMSG(16,0)=GMRCITM
|
---|
| 165 | S GMRCMSG(17,0)=" "
|
---|
| 166 | S GMRCMSG(18,0)=" The error is: Unknown Patient (201)"
|
---|
| 167 | ;
|
---|
| 168 | D ; set XMY to local group or remote group
|
---|
| 169 | . I $D(GMRCDOM) S XMY("G.IFC CLIN ERRORS@"_GMRCDOM)="" Q
|
---|
| 170 | . S XMY("G.IFC PATIENT ERROR MESSAGES")=""
|
---|
| 171 | S XMSUB="Incoming IFC patient error, "_GMRCNAM
|
---|
| 172 | S XMDUZ="Consult/Request Tracking Package"
|
---|
| 173 | S XMTEXT="GMRCMSG("
|
---|
| 174 | D ^XMD
|
---|
| 175 | Q
|
---|
| 176 | ;
|
---|
| 177 | PTMPIER(GMRCDFN) ;send IFC local MPI error to MAS mail group
|
---|
| 178 | ;Input:
|
---|
| 179 | ; GMRCDFN = DFN from file 2 of patient with MPI problem
|
---|
| 180 | ;
|
---|
| 181 | ;Output:
|
---|
| 182 | ; mail message containing patient demographics
|
---|
| 183 | ;
|
---|
| 184 | N DFN,GMRCPT,GMRCMSG,VAHOW,VAROOT
|
---|
| 185 | N XMTEXT,XMY,XMDUZ,XMSUB,XMZ,XMMG
|
---|
| 186 | S DFN=GMRCDFN,VAHOW=1,VAROOT="GMRCPT"
|
---|
| 187 | D DEM^VADPT
|
---|
| 188 | S GMRCMSG(1,0)="An Inter-facility Consult for the following patient has been requested."
|
---|
| 189 | S GMRCMSG(2,0)="The PATIENT file is either missing an ICN or contains a local ICN."
|
---|
| 190 | S GMRCMSG(3,0)="Please refer to the Master Patient Index/Patient Demographics(MPI/PD) User"
|
---|
| 191 | S GMRCMSG(4,0)="and Master Patient Index/Patient Demographics Exception Handling Manuals"
|
---|
| 192 | S GMRCMSG(5,0)="to resolve this error so request may be processed."
|
---|
| 193 | S GMRCMSG(6,0)=" "
|
---|
| 194 | S GMRCMSG(7,0)=" Patient name: "_GMRCPT("NM")
|
---|
| 195 | S GMRCMSG(8,0)=" SSN: "_$P(GMRCPT("SS"),U,2)
|
---|
| 196 | S GMRCMSG(9,0)=" Date of birth: "_$P(GMRCPT("DB"),U,2)
|
---|
| 197 | S GMRCMSG(10,0)=" Sex: "_$P(GMRCPT("SX"),U,2)
|
---|
| 198 | S GMRCMSG(11,0)=" "
|
---|
| 199 | S GMRCMSG(12,0)=" The error is: Local or unknown MPI identifiers (202)"
|
---|
| 200 | ;
|
---|
| 201 | S XMY("G.IFC PATIENT ERROR MESSAGES")=""
|
---|
| 202 | S XMSUB="Outgoing IFC patient error, "_GMRCPT("NM")
|
---|
| 203 | S XMDUZ="Consult/Request Tracking Package"
|
---|
| 204 | S XMTEXT="GMRCMSG("
|
---|
| 205 | D ^XMD
|
---|
| 206 | Q
|
---|