| 1 | RAHLEXF ;HIRMFO/BNT - RAD/NUC MED HL7 Exceptions filer;01/06/99
 | 
|---|
| 2 |  ;;5.0;Radiology/Nuclear Medicine;**12,25**;Mar 16, 1998
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 |  ; This routine is called from the bridge routine (^RAHLTCPB) when an 
 | 
|---|
| 6 |  ; error occurs while processing an HL7 Message.
 | 
|---|
| 7 |  ; The error is stored in the HL7 Message Exceptions File (#79.3)
 | 
|---|
| 8 |  ; And, if requested, sent to the HL7 MAIL GROUP for this application
 | 
|---|
| 9 |  ; 
 | 
|---|
| 10 |  Q
 | 
|---|
| 11 | EN1 ; Entry point called from Bridge routine.
 | 
|---|
| 12 |  N RAEXFIL,RADT,RAPT,RAEX,RAERRX,SFAC,X,Y,RALNGCS,RAUSR,HLRADT,RAMSG
 | 
|---|
| 13 |  ;
 | 
|---|
| 14 |  ; File number of Exceptions File
 | 
|---|
| 15 |  S RAEXFIL=79.3
 | 
|---|
| 16 |  ;
 | 
|---|
| 17 |  ; Date and Time of HL7 Transaction
 | 
|---|
| 18 |  S HLRADT=$E($P($G(^TMP("RARPT-HL7",$J,1)),"|",7),1,14)
 | 
|---|
| 19 |  S X=HLRADT,RADT=$$FMDATE^HLFNC(X)
 | 
|---|
| 20 |  ;
 | 
|---|
| 21 |  ; Radiology Patient Number
 | 
|---|
| 22 |  S RAPT=$G(^TMP("RARPT-REC",$J,RASUB,"RADFN"))
 | 
|---|
| 23 |  S RAPT="`"_RAPT
 | 
|---|
| 24 |  ;
 | 
|---|
| 25 |  ; Radiology Case Number
 | 
|---|
| 26 |  S RALNGCS=$P($G(^TMP("RARPT-REC",$J,RASUB,"RALONGCN")),"-",2)
 | 
|---|
| 27 |  ;
 | 
|---|
| 28 |  ; Error (Exception) Text
 | 
|---|
| 29 |  S RAERRX=RAERR
 | 
|---|
| 30 |  ;
 | 
|---|
| 31 |  ; Sending Application Name
 | 
|---|
| 32 |  S SFAC=$G(HL("SAN"))
 | 
|---|
| 33 |  ;
 | 
|---|
| 34 |  ; Name of Verifying Physician or Interpreting staff (COTS unit user)
 | 
|---|
| 35 |  S RAUSR=$G(^TMP("RARPT-REC",$J,RASUB,"RAVERF"))
 | 
|---|
| 36 |  I RAUSR]"" D
 | 
|---|
| 37 |  . D FIND^DIC(200,"",".01","AX",RAUSR,"","","","","RAOUT")
 | 
|---|
| 38 |  . Q:'$D(RAOUT("DILIST","ID",1,.01))
 | 
|---|
| 39 |  . S RAUSR=RAOUT("DILIST","ID",1,.01)
 | 
|---|
| 40 |  ;
 | 
|---|
| 41 |  ; IEN of entry in file 773 - Message Administration file.
 | 
|---|
| 42 |  S RAMSG=$P(^TMP("RARPT-HL7",$J,1),"|",10)
 | 
|---|
| 43 |  ;
 | 
|---|
| 44 |  ; Go File the exception
 | 
|---|
| 45 |  D RAERR
 | 
|---|
| 46 |  ;
 | 
|---|
| 47 |  ; Send mail message
 | 
|---|
| 48 |  D MAIL(SFAC,$G(HL("SAF")),RAERR,RALNGCS,$P(RAPT,"`",2),RADT,RAUSR)
 | 
|---|
| 49 |  ;
 | 
|---|
| 50 |  D EXIT
 | 
|---|
| 51 |  ;
 | 
|---|
| 52 |  Q
 | 
|---|
| 53 | RAERR ; Build array and update Exceptions File.
 | 
|---|
| 54 |  S RAEX(0,RAEXFIL,"+1,",.01)=RADT
 | 
|---|
| 55 |  S RAEX(0,RAEXFIL,"+1,",.02)=SFAC
 | 
|---|
| 56 |  S RAEX(0,RAEXFIL,"+1,",1)=RAERRX
 | 
|---|
| 57 |  S:$G(RAPT)]"" RAEX(0,RAEXFIL,"+1,",.03)=RAPT
 | 
|---|
| 58 |  S:$G(RALNGCS)]"" RAEX(0,RAEXFIL,"+1,",.04)=RALNGCS
 | 
