[613] | 1 | DGRUADT1 ;ALB/SCK - MAIN BUILDER FOR RAI/MDS ADT MESSAGING ; 7-8-1999
|
---|
| 2 | ;;5.3;Registration;**190,480**;Aug 13, 1993
|
---|
| 3 | ;
|
---|
| 4 | BLDMSG(DFN,EVCODE,DGIEN,VAFHDT,DGWARD,DGOLDT,DGDTYP) ;
|
---|
| 5 | ; INPUT
|
---|
| 6 | ; DFN - Ien in Patient File
|
---|
| 7 | ; EVCODE - HL7 event code
|
---|
| 8 | ; DGIEN - Ien of the Movement
|
---|
| 9 | ; VAFHDT - Date of event
|
---|
| 10 | ; DGWARD - Associated ward
|
---|
| 11 | ; DGOLDT - Old date of ADT even for change to date [Optional]
|
---|
| 12 | ; DGDTYP - Change Date type [Optional]
|
---|
| 13 | ; A - Admission date
|
---|
| 14 | ; T - Transfer Date
|
---|
| 15 | ; D - Discharge Date
|
---|
| 16 | ;
|
---|
| 17 | Q:"A01,A02,A03,A08,A11,A12,A13,A21,A22"'[$G(EVCODE)
|
---|
| 18 | ;
|
---|
| 19 | K HL,HLA,XMTARRY,HLRST
|
---|
| 20 | ;
|
---|
| 21 | D INIT^HLFNC2("DGRU-RAI-"_EVCODE_"-SERVER",.HL)
|
---|
| 22 | I $O(HL(""))']"" D Q
|
---|
| 23 | . D ERRBUL(DFN,DT,EVCODE,"-1^Server Protocol not found")
|
---|
| 24 | ;
|
---|
| 25 | S DGOLDT=$G(DGOLDT),DGDTYP=$G(DGDTYP)
|
---|
| 26 | D:EVCODE="A01" EN^DGRUGA01(DFN,DGIEN,"XMTARRY")
|
---|
| 27 | D:EVCODE="A02" EN^DGRUGA02(DFN,DGIEN,"XMTARRY")
|
---|
| 28 | D:EVCODE="A03" EN^DGRUGA03(DFN,DGIEN,"XMTARRY")
|
---|
| 29 | ; The A11 message is a special case and requires sending the Ward.
|
---|
| 30 | D:EVCODE="A11" EN^DGRUGA11(DFN,DGIEN,"XMTARRY",$G(DGWARD),$G(VAFHDT)) ;GRR 1/26/00 TEST
|
---|
| 31 | D:EVCODE="A12" EN^DGRUGA12(DFN,DGIEN,"XMTARRY")
|
---|
| 32 | D:EVCODE="A13" EN^DGRUGA13(DFN,DGIEN,"XMTARRY")
|
---|
| 33 | D:EVCODE="A21" EN^DGRUGA21(DFN,DGIEN,"XMTARRY")
|
---|
| 34 | D:EVCODE="A22" EN^DGRUGA22(DFN,DGIEN,"XMTARRY")
|
---|
| 35 | D:EVCODE="A08" EN^DGRUGA08(DFN,DGIEN,"XMTARRY",DGDTYP_"^"_DGOLDT)
|
---|
| 36 | ;
|
---|
| 37 | I '$O(XMTARRY(0)) D Q
|
---|
| 38 | . D ERRBUL(DFN,DT,EVCODE,"-1^Unable to build segment list to transmit")
|
---|
| 39 | ;
|
---|
| 40 | N NDX
|
---|
| 41 | S NDX=0
|
---|
| 42 | F S NDX=$O(XMTARRY(NDX)) Q:'NDX D Q:(+XMTARRY(NDX)<0)
|
---|
| 43 | . I +XMTARRY(NDX)<0 D ERRBUL(DFN,DT,EVCODE,"-1^An error occurred in one of the segments")
|
---|
| 44 | ;
|
---|
| 45 | ; Load data array
|
---|
| 46 | M HLA("HLS")=XMTARRY
|
---|
| 47 | ;
|
---|
| 48 | ; Write out message text if in trace mode
|
---|
| 49 | I $D(DGTRACE) D
|
---|
| 50 | . N X S X=0
|
---|
| 51 | . F S X=+$O(HLA("HLS",X)) Q:'X W !,HLA("HLS",X)
|
---|
| 52 | ;
|
---|
| 53 | I $D(HLA("HLS")) D
|
---|
| 54 | . D GENERATE^HLMA("DGRU-RAI-"_EVCODE_"-SERVER","LM",1,.HLRST)
|
---|
| 55 | . D MSGBUL(DFN,DT,EVCODE,HLRST)
|
---|
| 56 | . I $D(DGTRACE),$D(HLRST) D
|
---|
| 57 | . . W !,"Message ID: ",+$G(HLRST)
|
---|
| 58 | ;
|
---|
| 59 | I +$P(HLRST,"^",2)>0 D Q
|
---|
| 60 | . D ERRBUL(DFN,DT,EVCODE,"-1^"_$P(HLRST,"^",2,3))
|
---|
| 61 | ;
|
---|
| 62 | K HLA,HLERR
|
---|
| 63 | Q
|
---|
| 64 | ;
|
---|
| 65 | MSGBUL(DFN,DT,EVCODE,MSGID) ;
|
---|
| 66 | N XMY,XMDUZ,XMDT,XMZ,XMB,XMCHAN,XMSUB
|
---|
| 67 | ;
|
---|
| 68 | S XMCHAN=1
|
---|
| 69 | S XMSUB="RAI/MDS HL7 MESSAGE XMIT"
|
---|
| 70 | S (XMDUZ,XMDUZ)="RAI/MDS APPLICATION"
|
---|
| 71 | ;
|
---|
| 72 | S XMB="DGRU HL7SND"
|
---|
| 73 | S XMB(1)=EVCODE
|
---|
| 74 | S XMB(2)=$$GET1^DIQ(2,DFN,.01)
|
---|
| 75 | S XMB(3)=+MSGID
|
---|
| 76 | S XMB(4)=$$FMTE^XLFDT(DT)
|
---|
| 77 | S XMB(5)=$$GET1^DIQ(2,DFN,.09) ; p-480 mg
|
---|
| 78 | S XMDT=$$NOW^XLFDT
|
---|
| 79 | D ^XMB
|
---|
| 80 | Q
|
---|
| 81 | ;
|
---|
| 82 | ERRBUL(DFN,DT,EVCODE,ERRMSG) ;
|
---|
| 83 | N XMY,XMDUZ,XMDT,XMZ,XMB,XMCHAN,XMSUB
|
---|
| 84 | ;
|
---|
| 85 | S XMCHAN=1
|
---|
| 86 | S XMSUB="RAI/MDS HL7 ADT ERROR"
|
---|
| 87 | S (XMDUZ,XMDUZ)="RAI/MDS APPLICATION"
|
---|
| 88 | ;
|
---|
| 89 | S XMB="DGRU RAI ERROR"
|
---|
| 90 | S XMB(1)=$$GET1^DIQ(2,DFN,.01)
|
---|
| 91 | S XMB(2)=EVCODE
|
---|
| 92 | S XMB(3)=">>> "_$P(ERRMSG,"^",2)
|
---|
| 93 | S XMB(4)=$S($G(DUZ)>0:$$GET1^DIQ(200,DUZ,.01),1:"")
|
---|
| 94 | S XMB(5)=$$FMTE^XLFDT($$NOW^XLFDT)
|
---|
| 95 | S XMDT=DT
|
---|
| 96 | D ^XMB
|
---|
| 97 | Q
|
---|