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