| 1 | RGHLLOG1 ;ALB/CJM-SEND EXCEPTION TO MPI EXCEPTION HANDLER ;11/25/2000
|
---|
| 2 | ;;1.0;CLINICAL INFO RESOURCE NETWORK;**13,18**;30 Apr 99
|
---|
| 3 | ;
|
---|
| 4 | ;Reference to file 870 supported by IA #3335
|
---|
| 5 | ;Reference to file 391.72 supported by IA #3037
|
---|
| 6 | ;References to file 773 supported by IA #3244 and 3273
|
---|
| 7 | ;
|
---|
| 8 | SENDMPI(RGEXC,RGERR,RGDFN,MSGID,STATNUM) ;
|
---|
| 9 | ;Description: Sends the exception to the MPI Exception Handler.
|
---|
| 10 | ;Input: Required
|
---|
| 11 | ; RGEXC - Exception type in File #991.11
|
---|
| 12 | ; RGERR - Supplemental text
|
---|
| 13 | ; Optional
|
---|
| 14 | ; RGDFN - IEN in the PATIENT file (#2)
|
---|
| 15 | ; MSGID - message id of message being processed when the exception occurred (optional), uses RGLOG(3) or HL("MID") if not defined
|
---|
| 16 | ; STATNUM - station # of site that encountered the error (optional)
|
---|
| 17 | ; If not defined then local site is assumed, using $$SITE^VASITE
|
---|
| 18 | ;Output: none
|
---|
| 19 | ;
|
---|
| 20 | ;Variables:
|
---|
| 21 | ; @RGMSG is the location for the message text
|
---|
| 22 | ;
|
---|
| 23 | N RGMSG
|
---|
| 24 | S RGMSG="^TMP($J,""RG MPI SERVER EXCEPTION"")"
|
---|
| 25 | K @RGMSG
|
---|
| 26 | ;
|
---|
| 27 | D ADDLINE("**MPI/PD EXCEPTION**")
|
---|
| 28 | D ADDDATA("EXCEPTION TYPE",$G(RGEXC))
|
---|
| 29 | D ADDDATA("OPTIONAL TEXT",$G(RGERR))
|
---|
| 30 | D ADDDATA("SITE OF OCCURRENCE",$S($D(STATNUM):STATNUM,1:$P($$SITE^VASITE(),"^",3)))
|
---|
| 31 | D ADDDATA("SITE REPORTING",$P($$SITE^VASITE(),"^",3))
|
---|
| 32 | D ADDDATA("DATE/TIME REPORTED",$$NOW^XLFDT)
|
---|
| 33 | I $G(RGDFN) D
|
---|
| 34 | .N OUT,SITE
|
---|
| 35 | .D GETALL^RGFIU(RGDFN,.OUT)
|
---|
| 36 | .D ADDLINE("**PATIENT DATA**")
|
---|
| 37 | .D ADDDATA("ICN",OUT("ICN"))
|
---|
| 38 | .D ADDDATA("NAME",$$NAME^RGFIU(RGDFN))
|
---|
| 39 | .D ADDDATA("SSN",$$SSN^RGFIU(RGDFN))
|
---|
| 40 | .D ADDDATA("CMOR",OUT("CMOR"))
|
---|
| 41 | .S SITE=""
|
---|
| 42 | .F S SITE=$O(OUT("TF",SITE)) Q:(SITE="") D ADDLINE("**"),ADDDATA("TREATING FACILITY",SITE),ADDDATA("DATE LAST TREATED",OUT("TF",SITE,"LASTDATE")),ADDDATA("EVENT REASON",$$GETFIELD^RGFIU(391.72,.01,OUT("TF",SITE,"EVENT")))
|
---|
| 43 | K OUT
|
---|
| 44 | I $$GETMSG($G(MSGID),.OUT) D
|
---|
| 45 | .N SUB
|
---|
| 46 | .D ADDLINE("**HL7 MESSAGE**")
|
---|
| 47 | .S SUB=""
|
---|
| 48 | .F S SUB=$O(OUT(SUB)) Q:(SUB="") D ADDDATA(SUB,OUT(SUB))
|
---|
| 49 | D ADDLINE("**END**")
|
---|
| 50 | I $$MAIL
|
---|
| 51 | K @RGMSG
|
---|
| 52 | ;
|
---|
| 53 | Q
|
---|
| 54 | ;
|
---|
| 55 | SERVER() ;
|
---|
| 56 | ;Description: Returns the <server name>@<server domain>. This entry
|
---|
| 57 | ;returns the Servers location either at the test MPI or Production MPI.
|
---|
| 58 | ;If a null is returned the MAIL subroutine will default to the MPIF
|
---|
| 59 | ;EXCEPTIONS mail group
|
---|
| 60 | ;
|
---|
| 61 | ;Input: none
|
---|
| 62 | ;Output: Where to send the exception.Returns the <server name>@<server domain> or Null
|
---|
| 63 | ;
|
---|
| 64 | N TO,IEN
|
---|
| 65 | S TO=""
|
---|
| 66 | ; get MPI logical link
|
---|
| 67 | D LINK^HLUTIL3("200M",.HLL,"I")
|
---|
| 68 | ; get MPI domain DBIA 3335
|
---|
| 69 | S IEN=$O(HLL(0)) I +IEN>0 S TO=$$GET1^DIQ(870,+IEN_",",.03) I TO'="" S TO="S.MPI EXCEPTION SERVER@"_TO
|
---|
| 70 | Q TO
|
---|
| 71 | ;
|
---|
| 72 | ADDDATA(LABEL,DATA) ;
|
---|
| 73 | ;Description: Adds one formated line to the message text containing the label and data value
|
---|
| 74 | ;Input:
|
---|
| 75 | ; LABEL - text label that identifies the type of data
|
---|
| 76 | ; DATA - data value
|
---|
| 77 | ;Output:none
|
---|
| 78 | ;
|
---|
| 79 | D ADDLINE(LABEL_":"_DATA)
|
---|
| 80 | Q
|
---|
| 81 | ADDLINE(LINE) ;
|
---|
| 82 | ;Description: adds one one to the message text
|
---|
| 83 | ;Inputs:
|
---|
| 84 | ; LINE - the line of text to be added
|
---|
| 85 | ; RGMSG - @RGMSG is the location for the message text
|
---|
| 86 | ;Output: none
|
---|
| 87 | S @RGMSG@(($O(@RGMSG@(9999),-1)+1))=LINE
|
---|
| 88 | Q
|
---|
| 89 | MAIL() ;
|
---|
| 90 | ;Description: Sends the message located at @RGMSG to the MPI Exception Handler
|
---|
| 91 | ;Input: message at @RGMSG
|
---|
| 92 | ;Output: If succssful, the function returns the mailman message number, otherwise, "" is returned
|
---|
| 93 | ;
|
---|
| 94 | N XMY,XMSUB,XMDUZ,XMTEXT,XMZ,XMDUN,DIFROM,SERVER
|
---|
| 95 | Q:'$D(@RGMSG) ""
|
---|
| 96 | S SERVER=$$SERVER
|
---|
| 97 | ;if the MPI server isn't returned default to the old MPIF EXCEPTIONS mail group
|
---|
| 98 | I SERVER="" S SERVER="MPIF EXCEPTIONS"
|
---|
| 99 | S XMDUZ="MPI/PD at "_$P($$SITE^VASITE(),"^",2)
|
---|
| 100 | S XMY(.5)=""
|
---|
| 101 | S XMY(SERVER)=""
|
---|
| 102 | S XMTEXT=$P(RGMSG,")")_","
|
---|
| 103 | S XMSUB="MPI/PD EXCEPTION"
|
---|
| 104 | D ^XMD
|
---|
| 105 | Q $G(XMZ)
|
---|
| 106 | ;
|
---|
| 107 | GETMSG(MSGID,MSGARRAY) ;
|
---|
| 108 | ;Description: Retrieves data from the HL7 Message Administration file (#773) related to the message
|
---|
| 109 | ;Input:
|
---|
| 110 | ; MSGID - the message id (optional)
|
---|
| 111 | ; RGLOG(3) - if MSGID is not passed then RGLOG(3) is used to determine the message
|
---|
| 112 | ; HL("MID") - if MSGID and RGLOG(3) are not defined then HL("MID") is used to determine the message
|
---|
| 113 | ;
|
---|
| 114 | ;Output:
|
---|
| 115 | ; Function Value - 1 on success, 0 on failure
|
---|
| 116 | ; MSGARRAY() - (pass by reference) - returns the data
|
---|
| 117 | ; ("MESSAGE ID") - the HL7 message id
|
---|
| 118 | ; ("MESSAGE TYPE") - the HL7 message type
|
---|
| 119 | ; ("EVENT TYPE") - the HL7 event type
|
---|
| 120 | ; ("SENDING APPLICATION") - the name of the sending application
|
---|
| 121 | ; ("LOGICAL LINK") - the name of the HL Logical Link overwhich the message was received
|
---|
| 122 | ;
|
---|
| 123 | N MSGIEN
|
---|
| 124 | K MSGARRAY
|
---|
| 125 | I '$G(MSGID) D
|
---|
| 126 | .I $G(RGLOG(3)) S MSGID=$$GETFIELD^RGFIU(773,2,RGLOG(3)) Q:MSGID
|
---|
| 127 | .S MSGID=$G(HL("MID"))
|
---|
| 128 | Q:'MSGID 0
|
---|
| 129 | ;
|
---|
| 130 | S MSGIEN=$$IEN773^RGHLLOG(MSGID)
|
---|
| 131 | ;
|
---|
| 132 | S MSGARRAY("MESSAGE ID")=MSGID
|
---|
| 133 | S MSGARRAY("LOGICAL LINK")=$$GETFIELD^RGFIU(773,7,MSGIEN,,1)
|
---|
| 134 | S MSGARRAY("SENDING APPLICATION")=$$GETFIELD^RGFIU(773,13,MSGIEN,,1)
|
---|
| 135 | S MSGARRAY("MESSAGE TYPE")=$$GETFIELD^RGFIU(773,15,MSGIEN,,1)
|
---|
| 136 | S MSGARRAY("EVENT TYPE")=$$GETFIELD^RGFIU(773,16,MSGIEN,,1)
|
---|
| 137 | ;
|
---|
| 138 | ;this compensates for a bug in the HL7 package - the external form rather than the pointer values are being stored in file 773
|
---|
| 139 | I MSGID,'$L(MSGARRAY("MESSAGE TYPE")) S MSGARRAY("MESSAGE TYPE")=$$GETFIELD^RGFIU(773,15,MSGIEN)
|
---|
| 140 | I MSGID,'$L(MSGARRAY("EVENT TYPE")) S MSGARRAY("EVENT TYPE")=$$GETFIELD^RGFIU(773,16,MSGIEN)
|
---|
| 141 | ;
|
---|
| 142 | Q 1
|
---|