[613] | 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
|
---|