[613] | 1 | DGRUHL1 ;ALB/SCK - RAI/MDS HL7 MESSAGING ACKNOWLEDGEMENT ROUTINES ; 7-9-1999
|
---|
| 2 | ;;5.3;Registration;**190,354,419**;Aug 13, 1993
|
---|
| 3 | ;
|
---|
| 4 | ACK ; Receives the ACK messages
|
---|
| 5 | ; Input : All variables set by the HL7 package
|
---|
| 6 | ; Output : None
|
---|
| 7 | ;
|
---|
| 8 | N DGI,DGX,DGMSG,DGACK,DGPARAM,HLNODE,I,X
|
---|
| 9 | ;
|
---|
| 10 | ;Get message text
|
---|
| 11 | S ^TMP("DGRUACK",$H)="START PROCESS"
|
---|
| 12 | F I=1:1 X HLNEXT Q:(HLQUIT'>0) D
|
---|
| 13 | . S DGMSG(I,1)=HLNODE
|
---|
| 14 | . ; Check for segment length greater than 245
|
---|
| 15 | . S X=0 F S X=+$O(HLNODE(X)) Q:('X) S DGMSG(I,(X+1))=HLNODE(X)
|
---|
| 16 | ;
|
---|
| 17 | M ^TMP("DGRUACK",$H,"HL")=DGMSG
|
---|
| 18 | ; analyze the message and take appropriate response
|
---|
| 19 | ; Quit if there is no valid message header
|
---|
| 20 | Q:$P(DGMSG(1,1),"^")'="MSH"
|
---|
| 21 | ;
|
---|
| 22 | S X=1,DGPARAM=""
|
---|
| 23 | F S X=+$O(DGMSG(X)) Q:('X) D
|
---|
| 24 | . I $P(DGMSG(X,1),"^")="MSA" D
|
---|
| 25 | .. D PROCESS(DGMSG(X,1),.DGPARAM)
|
---|
| 26 | .. D NOTIFY
|
---|
| 27 | Q
|
---|
| 28 | ;
|
---|
| 29 | NOTIFY ; TAsk sending of response notification
|
---|
| 30 | ;
|
---|
| 31 | Q:$O(DGPARAM(""))="" ;added p-354
|
---|
| 32 | D SENDIT
|
---|
| 33 | Q
|
---|
| 34 | ;
|
---|
| 35 | SENDIT ; Notify mail group that a response message was received from the RAI/MDS COTS system
|
---|
| 36 | ; Input : MSGARY() - Array containing HL7 message received
|
---|
| 37 | ; Output : None
|
---|
| 38 | ;
|
---|
| 39 | N MSGTXT,XMY,XMTEXT,XMY,XMDUZ,XMDT,XMZ,LINE,XMB,XMCHAN,XMSUB
|
---|
| 40 | ;
|
---|
| 41 | S XMCHAN=1
|
---|
| 42 | S XMSUB="RAI/MDS Message Receipt for "_DGPARAM(1)
|
---|
| 43 | S (XMDUZ,XMDUZ)="RAI/MDS APPLICATION"
|
---|
| 44 | ;
|
---|
| 45 | M XMB=DGPARAM
|
---|
| 46 | S XMB="DGRU REJECT"
|
---|
| 47 | S XMDT=DT
|
---|
| 48 | D ^XMB
|
---|
| 49 | Q
|
---|
| 50 | ;
|
---|
| 51 | PROCESS(DGMSG,DGPARAM) ;
|
---|
| 52 | N ACK,MSGID
|
---|
| 53 | ;
|
---|
| 54 | Q:$G(DGMSG)']""
|
---|
| 55 | ;
|
---|
| 56 | S ACK=$P(DGMSG,"^",2) ; Get acknowledgement code
|
---|
| 57 | ; If the acknowledgement code is AA, then do not send notification
|
---|
| 58 | Q:ACK="AA" ;changed p-354
|
---|
| 59 | ;
|
---|
| 60 | ; Get outgoing message ID
|
---|
| 61 | S MSGID=$P(DGMSG,"^",3)
|
---|
| 62 | ;
|
---|
| 63 | ; Retrieve outgoing message information from file #773 for message ID
|
---|
| 64 | D EXTRACT(MSGID,.DGPARAM)
|
---|
| 65 | ;
|
---|
| 66 | ;; ===================================================================
|
---|
| 67 | ;; The current HL7 package does not process acknowledgements other than
|
---|
| 68 | ;; "accepted" through the process routine at the current time. This line
|
---|
| 69 | ;; should be removed once the HL7 package is patched to process AR and AE messages.
|
---|
| 70 | ;S:ACK="AA" DGPARAM(4)="" ;changed p-354
|
---|
| 71 | ;; ===================================================================
|
---|
| 72 | ;
|
---|
| 73 | ; Retrieve rejection message from COTS acknowledgement message
|
---|
| 74 | S:'(ACK="AA") DGPARAM(4)=$P(DGMSG,"^",4)
|
---|
| 75 | S ^TMP("DGRUACK",$H,"ACK")=DGPARAM(4)
|
---|
| 76 | Q
|
---|
| 77 | ;
|
---|
| 78 | EXTRACT(MSGID,DGPARAM) ; Extract patient and related message information for
|
---|
| 79 | ; error bulletin to be sent
|
---|
| 80 | ;
|
---|
| 81 | N DGIEN,DGOIEN,DGQUIT,DGTXT,NDX
|
---|
| 82 | ;
|
---|
| 83 | S DGIEN=0
|
---|
| 84 | ; Retrieve ien of outgoing message administration entry, file #773
|
---|
| 85 | F S DGIEN=+$O(^HLMA("C",MSGID,DGIEN)) Q:'DGIEN D Q:$G(DGQUIT)
|
---|
| 86 | . ; Retrieve ien of outgoing message text
|
---|
| 87 | . S DGOIEN=+$$GET1^DIQ(773,DGIEN,.01,"I")
|
---|
| 88 | . S DGPARAM(7)=$$GET1^DIQ(773,DGIEN,16,"E") ;changed p-419
|
---|
| 89 | . S DGPARAM(5)=$$GET1^DIQ(773,DGIEN,2,"I") ;added p-354
|
---|
| 90 | . Q:(DGOIEN<0)
|
---|
| 91 | . ; Retrieve information from message file
|
---|
| 92 | . ;S DGPARAM(5)=+$$GET1^DIQ(772,DGOIEN,6) ;changed p-354
|
---|
| 93 | . S X=$$GET1^DIQ(772,DGOIEN,200,"","DGTXT")
|
---|
| 94 | . I $D(DGTXT) D
|
---|
| 95 | .. S NDX=0
|
---|
| 96 | .. F S NDX=$O(DGTXT(NDX)) Q:'NDX D
|
---|
| 97 | ... I $P(DGTXT(NDX),"^")="PID" D
|
---|
| 98 | .... S DGPARAM(1)=$$FMNAME^HLFNC($P(DGTXT(NDX),"^",6),"~")
|
---|
| 99 | .... S DGPARAM(2)=$P(DGTXT(NDX),"^",20)
|
---|
| 100 | ... I $P(DGTXT(NDX),"^")="EVN" D
|
---|
| 101 | .... S DGPARAM(3)=$P(DGTXT(NDX),"^",2)
|
---|
| 102 | .... S DGPARAM(6)=$$FMTE^XLFDT($$FMDATE^HLFNC($P(DGTXT(NDX),"^",3)))
|
---|
| 103 | Q
|
---|