VistA-FOIAVistA/r/E_CLAIMS_MGMT_ENGINE-BPS/BPSOSQA.m

73 lines
2.3 KiB
Mathematica

BPSOSQA ;BHAM ISC/FCS/DRS/DLF - ECME background, Part 1 ;06/02/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
;
; ONE59 - Validate BPS Transaction data
; Input
; IEN59 - BPS Transaction
;
ONE59(IEN59) ;EP - from BPSOSIZ
; Process this one IEN59
;
; Initialize variables
N X1,RX,RXI,RTN
S X1=$G(^BPST(IEN59,1))
S RXI=$P(X1,U),RX=$P(X1,U,11),RTN=$T(+0)
;
I RX="" D ERROR^BPSOSU(RTN,IEN59,106,"Prescription Number not found in Transaction") G END
I RXI="" D ERROR^BPSOSU(RTN,IEN59,107,"Fill Number not found in Transaction") G END
; Create log entry
; Needed for Turn-Around Stats - Do NOT delete/alter!!
D LOG^BPSOSL(IEN59,$T(+0)_"-Validating the BPS Transaction")
;
; Check for existance of the prescription
I $$RXAPI1^BPSUTIL1(RX,.01,"I")="" D ERROR^BPSOSU(RTN,IEN59,101,"Missing RX # field .01") G END
;
; If there is a refill, check for the existance of the refill
I RXI,$$RXSUBF1^BPSUTIL1(RX,52,52.1,RXI,.01,"I")="" D ERROR^BPSOSU(RTN,IEN59,102,"Missing RX Refill field .01") G END
;
; Check for missing patient
I '$P(^BPST(IEN59,0),U,6) D ERROR^BPSOSU(RTN,IEN59,103,"Patient missing from BPS Transaction") G END
;
; Check for missing division
I '$P(X1,U,4) D ERROR^BPSOSU(RTN,IEN59,104,"Division missing from BPS Transaction") G END
;
; Check for missing BPS Pharmacy
I '$P(X1,U,7)="" D ERROR^BPSOSU(RTN,IEN59,105,"ECME Pharmacy missing from BPS Transaction") G END
;
; Check for missing insurance node
I '$D(^BPST(IEN59,10,1,0)) D ERROR^BPSOSU(RTN,IEN59,106,"Missing Insurance in BPST("_IEN59_",10,1,0)") G END
;
; If we got this far, we did not get an error
; Change status to 30 (Waiting for packet build)
D SETSTAT^BPSOSU(IEN59,30)
;
END ; Common exit point
;
; Log the contents of Transaction record
D LOG^BPSOSL(IEN59,$T(+0)_"-Contents of ^BPST("_IEN59_"):")
D LOG59(IEN59)
;
; If there are claims at 30%, fire up the packet process
I $O(^BPST("AD",30,0)) D TASK
Q
;
;
LOG59(IEN59) ; Log the IEN59 array
N A
M A=^BPST(IEN59)
D LOGARRAY^BPSOSL(IEN59,"A")
Q
;
TASK ;EP - from BPSOSQ2,BPSOSQ4,BPSOSRB
N X,%DT,Y S X="N",%DT="ST" D ^%DT
D TASKAT(Y)
Q
;
TASKAT(ZTDTH) ;EP - from BPSOSQ4 (requeue if insurer is sleeping)
N ZTRTN,ZTIO
S ZTRTN="PACKETS^BPSOSQ2",ZTIO=""
D ^%ZTLOAD
Q