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