BPSOSUC ;BHAM ISC/FCS/DRS/FLS - ECME utilities ;06/01/2004
 ;;1.0;E CLAIMS MGMT ENGINE;**1,5**;JUN 2004;Build 45
 ;;Per VHA Directive 2004-038, this routine should not be modified.
 Q
 ; CATEG returns the status of a Transaction or Log of Transaction
 ;   entry.  It is used mainly by STATUS^BPSOSRX but is also
 ;   called by some other routines as well as computed fields of BPS Log
 ;   of Transactions and BPS Tranasctions
CATEG(N,WANTREV) ;
 ; N - If decimal, IEN from BPS Transaction
 ;   - If integer, IEN from BPS Log of Transactions
 ; $G(WANTREV) = true if you care about reversals
 ;      (that's the default if N is an IEN59)
 ; $G(WANTREV) = false if you want to ignore reversals
 ;      (that's the default if IEN57)
 ;
 ; Many routines rely on these exact return values; do not change them:
 ; Return values:
 ;     For both reversals and submissions:
 ;       CORRUPT - Should never happen
 ;
 ;     For submissions:
 ;       E PAYABLE, E CAPTURED, E DUPLICATE, E REJECTED, E OTHER, and
 ;       E STRANDED
 ;
 ;     For Reversals:
 ;       E REVERSAL ACCEPTED, E REVERSAL REJECTED, E REVERSAL OTHER, and
 ;       E REVERSAL STRANDED
 ;
 I N<1 Q "" ; Should not happen
 N FILENUM S FILENUM=$S(N[".":9002313.59,1:9002313.57)
 I '$D(WANTREV) S WANTREV=$S(FILENUM=9002313.57:0,FILENUM=9002313.59:1)
 N RETVAL,CLAIM,RESP,X,RESP500,CODE,STAT,DISYS
 I '$$GET1^DIQ(FILENUM,N_",",.01) Q "CORRUPT"
 S CLAIM=$$GET1^DIQ(FILENUM,N_",",3,"I")
 S RESP=$$GET1^DIQ(FILENUM,N_",",4,"I")
 S CODE=$$GET1^DIQ(FILENUM,N_",",201,"I")
 S STAT=$$GET1^DIQ(FILENUM,N_",",202,"I")
 I $P(STAT,";")="E REVERSAL STRANDED" Q "E REVERSAL STRANDED"
 I $P(STAT,";")="E STRANDED" Q "E STRANDED"
 ; During a reversal/resubmit, you may get the next line between the reversal and
 ;   and the resubmit
 I 'CLAIM S RETVAL="E OTHER" Q RETVAL
 I WANTREV S X=$$GET1^DIQ(FILENUM,N_",",401,"I") I X D  Q RETVAL
 . S RESP=$$GET1^DIQ(FILENUM,N_",",402,"I")
 . S RETVAL="E REVERSAL "
 . I 'RESP S RETVAL=RETVAL_"OTHER" Q
 . S RESP500=$$RESP500^BPSOSQ4(RESP,"I")
 . S X=$$RESP1000^BPSOSQ4(RESP,1,"I")
 . I RESP500="R"!(X="R") S RETVAL=RETVAL_"REJECTED" Q
 . ; Treat Duplicate of Accepted Reversal ("S") as Accepted
 . I RESP500="A",X="A"!(X="S") S RETVAL=RETVAL_"ACCEPTED" Q
 . S RETVAL=RETVAL_"OTHER"
 ; Response not received yet
 I 'RESP S RETVAL="E OTHER" Q RETVAL
 S RESP500=$$RESP500^BPSOSQ4(RESP,"I")
 N POS S POS=$$GET1^DIQ(FILENUM,N_",",14)
 S X=$$RESP1000^BPSOSQ4(RESP,POS,"I")
 I X="P"!(X="DP") Q "E PAYABLE"
 I X="D" Q "E DUPLICATE" ; SHOULD NEVER HAPPEN as of 02/06/2001
 I X="R" Q "E REJECTED"
 I X="C"!(X="DC") Q "E CAPTURED"
 ; 1000 indefinite, fall back to 500
 I RESP500="R" Q "E REJECTED"
 Q "E OTHER" ; corrupt?
