[613] | 1 | FBFHLD5 ;OIFO/SAB-GET DATA FOR PHARMACY INVOICE ;10/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 | EN ;
|
---|
| 7 | ; input
|
---|
| 8 | ; FBAAIN - invoice number
|
---|
| 9 | ; output
|
---|
| 10 | ; If transaction type = "X" then only * items are output
|
---|
| 11 | ; Claim Level Data
|
---|
| 12 | ; FBD(0,"AMT") = Amount Disbursed^Amount Interest
|
---|
| 13 | ; *FBD(0,"CAN") = Cancel Date^Cancel Reason^Cancel Activity
|
---|
| 14 | ; FBD(0,"DT") = Invoice Date
|
---|
| 15 | ; *FBD(0,"FPPS") = FPPS Claim ID
|
---|
| 16 | ; *FBD(0,"INV") = Invoice #^Transaction Type^Station #
|
---|
| 17 | ;
|
---|
| 18 | ; Line Level Data (# is a sequential number)
|
---|
| 19 | ; FBD(#,"ADJ") = AdjReason1^AdjGrp1^AdjAmt1^AdjReason2^AdjGrp2^AdjAmt2
|
---|
| 20 | ; FBD(#,"AMT") = Amount Claimed^Amount Paid
|
---|
| 21 | ; FBD(#,"CK") = Check Number^Check Date^Payment Method
|
---|
| 22 | ; FBD(#,"DT") = Date Prescription Filled
|
---|
| 23 | ; FBD(#,"FPPS") = FPPS Line Item
|
---|
| 24 | ; FBD(#,"RMK") = Remittance Remark1,Remittance Remark2
|
---|
| 25 | ;
|
---|
| 26 | ; If exceptions for invoice
|
---|
| 27 | ; ^TMP($J,"FBE",FBAAIN,seq number)=message
|
---|
| 28 | ; If warnings for invoice
|
---|
| 29 | ; ^TMP($J,"FBW",FBAAIN,seq number)=message
|
---|
| 30 | ;
|
---|
| 31 | ; initialize variables
|
---|
| 32 | N DA,FBC,FBI,FBIENS,FBRXY,FBSTA,FBTTYP,FBY
|
---|
| 33 | K FBD
|
---|
| 34 | S FBC=0 ; line count
|
---|
| 35 | ;
|
---|
| 36 | S DA(1)=FBAAIN
|
---|
| 37 | S FBY(0)=$G(^FBAA(162.1,DA(1),0))
|
---|
| 38 | ; loop thru prescriptions on invoice
|
---|
| 39 | S DA=0 F S DA=$O(^FBAA(162.1,DA(1),"RX",DA)) Q:'DA D
|
---|
| 40 | . S FBIENS=DA_","_DA(1)_","
|
---|
| 41 | . F FBI=0,2,3,"FBREJ" S FBRXY(FBI)=$G(^FBAA(162.1,DA(1),"RX",DA,FBI))
|
---|
| 42 | . Q:'$$CKLNST() ; skip line if status not OK to transmit
|
---|
| 43 | . S FBC=FBC+1
|
---|
| 44 | . ; if 1st line then get invoice level data
|
---|
| 45 | . I FBC=1 D INVOICE
|
---|
| 46 | . I FBTTYP="L" D LINE
|
---|
| 47 | Q
|
---|
| 48 | ;
|
---|
| 49 | INVOICE ; determine invoice data from 1st line item
|
---|
| 50 | ; FBD(0,"AMT") = Amount Disbursed^Amount Interest
|
---|
| 51 | ; FBD(0,"CAN") = Cancel Date^Cancel Reason^Cancel Activity
|
---|
| 52 | ; FBD(0,"DT") = Invoice Date
|
---|
| 53 | ; FBD(0,"FPPS") = FPPS Claim ID
|
---|
| 54 | ; FBD(0,"INV") = Invoice #^Transaction Type^Station #
|
---|
| 55 | ; FBSTA = station number
|
---|
| 56 | ; FBTTYP = transaction type (L or X)
|
---|
| 57 | ;
|
---|
| 58 | N FBDT,FBOB,FBX
|
---|
| 59 | ; determine Transaction Type (based on CANCELLATION DATE)
|
---|
| 60 | S FBTTYP=$S($P(FBRXY(2),U,11)]"":"X",1:"L")
|
---|
| 61 | ;
|
---|
| 62 | ; determine station number
|
---|
| 63 | S FBSTA=$$RXSTA(FBAAIN,$P(FBRXY(0),U,17))
|
---|
| 64 | ;
|
---|
| 65 | ;INV
|
---|
| 66 | S FBD(0,"INV")=FBAAIN_U_FBTTYP_U_FBSTA
|
---|
| 67 | ;
|
---|
| 68 | ;FPPS
|
---|
| 69 | S FBD(0,"FPPS")=$P(FBY(0),U,13)
|
---|
| 70 | ;
|
---|
| 71 | ;CAN
|
---|
| 72 | ; if cancel then get cancel data
|
---|
| 73 | I FBTTYP="X" D Q
|
---|
| 74 | . S FBD(0,"CAN")=$P(FBRXY(2),U,11)_U_$$GET1^DIQ(162.11,FBIENS,"32:1")_U_$P(FBRXY(2),U,13)
|
---|
| 75 | ;
|
---|
| 76 | ;AMT
|
---|
| 77 | S FBD(0,"AMT")="0^0" ; initialize sums
|
---|
| 78 | ;
|
---|
| 79 | ;DT
|
---|
| 80 | ; determine invoice date
|
---|
| 81 | ; (date certified or date paid or date supervisor closed batch)
|
---|
| 82 | S FBDT=$P(FBRXY(0),U,19) ; date certified for payment (lines may differ)
|
---|
| 83 | I FBDT="" S FBDT=$P(FBRXY(2),U,8) ; date paid
|
---|
| 84 | I FBDT="",$P(FBRXY(0),U,17) S FBDT=$P(^FBAA(161.7,$P(FBRXY(0),U,17),0),U,6) ; date supv closed batch (for 0.00 lines)
|
---|
| 85 | S FBD(0,"DT")=FBDT
|
---|
| 86 | ;
|
---|
| 87 | Q
|
---|
| 88 | ;
|
---|
| 89 | LINE ; FBC
|
---|
| 90 | ; FBD(#,"ADJ") = AdjReason1^AdjGrp1^AdjAmt1^AdjReason2^AdjGrp2^AdjAmt2
|
---|
| 91 | ; FBD(#,"AMT") = Amount Claimed^Amount Paid
|
---|
| 92 | ; FBD(#,"CK") = Check Number^Check Date^Payment Method
|
---|
| 93 | ; FBD(#,"DT") = Date of Service
|
---|
| 94 | ; FBD(#,"FPPS") = FPPS Line Item
|
---|
| 95 | ; FBD(#,"RMK") = Remittance Remark1^Remittance Remark2
|
---|
| 96 | ; FBD(#,"SVC") = Service Code^Qualifier^Mod1,Mod2,Mod3,Mod4^Units
|
---|
| 97 | ;
|
---|
| 98 | N FBADJ
|
---|
| 99 | ; compare invoice transaction type (L,X) with line cancel status
|
---|
| 100 | I ((FBTTYP="X")&($P(FBRXY(2),U,11)=""))!((FBTTYP="L")&($P(FBRXY(2),U,11)]"")) D POST^FBFHLU(FBAAIN,"E","ALL LINES DO NOT HAVE SAME CANCEL STATUS") Q
|
---|
| 101 | ;
|
---|
| 102 | ;FPPS
|
---|
| 103 | S FBD(FBC,"FPPS")=$P(FBRXY(3),U)
|
---|
| 104 | ;
|
---|
| 105 | ;DT
|
---|
| 106 | S FBD(FBC,"DT")=$P(FBRXY(0),U,3)
|
---|
| 107 | ;
|
---|
| 108 | ;AMT
|
---|
| 109 | S FBD(FBC,"AMT")=$P(FBRXY(0),U,4)_U_$P(FBRXY(0),U,16)
|
---|
| 110 | ;
|
---|
| 111 | ;ADJ
|
---|
| 112 | D LOADADJ^FBRXFA(FBIENS,.FBADJ)
|
---|
| 113 | I $D(FBADJ) S FBD(FBC,"ADJ")=$$ADJL^FBUTL2(.FBADJ)
|
---|
| 114 | ;
|
---|
| 115 | ;RMK
|
---|
| 116 | S FBD(FBC,"RMK")=$$RRL^FBRXFR(FBIENS)
|
---|
| 117 | ;
|
---|
| 118 | ;CK
|
---|
| 119 | S FBD(FBC,"CK")=$P(FBRXY(2),U,10)_U_$P(FBRXY(2),U,8)_U_$$PAYMETH^FBFHLU($P(FBRXY(2),U,10))
|
---|
| 120 | ;
|
---|
| 121 | ;CAMT ; add disbursed and interest amounts to claim (0) level
|
---|
| 122 | ; note - disbursed amount on file includes the interest
|
---|
| 123 | ; since FPPS wants it w/o interest - interest is subtracted
|
---|
| 124 | S $P(FBD(0,"AMT"),U)=$P(FBD(0,"AMT"),U)+($P(FBRXY(2),U,14)-$P(FBRXY(2),U,15))
|
---|
| 125 | S $P(FBD(0,"AMT"),U,2)=$P(FBD(0,"AMT"),U,2)+$P(FBRXY(2),U,15)
|
---|
| 126 | Q
|
---|
| 127 | ;
|
---|
| 128 | CKLNST() ; check line status extrinsic function
|
---|
| 129 | ; result (0 or 1)
|
---|
| 130 | ; 0 when line should not be sent to FPPS
|
---|
| 131 | ; 1 when line should be sent to FPPS
|
---|
| 132 | N FBRET
|
---|
| 133 | S FBRET=1
|
---|
| 134 | ;
|
---|
| 135 | ; check if rejected line
|
---|
| 136 | I $P(FBRXY("FBREJ"),U)]"" S FBRET=0
|
---|
| 137 | ;
|
---|
| 138 | Q FBRET
|
---|
| 139 | ;
|
---|
| 140 | RXSTA(FBAAIN,FBBATCH) ; determine station number for pharmacy
|
---|
| 141 | ; input
|
---|
| 142 | ; FBAAIN - invoice number in FEE BASIS PHARMACY INVOICE file
|
---|
| 143 | ; FBBATCH - ien of entry in FEE BASIS BATCH (#161.7) file
|
---|
| 144 | ; returns station number or NULL value
|
---|
| 145 | N FBRET
|
---|
| 146 | ; if batch not input then check all line items for a batch
|
---|
| 147 | I 'FBBATCH D
|
---|
| 148 | . N DA
|
---|
| 149 | . S DA(1)=FBAAIN
|
---|
| 150 | . S DA=0 F S DA=$O(^FBAA(162.1,DA(1),"RX",DA)) Q:'DA D Q:FBBATCH
|
---|
| 151 | . . S FBBATCH=$P($G(^FBAA(162.1,DA(1),"RX",DA,0)),U,17)
|
---|
| 152 | ;
|
---|
| 153 | ; if batch known then call API to get station number
|
---|
| 154 | I FBBATCH S FBRET=$$STANO^FBFHLU(FBBATCH)
|
---|
| 155 | ; if batch not known then get station number based on fee site param.
|
---|
| 156 | I 'FBBATCH S FBRET=$$GET1^DIQ(161.4,"1,","27:99")
|
---|
| 157 | ;
|
---|
| 158 | Q FBRET
|
---|
| 159 | ;
|
---|
| 160 | ;FBFHLD5
|
---|