- BPSOSQA ;BHAM ISC/FCS/DRS/DLF - ECME background, Part 1 ;06/02/2004
- ;;1.0;E CLAIMS MGMT ENGINE;**1,5,7,8,10**;JUN 2004;Build 27
- ;;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 RTN,X1,REQTYPE,ERRNO,ERRMSG
- S RTN=$T(+0),X1=$G(^BPST(IEN59,1)),REQTYPE=$P($G(^BPST(IEN59,0)),U,15)
- ;
- ; Create log entry
- ; Needed for Turn-Around Stats - Do NOT delete/alter!!
- D LOG^BPSOSL(IEN59,$T(+0)_"-Validating the BPS Transaction")
- ;
- ; Validate that there is a request type
- I REQTYPE="" D ERROR^BPSOSU(RTN,IEN59,109,"Request Type not found in Transaction ") G END
- ;
- S (ERRNO,ERRMSG)=""
- I REQTYPE="C" D I ERRNO D ERROR^BPSOSU(RTN,IEN59,ERRNO,ERRMSG) G END
- . N RX,RXR
- . S RX=$P(X1,U,11),RXR=$P(X1,U)
- . I RX="" S ERRNO=108,ERRMSG="Prescription Number not found in Transaction" Q
- . I RXR="" S ERRNO=107,ERRMSG="Fill Number not found in Transaction" Q
- . I $$RXAPI1^BPSUTIL1(RX,.01,"I")="" S ERRNO=101,ERRMSG="Missing RX # field .01" Q
- . I RXR,$$RXSUBF1^BPSUTIL1(RX,52,52.1,RXR,.01,"I")="" S ERRNO=102,ERRMSG="Missing RX Refill field .01" Q
- ;
- ; 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 payer sequence
- N BPSCOB
- S BPSCOB=$$COB59^BPSUTIL2(IEN59),BPSCOB=$S(BPSCOB=2:"-Secondary",BPSCOB=3:"-Tertiary",1:"-Primary"),BPSCOB=BPSCOB_" Insurance"
- D LOG^BPSOSL(IEN59,$T(+0)_BPSCOB)
- ;
- ; 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
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HBPSOSQA 2747 printed Feb 18, 2025@23:18:17 Page 2
- BPSOSQA ;BHAM ISC/FCS/DRS/DLF - ECME background, Part 1 ;06/02/2004
- +1 ;;1.0;E CLAIMS MGMT ENGINE;**1,5,7,8,10**;JUN 2004;Build 27
- +2 ;;Per VHA Directive 2004-038, this routine should not be modified.
- +3 QUIT
- +4 ;
- +5 ; ONE59 - Validate BPS Transaction data
- +6 ; Input
- +7 ; IEN59 - BPS Transaction
- +8 ;
- ONE59(IEN59) ;EP - from BPSOSIZ
- +1 ; Process this one IEN59
- +2 ;
- +3 ; Initialize variables
- +4 NEW RTN,X1,REQTYPE,ERRNO,ERRMSG
- +5 SET RTN=$TEXT(+0)
- SET X1=$GET(^BPST(IEN59,1))
- SET REQTYPE=$PIECE($GET(^BPST(IEN59,0)),U,15)
- +6 ;
- +7 ; Create log entry
- +8 ; Needed for Turn-Around Stats - Do NOT delete/alter!!
- +9 DO LOG^BPSOSL(IEN59,$TEXT(+0)_"-Validating the BPS Transaction")
- +10 ;
- +11 ; Validate that there is a request type
- +12 IF REQTYPE=""
- DO ERROR^BPSOSU(RTN,IEN59,109,"Request Type not found in Transaction ")
- GOTO END
- +13 ;
- +14 SET (ERRNO,ERRMSG)=""
- +15 IF REQTYPE="C"
- Begin DoDot:1
- +16 NEW RX,RXR
- +17 SET RX=$PIECE(X1,U,11)
- SET RXR=$PIECE(X1,U)
- +18 IF RX=""
- SET ERRNO=108
- SET ERRMSG="Prescription Number not found in Transaction"
- QUIT
- +19 IF RXR=""
- SET ERRNO=107
- SET ERRMSG="Fill Number not found in Transaction"
- QUIT
- +20 IF $$RXAPI1^BPSUTIL1(RX,.01,"I")=""
- SET ERRNO=101
- SET ERRMSG="Missing RX # field .01"
- QUIT
- +21 IF RXR
- IF $$RXSUBF1^BPSUTIL1(RX,52,52.1,RXR,.01,"I")=""
- SET ERRNO=102
- SET ERRMSG="Missing RX Refill field .01"
- QUIT
- End DoDot:1
- IF ERRNO
- DO ERROR^BPSOSU(RTN,IEN59,ERRNO,ERRMSG)
- GOTO END
- +22 ;
- +23 ; Check for missing patient
- +24 IF '$PIECE(^BPST(IEN59,0),U,6)
- DO ERROR^BPSOSU(RTN,IEN59,103,"Patient missing from BPS Transaction")
- GOTO END
- +25 ;
- +26 ; Check for missing division
- +27 IF '$PIECE(X1,U,4)
- DO ERROR^BPSOSU(RTN,IEN59,104,"Division missing from BPS Transaction")
- GOTO END
- +28 ;
- +29 ; Check for missing BPS Pharmacy
- +30 IF '$PIECE(X1,U,7)=""
- DO ERROR^BPSOSU(RTN,IEN59,105,"ECME Pharmacy missing from BPS Transaction")
- GOTO END
- +31 ;
- +32 ; Check for missing insurance node
- +33 IF '$DATA(^BPST(IEN59,10,1,0))
- DO ERROR^BPSOSU(RTN,IEN59,106,"Missing Insurance in BPST("_IEN59_",10,1,0)")
- GOTO END
- +34 ;
- +35 ; If we got this far, we did not get an error
- +36 ; Change status to 30 (Waiting for packet build)
- +37 DO SETSTAT^BPSOSU(IEN59,30)
- +38 ;
- END ; Common exit point
- +1 ;
- +2 ; Log payer sequence
- +3 NEW BPSCOB
- +4 SET BPSCOB=$$COB59^BPSUTIL2(IEN59)
- SET BPSCOB=$SELECT(BPSCOB=2:"-Secondary",BPSCOB=3:"-Tertiary",1:"-Primary")
- SET BPSCOB=BPSCOB_" Insurance"
- +5 DO LOG^BPSOSL(IEN59,$TEXT(+0)_BPSCOB)
- +6 ;
- +7 ; Log the contents of Transaction record
- +8 DO LOG^BPSOSL(IEN59,$TEXT(+0)_"-Contents of ^BPST("_IEN59_"):")
- +9 DO LOG59(IEN59)
- +10 ;
- +11 ; If there are claims at 30%, fire up the packet process
- +12 IF $ORDER(^BPST("AD",30,0))
- DO TASK
- +13 QUIT
- +14 ;
- +15 ;
- LOG59(IEN59) ; Log the IEN59 array
- +1 NEW A
- +2 MERGE A=^BPST(IEN59)
- +3 DO LOGARRAY^BPSOSL(IEN59,"A")
- +4 QUIT
- +5 ;
- TASK ;EP - from BPSOSQ2,BPSOSQ4,BPSOSRB
- +1 NEW X,%DT,Y
- SET X="N"
- SET %DT="ST"
- DO ^%DT
- +2 DO TASKAT(Y)
- +3 QUIT
- +4 ;
- TASKAT(ZTDTH) ;EP - from BPSOSQ4 (requeue if insurer is sleeping)
- +1 NEW ZTRTN,ZTIO
- +2 SET ZTRTN="PACKETS^BPSOSQ2"
- SET ZTIO=""
- +3 DO ^%ZTLOAD
- +4 QUIT