1 | DGQEHL72 ;ALB/JFP - VIC HL7 Batch Message Builder;09/01/96
|
---|
2 | ;;V5.3;REGISTRATION;**73**;DEC 11,1996
|
---|
3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | EVENT(DGQEEVN,DFNARR) ;
|
---|
6 | ; -- This option is the main entry point for the ID card driver.
|
---|
7 | ;
|
---|
8 | ;Input : DGQEEVN - HL7 event type
|
---|
9 | ; DFNARRY - Array of DFNs to process
|
---|
10 | ;
|
---|
11 | ;Output : None
|
---|
12 | ;
|
---|
13 | ; -- Check input variables
|
---|
14 | Q:'$D(DGQEEVN) "-1^required parameter not passed - event type"
|
---|
15 | Q:'$D(DFNARR) "-1^ required parameter not passed - DFN array"
|
---|
16 | ;
|
---|
17 | ; -- Declare variables
|
---|
18 | N HL7XMIT,XMITERR,MAXBATCH,MAXLINE,BATCHCNT,ERRCNT,DFN,MSGID,INCREM
|
---|
19 | N ERRCNT,LINECNT,STATUS,ERRFLG
|
---|
20 | N HLECH,HLEID,HLFS,HLMTIEN,HLRESLT,HLSAN
|
---|
21 | N CLERK,OPT,SAPPL,RAPPL,MID
|
---|
22 | ;
|
---|
23 | EVNA08 ; -- A08 Update patient information for VIC
|
---|
24 | I DGQEEVN="A08" D A08
|
---|
25 | I ERRFLG=1 Q "-1^see mail message for details"
|
---|
26 | Q 0
|
---|
27 | ;
|
---|
28 | A08 ; -- Builds update patient record
|
---|
29 | ;
|
---|
30 | ; -- Initialize global locations
|
---|
31 | S HL7XMIT="^TMP(""HLS"","_$J_")"
|
---|
32 | S XMITERR="^TMP(""DGQE"","_$J_",""ERROR"")"
|
---|
33 | K @XMITERR,@HL7XMIT
|
---|
34 | ; -- Set limits for batch message
|
---|
35 | S MAXBATCH=30
|
---|
36 | S MAXLINE=500
|
---|
37 | ; -- Set up HL7 variables
|
---|
38 | S BATCHCNT=0
|
---|
39 | S ERRCNT=0
|
---|
40 | D INIT
|
---|
41 | ; -- Check for error in init section and quit
|
---|
42 | I ERRFLG=1 D FATAL Q
|
---|
43 | ; -- Loop through list of transactions
|
---|
44 | S DFN=""
|
---|
45 | F S DFN=$O(@DFNARR@(DFN)) Q:('DFN) D
|
---|
46 | .; -- Calculate message control ID
|
---|
47 | .S MSGID=HLMID_"-"_((BATCHCNT#MAXBATCH)+1)
|
---|
48 | .;W !,"MSGID = ",MSGID
|
---|
49 | .; -- Build HL7 message
|
---|
50 | .S INCREM=$$BLDA08^DGQEHL73(DFN,.HL,MSGID,HL7XMIT,LINECNT)
|
---|
51 | .; -- Check for error, increment less than 1
|
---|
52 | .I (INCREM<0) D Q
|
---|
53 | ..S ERRCNT=ERRCNT+1
|
---|
54 | ..S @XMITERR@(DFN)=$P(INCREM,"^",2)
|
---|
55 | .; -- Increment counts
|
---|
56 | .S LINECNT=LINECNT+INCREM
|
---|
57 | .S BATCHCNT=BATCHCNT+1
|
---|
58 | .; -- Create tracking entry in ADT/HL7 transmission file (#39.4)
|
---|
59 | .S FILE=$$FILE^DGQEHL74(MSGID,DFN,CLERK,OPT,SAPPL)
|
---|
60 | .I FILE=-1 D ERRBULL^DGQEHL70($P(FILE,"^",2)) Q
|
---|
61 | .; -- Check max size of batch, Send on max, Reset HL7 variables
|
---|
62 | .I '(BATCHCNT#MAXBATCH)!(LINECNT>MAXLINE) D
|
---|
63 | ..D SNDBTCH
|
---|
64 | ..D INIT
|
---|
65 | ;
|
---|
66 | ; -- Check for unsent batch
|
---|
67 | I ($O(@HL7XMIT@(0))) D
|
---|
68 | .D SNDBTCH
|
---|
69 | ; -- Send Completion bulletin
|
---|
70 | D CMPLBULL^DGQEHL70(BATCHCNT,XMITERR)
|
---|
71 | FATAL ; -- Fatal error or clean up variables, exit code
|
---|
72 | K @XMITERR,@HL7XMIT
|
---|
73 | Q
|
---|
74 | ;
|
---|
75 | INIT ; -- Initialize variables
|
---|
76 | S ERRFLG=0
|
---|
77 | S LINECNT=1
|
---|
78 | K @HL7XMIT
|
---|
79 | ; -- Get pointer to sending event
|
---|
80 | S HLEID=+$O(^ORD(101,"B","DGQE HL7 A08 VIC SERVER",0))
|
---|
81 | ; -- Check existance of event, send error bulletin, done
|
---|
82 | I ('HLEID) D Q
|
---|
83 | .D ERRBULL^DGQEHL70("-1^Unable to initialize HL7 variables - protocol not found")
|
---|
84 | .S ERRFLG=1
|
---|
85 | ; -- Get variables from HL7 package
|
---|
86 | D INIT^HLFNC2(HLEID,.HL)
|
---|
87 | ; -- Check existance of HL variables, send error bulletin, done
|
---|
88 | I ($O(HL(""))="") D Q
|
---|
89 | .D ERRBULL^DGQEHL70("-1^"_$P(HL,"^",2))
|
---|
90 | .S ERRFLG=1
|
---|
91 | ; -- Set variables for transmission file
|
---|
92 | S SAPPL=$S($D(HL("SAN")):$G(HL("SAN")),1:"")
|
---|
93 | S CLERK=$S(DUZ'="":$P($G(^VA(200,DUZ,0)),"^",1),1:"")
|
---|
94 | S OPT=$S($D(XQY0):$P($G(XQY0),"^",2),1:"")
|
---|
95 | ; -- Create batch message
|
---|
96 | D CREATE^HLTF(.HLMID,.HLMTIEN,.HLDT,.HLDT1)
|
---|
97 | ; -- Check to see if batch message created, send error, done
|
---|
98 | I ('HLMTIEN) D Q
|
---|
99 | .D ERRBULL^DGQEHL70("-1^Unable to create batch HL7 message")
|
---|
100 | .S ERRFLG=1
|
---|
101 | Q
|
---|
102 | ;
|
---|
103 | SNDBTCH ; -- Sends batch message
|
---|
104 | S HLP("PRIORITY")="I"
|
---|
105 | D GENERATE^HLMA(HLEID,"GB",1,.HLRESLT,HLMTIEN,.HLP)
|
---|
106 | ; -- Check for error
|
---|
107 | I ($P(HLRESLT,"^",2)'="") D Q
|
---|
108 | .S STATUS=$P(HLRESLT,"^",2)_"^"_$P(HLRESLT,"^",3)
|
---|
109 | .D ERRBULL^DGQEHL70(STATUS)
|
---|
110 | .S ERRFLG=1
|
---|
111 | ; -- Successful call, message ID returned
|
---|
112 | S STATUS=$P(HLRESLT,"^",1)
|
---|
113 | I $D(JPTEST) W !,"Message ID = ",STATUS
|
---|
114 | Q
|
---|
115 | ;
|
---|
116 | END ; -- End of code
|
---|
117 | Q
|
---|
118 | ;
|
---|