1 | FBFHLX1 ;WOIFO/SAB-TRANSMIT HL7 MESSAGES TO FPPS (CON'T) ;9/9/2003
|
---|
2 | ;;3.5;FEE BASIS;**61**;JULY 18, 2003
|
---|
3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | Q
|
---|
5 | ;
|
---|
6 | CHKACK ; check for acknowledgements
|
---|
7 | ; input - none
|
---|
8 | ; output
|
---|
9 | ; FBCNT("ACKT") - count of previously transmitted invoices w/o ack
|
---|
10 | ; FBCNT("ACKA") - count of these that were accepted
|
---|
11 | ; FBCNT("ACKR") - count of these that were rejected
|
---|
12 | ; FBCNT("ACKW") - count of these that are still waiting for ack
|
---|
13 | ; ^TMP($J,"FBNA",invoice number)="" - list waiting for ack
|
---|
14 | ; update file 163.5
|
---|
15 | N FBAAIN,FBMSGID,FBQDA,FBQY,FBSTATUS,FBX
|
---|
16 | ;
|
---|
17 | ; initialize
|
---|
18 | K ^TMP($J,"FBNA")
|
---|
19 | F FBX="ACKA","ACKR","ACKW" S FBCNT(FBX)=0
|
---|
20 | ;
|
---|
21 | ; loop thru transmitted (not yet acknowledged entries)
|
---|
22 | S FBQDA=0 F S FBQDA=$O(^FBHL(163.5,"AC",1,FBQDA)) Q:'FBQDA D
|
---|
23 | . S FBQY=$G(^FBHL(163.5,FBQDA,0))
|
---|
24 | . S FBAAIN=$P(FBQY,U)
|
---|
25 | . Q:FBAAIN="" ; invalid invoice number
|
---|
26 | . S FBMSGID=$P(FBQY,U,4)
|
---|
27 | . Q:FBMSGID=""
|
---|
28 | . ;
|
---|
29 | . S FBSTATUS=$$MSGSTAT^HLUTIL(FBMSGID)
|
---|
30 | . ;
|
---|
31 | . I $P(FBSTATUS,U)=3 D Q
|
---|
32 | . . N FBFDA
|
---|
33 | . . S FBFDA(163.5,FBQDA_",",2)="2" ; set status = acknowledged
|
---|
34 | . . S FBFDA(163.5,FBQDA_",",8)="A" ; set ACK FLAG = ACCEPTED
|
---|
35 | . . S FBFDA(163.5,FBQDA_",",9)=$P(FBSTATUS,U,2) ; set ACK DATE/TIME
|
---|
36 | . . I $D(FBFDA) D FILE^DIE("","FBFDA")
|
---|
37 | . . S FBCNT("ACKA")=FBCNT("ACKA")+1
|
---|
38 | . ;
|
---|
39 | . I $P(FBSTATUS,U)=4 D Q
|
---|
40 | . . N FBFDA,FBTXT
|
---|
41 | . . S FBFDA(163.5,FBQDA_",",2)="2" ; set status = acknowledged
|
---|
42 | . . S FBFDA(163.5,FBQDA_",",8)="R" ; set ACK FLAG = rejected
|
---|
43 | . . S FBFDA(163.5,FBQDA_",",9)=$P(FBSTATUS,U,2) ; set ACK DATE/TIME
|
---|
44 | . . S FBFDA(163.5,FBQDA_",",10)="N" ; rej status = not reported
|
---|
45 | . . I $D(FBFDA) D FILE^DIE("","FBFDA")
|
---|
46 | . . S FBTXT(1)=$P(FBSTATUS,U,3)
|
---|
47 | . . I FBTXT(1)]"" D WP^DIE(163.5,FBQDA_",",11,"","FBTXT") ; error msg
|
---|
48 | . . S FBCNT("ACKR")=FBCNT("ACKR")+1
|
---|
49 | . ;
|
---|
50 | . ; don't report not acknowledged unless it is last entry for invoice
|
---|
51 | . Q:$$LAST^FBFHLU($P(FBQY,U))'=FBQDA
|
---|
52 | . ;
|
---|
53 | . ; last entry for invoice was not acknowledged yet
|
---|
54 | . S ^TMP($J,"FBNA",FBAAIN)=""
|
---|
55 | . S FBCNT("ACKW")=FBCNT("ACKW")+1
|
---|
56 | ;
|
---|
57 | S FBCNT("ACKT")=FBCNT("ACKA")+FBCNT("ACKR")+FBCNT("ACKW")
|
---|
58 | ;
|
---|
59 | Q
|
---|
60 | ;
|
---|
61 | SUMMSG ; Summary Message (build and send)
|
---|
62 | ; input
|
---|
63 | ; ^TMP($J,"FBE",invoice number,seq number)=error text
|
---|
64 | ; ^TMP($J,"FBW",invoice number,seq number)=warning text
|
---|
65 | ; ^TMP($J,"FBNA",invoice number)="" for invoices not acknowledged
|
---|
66 | ; ^TMP($J,"FBX",seq number)=message text so far
|
---|
67 | ; FBXL = last line used in ^TMP($J,"FBX",seq number)
|
---|
68 | ; FBXMIT("START") = start process, FileMan date/time
|
---|
69 | ; FBXMIT("ACK") = start check for acks, FileMan date/time
|
---|
70 | ; FBXMIT("SEND") = start transmit, FileMan date/time
|
---|
71 | ; FBXMIT("END") = end process, FileMan date/time
|
---|
72 | ; FBCNT("PENDT")= count of pending invoices that were transmitted
|
---|
73 | ; FBCNT("PENDE")= count of pending invoices that had exception
|
---|
74 | ; FBCNT("ACKT") = count of previously transmitted invoices w/o ack
|
---|
75 | ; FBCNT("ACKA") = count of these that were accepted
|
---|
76 | ; FBCNT("ACKR") = count of these that were rejected
|
---|
77 | ; FBCNT("ACKW") = count of these that are still waiting for ack
|
---|
78 | ; output
|
---|
79 | ; ^TMP($J,"FBX",
|
---|
80 | ; mail message
|
---|
81 | ;
|
---|
82 | N XMDUZ,XMSUB,XMTEXT,XMY,XMZ
|
---|
83 | ;
|
---|
84 | ; add header text
|
---|
85 | S ^TMP($J,"FBX",1)=$$FMTE^XLFDT(FBXMIT("START"))_" Process Started."
|
---|
86 | S ^TMP($J,"FBX",2)=$$FMTE^XLFDT(FBXMIT("ACK"))_" Check transmitted messages for acknowledgement..."
|
---|
87 | S ^TMP($J,"FBX",3)=" "_FBCNT("ACKT")_" previously transmitted messages w/o ack."
|
---|
88 | S ^TMP($J,"FBX",4)=" "_FBCNT("ACKA")_" of these were accepted."
|
---|
89 | S ^TMP($J,"FBX",5)=" "_FBCNT("ACKR")_" of these were rejected."
|
---|
90 | S ^TMP($J,"FBX",6)=" "_FBCNT("ACKW")_" of these still waiting for ack."
|
---|
91 | S ^TMP($J,"FBX",7)=$$FMTE^XLFDT(FBXMIT("SEND"))_" Transmit pending invoices..."
|
---|
92 | S ^TMP($J,"FBX",8)=" "_FBCNT("PENDT")_" transmitted."
|
---|
93 | S ^TMP($J,"FBX",9)=" "_FBCNT("PENDE")_" not transmitted due to exception."
|
---|
94 | S ^TMP($J,"FBX",10)=$$FMTE^XLFDT(FBXMIT("END"))_" Process Complete."
|
---|
95 | I $D(ZTSTOP) S ^TMP($J,"FBX",11)=" Process (task) stopped due to user request."
|
---|
96 | ;
|
---|
97 | ; List Exceptions
|
---|
98 | I FBCNT("PENDE")>0 D
|
---|
99 | . N FBAAIN,FBL,FBX
|
---|
100 | . D PTXT(.FBXL," ")
|
---|
101 | . D PTXT(.FBXL,"List of Exceptions during Transmit of Pending Invoices")
|
---|
102 | . S FBAAIN="" F S FBAAIN=$O(^TMP($J,"FBE",FBAAIN)) Q:FBAAIN="" D
|
---|
103 | . . D PTXT(.FBXL,"Invoice: "_FBAAIN)
|
---|
104 | . . S FBL=0 F S FBL=$O(^TMP($J,"FBE",FBAAIN,FBL)) Q:'FBL D
|
---|
105 | . . . S FBX=$G(^TMP($J,"FBE",FBAAIN,FBL))
|
---|
106 | . . . I FBX]"" D PTXT(.FBXL," "_FBX)
|
---|
107 | ;
|
---|
108 | ; List Invoices Waiting for Ack
|
---|
109 | I FBCNT("ACKW")>0 D
|
---|
110 | . N FBAAIN
|
---|
111 | . D PTXT(.FBXL," ")
|
---|
112 | . D PTXT(.FBXL,"List of Invoices Waiting for Acknowledgement")
|
---|
113 | . S FBAAIN="" F S FBAAIN=$O(^TMP($J,"FBW",FBAAIN)) Q:FBAAIN="" D
|
---|
114 | . . D PTXT(.FBXL,"Invoice: "_FBAAIN)
|
---|
115 | ;
|
---|
116 | ; Report Rejected Acks
|
---|
117 | I $D(^FBHL(163.5,"ARS","N")) D
|
---|
118 | . N FBAAIN,FBFDA,FBI,FBQDA,FBTXT,FBWP,FBX
|
---|
119 | . D PTXT(.FBXL," ")
|
---|
120 | . D PTXT(.FBXL,"List of Rejected Invoices that have not been reported.")
|
---|
121 | . S FBQDA=0 F S FBQDA=$O(^FBHL(163.5,"ARS","N",FBQDA)) Q:'FBQDA D
|
---|
122 | . . S FBQY=$G(^FBHL(163.5,FBQDA,0))
|
---|
123 | . . S FBAAIN=$P(FBQY,U)
|
---|
124 | . . D PTXT(.FBXL,"Invoice: "_FBAAIN)
|
---|
125 | . . ;
|
---|
126 | . . K FBWP
|
---|
127 | . . S FBX=$$GET1^DIQ(163.5,FBQDA_",",11,"","FBWP")
|
---|
128 | . . S FBI=0 F S FBI=$O(FBWP(FBI)) Q:'FBI D
|
---|
129 | . . . S FBTXT=FBWP(FBI)
|
---|
130 | . . . D PTXT(.FBXL," "_FBTXT)
|
---|
131 | . . ;
|
---|
132 | . . K FBFDA
|
---|
133 | . . S FBFDA(163,FBQDA_",",10)="R" ; set reject status = reported
|
---|
134 | . . I $D(FBFDA) D FILE^DIE("","FBFDA")
|
---|
135 | ;
|
---|
136 | D PTXT(.FBXL," ")
|
---|
137 | D PTXT(.FBXL,"END OF SUMMARY MESSAGE")
|
---|
138 | ;
|
---|
139 | ; send message
|
---|
140 | S XMSUB="FEE BASIS FPPS Transmit "_$$FMTE^XLFDT(FBXMIT("START"),"DF")
|
---|
141 | S XMDUZ="FEE BASIS"
|
---|
142 | S XMY("G.FEE")=""
|
---|
143 | S XMTEXT="^TMP($J,""FBX"","
|
---|
144 | D ^XMD
|
---|
145 | Q
|
---|
146 | ;
|
---|
147 | PTXT(FBXL,FBTXT) ; Post line of text in global array for summary message
|
---|
148 | ; input
|
---|
149 | ; FBXL - last line number used, passed by reference
|
---|
150 | ; FBTXT - line of text
|
---|
151 | ; output
|
---|
152 | ; FBXL - increments value by 1
|
---|
153 | ; ^TMP($J,"FBX",input line+1)=text
|
---|
154 | ;
|
---|
155 | S FBXL=FBXL+1
|
---|
156 | S ^TMP($J,"FBX",FBXL)=FBTXT
|
---|
157 | ;
|
---|
158 | Q
|
---|
159 | ;
|
---|
160 | ;FBFHLX1
|
---|