| 1 | BPSOS03 ;BHAM ISC/FCS/DRS - 9002313.03 utilities ;06/01/2004
 | 
|---|
| 2 |  ;;1.0;E CLAIMS MGMT ENGINE;**1,5**;JUN 2004;Build 45
 | 
|---|
| 3 |  ;;Per VHA Directive 2004-038, this routine should not be modified.
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 |  Q
 | 
|---|
| 6 |  ; General utilities for retrieval from 9002313.03, Claim Response
 | 
|---|
| 7 |  ; $$INSPAID is used by BPSOSQL
 | 
|---|
| 8 | INSPAID(N) ;EP - from BPSOSQL -  total amount paid by insurer
 | 
|---|
| 9 |  N RX,TOT,X S (TOT,RX)=0
 | 
|---|
| 10 |  F  S RX=$O(^BPSR(N,1000,RX)) Q:'RX  D
 | 
|---|
| 11 |  . ; Try Gross Amount Due, and if that's zero, Usual and Customary
 | 
|---|
| 12 |  . S X=$$INSPAID1(N,RX)
 | 
|---|
| 13 |  . S TOT=TOT+X
 | 
|---|
| 14 |  Q TOT
 | 
|---|
| 15 | INSPAID1(N,RX) ;EP -
 | 
|---|
| 16 |  N X S X=$$509(N,RX) Q X
 | 
|---|
| 17 | NETPAID1(N,RX) ; EP - computed field in 9002313.57 and 9002313.59
 | 
|---|
| 18 |  N X S X=$$509(N,RX) ; X = (#509) Total Amount Paid
 | 
|---|
| 19 |  N SUB S SUB=1 ; Do we need to subtract (#505) Patient Pay Amount?
 | 
|---|
| 20 |  N IEN02,INS,FMT S IEN02=$P(^BPSR(RESP,0),U)
 | 
|---|
| 21 |  I IEN02 D
 | 
|---|
| 22 |  . S INS=$P($G(^BPSC(IEN02,0)),U,2) Q:'INS    ;IHS/SD/lwj 9/11/02
 | 
|---|
| 23 |  . S FMT=INS
 | 
|---|
| 24 |  . N X S X=$P(^BPSF(9002313.92,FMT,1),U,10)
 | 
|---|
| 25 |  . I X S SUB=0 ; Total paid means total paid by insurance
 | 
|---|
| 26 |  I SUB S X=X-$$505(N,RX)
 | 
|---|
| 27 |  I X<0,SUB D  ; apparently this format is supposed to be excl.
 | 
|---|
| 28 |  . Q:'$G(FMT)
 | 
|---|
| 29 |  . S $P(^BPSF(9002313.92,FMT,1),U,10)=1
 | 
|---|
| 30 |  . S X=X+$$505(N,RX) ;*1.26*1*
 | 
|---|
| 31 |  Q X
 | 
|---|
| 32 | REJTEXT(RESP,POS,ARR) ; EP - fills array (passed by ref)
 | 
|---|
| 33 |  K ARR
 | 
|---|
| 34 |  N A,I,X,R S (A,I)=0
 | 
|---|
| 35 |  F  S A=$O(^BPSR(RESP,1000,POS,511,A)) Q:'A  D
 | 
|---|
| 36 |  . S R=$P(^BPSR(RESP,1000,POS,511,A,0),U)
 | 
|---|
| 37 |  . Q:R=""
 | 
|---|
| 38 |  . N S S S=$O(^BPSF(9002313.93,"B",R,0))
 | 
|---|
| 39 |  . I S S X=$TR($G(^BPSF(9002313.93,S,0)),U,":")
 | 
|---|
| 40 |  . E  S X=R_" unrecognized reject code"
 | 
|---|
| 41 |  . S I=I+1,ARR(I)=X
 | 
|---|
| 42 |  Q
 | 
|---|
| 43 | MESSAGE(RESP,POS,N) ; EP - get additional message from response
 | 
|---|
| 44 |  I $G(N)=1 Q $P($G(^BPSR(RESP,1000,POS,504)),U)
 | 
|---|
| 45 |  I $G(N)=2 Q $P($G(^BPSR(RESP,1000,POS,526)),U)
 | 
|---|
| 46 |  Q $$MESSAGE(RESP,POS,1)_$$MESSAGE(RESP,POS,2)
 | 
|---|
| 47 | DFF2EXT(X) Q $$DFF2EXT^BPSECFM(X)
 | 
|---|
| 48 | 505(M,N) Q $$500(M,N,5) ; Patient Pay Amount
 | 
|---|
| 49 | 506(M,N) Q $$500(M,N,6) ; Ingredient Cost Paid
 | 
|---|
| 50 | 507(M,N) Q $$500(M,N,7) ; Contract Fee Paid
 | 
|---|
| 51 | 508(M,N) Q $$500(M,N,8) ; Sales Tax Paid
 | 
|---|
| 52 | 509(M,N) Q $$500(M,N,9) ; Total Amount Paid
 | 
|---|
| 53 | 512(M,N) Q $$500(M,N,12) ; Accumulated Deductible Amount
 | 
|---|
| 54 | 513(M,N) Q $$500(M,N,13) ; Remaining Deductible Amount
 | 
|---|
| 55 | 514(M,N) Q $$500(M,N,14) ; Remaining Benefit Amount
 | 
|---|
| 56 | 517(M,N) Q $$500(M,N,17) ; Amt Applied to Periodic Deduct
 | 
|---|
| 57 | 518(M,N) Q $$500(M,N,18) ; Amount of Copay/CoInsurance
 | 
|---|
| 58 | 519(M,N) Q $$500(M,N,19) ; Amt Attrib to Prod Selection
 | 
|---|
| 59 | 520(M,N) Q $$500(M,N,20) ; Amt Exceed Per Benefit Max
 | 
|---|
| 60 | 521(M,N) Q $$500(M,N,21) ; Incentive Fee Paid
 | 
|---|
| 61 | 523(M,N) Q $$500(M,N,23) ; Amount Attributed to Sales Tax
 | 
|---|
| 62 | 500(M,N,J) ; field #500+J signed numeric
 | 
|---|
| 63 |  Q:'M!'N ""
 | 
|---|
| 64 |  N X S X=$P($G(^BPSR(M,1000,N,500)),U,J)
 | 
|---|
| 65 |  I $E(X,1,2)?2U S X=$E(X,3,$L(X))
 | 
|---|
| 66 |  S X=$$DFF2EXT(X)
 | 
|---|
| 67 |  Q X
 | 
|---|