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