|---|
| 59 |  S:$G(RAUSR)]"" RAEX(0,RAEXFIL,"+1,",.06)=RAUSR
 | 
|---|
| 60 |  S:$G(RAMSG)]"" RAEX(0,RAEXFIL,"+1,",.05)=RAMSG
 | 
|---|
| 61 |  D UPDATE^DIE("E","RAEX(0)","")
 | 
|---|
| 62 |  Q
 | 
|---|
| 63 |  ;
 | 
|---|
| 64 | MAIL(SAN,SAF,RAERR,RACN,RADFN,RADT,RAUSR) ; Send mail message with error text.
 | 
|---|
| 65 |  ;
 | 
|---|
| 66 |  ; INPUT PARAMETERS:
 | 
|---|
| 67 |  ; SAN = HL7 Sending Application (Required)
 | 
|---|
| 68 |  ; SAF = Sending Facility Name
 | 
|---|
| 69 |  ; RAERR = Error Message to display (Required)
 | 
|---|
| 70 |  ; RACN = Radiology Case Number
 | 
|---|
| 71 |  ; RADFN = Rad Patient File (#70) IEN
 | 
|---|
| 72 |  ; RADT = Date & Time of HL7 message (FileMan format)
 | 
|---|
| 73 |  ; RAUSR = Name of Verifying Physician
 | 
|---|
| 74 |  ;
 | 
|---|
| 75 |  N RAERTXT,RAMGP,XMY,XMDUZ,XMSUB,Y
 | 
|---|
| 76 |  ;
 | 
|---|
| 77 |  S RAMGP=$P($$GETAPP^HLCS2(SAN),"^",1) ; Get mail group
 | 
|---|
| 78 |  Q:RAMGP=""
 | 
|---|
| 79 |  ;
 | 
|---|
| 80 |  S RAPT=$P($G(^DPT(+RADFN,0)),"^")
 | 
|---|
| 81 |  S:RAPT="" RAPT="UNKNOWN"
 | 
|---|
| 82 |  ;
 | 
|---|
| 83 |  S RACN=$S($G(RACN)]"":$G(RACN),1:"???")
 | 
|---|
| 84 |  S RAUSR=$S($G(RAUSR)]"":$G(RAUSR),1:"UNKOWN")
 | 
|---|
| 85 |  S Y=RADT D DD^%DT S RADT=$S(Y]"":Y,1:"UNKOWN DATE/TIME")
 | 
|---|
| 86 |  S SAF=$S($G(SAF)]"":$G(SAF),1:SAN)
 | 
|---|
| 87 |  ;
 | 
|---|
| 88 |  S XMDUZ="Rad HL7 Interface Processor"
 | 
|---|
| 89 |  ;
 | 
|---|
| 90 |  S XMSUB="HL7 message from "_SAF_" application rejected."
 | 
|---|
| 91 |  ;
 | 
|---|
| 92 |  S RAERTXT(1)="There was a problem processing an HL7 message sent by "
 | 
|---|
| 93 |  S RAERTXT(2)=SAF_" on "_RADT_"."
 | 
|---|
| 94 |  S RAERTXT(3)=""
 | 
|---|
| 95 |  S RAERTXT(4)="The report entered on Case #"_RACN_" for "_RAPT
 | 
|---|
| 96 |  S RAERTXT(5)="was rejected by Radiology/Nuclear Medicine."
 | 
|---|
| 97 |  S RAERTXT(6)=""
 | 
|---|
| 98 |  S RAERTXT(7)="The reason given was:"
 | 
|---|
| 99 |  S RAERTXT(8)=RAERR
 | 
|---|
| 100 |  S RAERTXT(9)=""
 | 
|---|
| 101 |  S RAERTXT(10)="(  This message has been sent to G."_RAMGP
 | 
|---|
| 102 |  S RAERTXT(11)="   and to the verifying physician, "_RAUSR_"  )"
 | 
|---|
| 103 |  S XMTEXT="RAERTXT("
 | 
|---|
| 104 |  ;
 | 
|---|
| 105 |  S:$O(^XMB(3.8,"B",RAMGP,0)) XMY("G."_RAMGP)="" ; send to group
 | 
|---|
| 106 |  S:$G(RAUSR)]"" XMY(RAUSR)="" ; send to dictating doctor
 | 
|---|
| 107 |  ;
 | 
|---|
| 108 |  D ^XMD
 | 
|---|
| 109 |  ;
 | 
|---|
| 110 |  Q
 | 
|---|
| 111 | EXIT ; Kill variables and return to bridge routine..
 | 
|---|
| 112 |  K RAEX,RADT,RAERRX,RAPT,SFAC,RAEXFIL,RALNGCS,RAUSR,RAMSG,X,Y
 | 
|---|
| 113 |  Q
 | 
|---|