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