[613] | 1 | BPSRDT1 ;BHAM ISC/FCS/DRS/FLS/DLF - Turn Around Time Statistics Report ;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 | N TRANDT,FR,TO,BPSSIZ,BPSTTAT,IEN57,IEN59,IEN,UPDT,SEQ,ENDLOOP,BPSTATIM
|
---|
| 6 | N BPSBGN,BPSBTIM,BPSCTIM,BPSEND,BPSETIM,BPSGTIM,BPSRTIM,BPSSTIM
|
---|
| 7 | N BPSBDT,BPSCNT,X,Y,BPSQUIT,MES,TYPE,DATA
|
---|
| 8 | K ^TMP("BPSRDT1",$J)
|
---|
| 9 | ;
|
---|
| 10 | ; Get start/end dates. Quit if no dates entered
|
---|
| 11 | D DATE I Y<0 K DTOUT Q
|
---|
| 12 | ;
|
---|
| 13 | ; Initialize variables
|
---|
| 14 | S TRANDT=FR,BPSSIZ=0,BPSTTAT=0,BPSCNT=0
|
---|
| 15 | ;
|
---|
| 16 | ; Quit if no dates in X-ref that match
|
---|
| 17 | I '$O(^BPSTL("AH",TRANDT)) G QUIT
|
---|
| 18 | ;
|
---|
| 19 | ; Loop through the dates and build temporary list
|
---|
| 20 | F S TRANDT=$O(^BPSTL("AH",TRANDT)) Q:TRANDT=""!($P(TRANDT,".")>TO) D
|
---|
| 21 | . S IEN57=""
|
---|
| 22 | . F S IEN57=$O(^BPSTL("AH",TRANDT,IEN57)) Q:IEN57="" D
|
---|
| 23 | .. S IEN59=$P($G(^BPSTL(IEN57,0)),U,1)
|
---|
| 24 | .. I 'IEN59 Q
|
---|
| 25 | .. S IEN=$$EXISTS^BPSOSL1(IEN59)
|
---|
| 26 | .. I IEN S ^TMP("BPSRDT1",$J,1,IEN59)=IEN
|
---|
| 27 | ;
|
---|
| 28 | ; Loop through the temporary list and build second list with turn-around stats
|
---|
| 29 | S IEN59=""
|
---|
| 30 | F S IEN59=$O(^TMP("BPSRDT1",$J,1,IEN59)) Q:IEN59="" D
|
---|
| 31 | . S IEN=$G(^TMP("BPSRDT1",$J,1,IEN59))
|
---|
| 32 | . S ENDLOOP=0
|
---|
| 33 | . S (BPSBDT,BPSBGN,BPSEND,BPSBTIM,BPSGTIM,BPSCTIM,BPSSTIM,BPSRTIM,BPSETIM,TYPE)=""
|
---|
| 34 | . S UPDT=FR F S UPDT=$O(^BPS(9002313.12,IEN,10,"B",UPDT)) Q:UPDT="" D Q:ENDLOOP
|
---|
| 35 | .. S SEQ="" F S SEQ=$O(^BPS(9002313.12,IEN,10,"B",UPDT,SEQ)) Q:SEQ="" D Q:ENDLOOP
|
---|
| 36 | ... S MES=$$UP($P($G(^BPS(9002313.12,IEN,10,SEQ,1)),U,1))
|
---|
| 37 | ... I MES="" Q
|
---|
| 38 | ... I MES["BEFORE SUBMIT OF " D
|
---|
| 39 | .... S TYPE=$P(MES,"BEFORE SUBMIT OF ",2)
|
---|
| 40 | .... S BPSBDT=$P(UPDT,".",1)
|
---|
| 41 | .... I BPSBDT>TO S BPSBDT="",ENDLOOP=1 Q
|
---|
| 42 | .... S BPSBGN=$$TIME2(UPDT),BPSBTIM=$$TIME(UPDT)
|
---|
| 43 | .... S (BPSEND,BPSGTIM,BPSCTIM,BPSSTIM,BPSRTIM,BPSETIM)=""
|
---|
| 44 | ... I ENDLOOP=1 Q
|
---|
| 45 | ... I BPSBDT,MES["BPSOSU NOW RESUBMIT"!(MES["BPSOSU-NOW RESUBMIT") D
|
---|
| 46 | .... S TYPE="Request portion of a Reversal/Resubmit"
|
---|
| 47 | .... S BPSBGN=$$TIME2(UPDT),BPSBTIM=$$TIME(UPDT)
|
---|
| 48 | .... S (BPSEND,BPSGTIM,BPSCTIM,BPSSTIM,BPSRTIM,BPSETIM)=""
|
---|
| 49 | ... I BPSBGN="" Q
|
---|
| 50 | ... I MES["INITIATING REVERSAL AND AFTER THAT, CLAIM WILL BE RESUBMITTED" S TYPE="Reversal portion of a Reversal/Resubmit"
|
---|
| 51 | ... I MES["GATHERING"!(MES["VALIDATING THE BPS TRANSACTION") S BPSGTIM=$$TIME(UPDT)
|
---|
| 52 | ... I MES["CREATED CLAIM ID" S BPSCTIM=$$TIME(UPDT)
|
---|
| 53 | ... I MES["BPSECMC2 - CLAIM - SENT"!(MES["BPSECMC2-CLAIM SENT") S BPSSTIM=$$TIME(UPDT)
|
---|
| 54 | ... I MES["BPSECMC2 - CLAIM - RESPONSE STORED"!(MES["BPSECMC2-RESPONSE STORED") S BPSRTIM=$$TIME(UPDT)
|
---|
| 55 | ... I MES["CLAIM - END"!(MES["BPSOSU-CLAIM COMPLETE") I BPSBGN D
|
---|
| 56 | .... S BPSEND=$$TIME2(UPDT),BPSETIM=$$TIME(UPDT)
|
---|
| 57 | .... D LOG
|
---|
| 58 | ;
|
---|
| 59 | ; If no data to report, quit
|
---|
| 60 | I 'BPSTTAT G QUIT
|
---|
| 61 | ;
|
---|
| 62 | ; Loop through list of stats and output
|
---|
| 63 | S BPSCNT="",BPSQUIT=0
|
---|
| 64 | F S BPSCNT=$O(^TMP("BPSRDT1",$J,2,BPSCNT)) Q:BPSCNT="" D I BPSQUIT=1 Q
|
---|
| 65 | . S DATA=$G(^TMP("BPSRDT1",$J,2,BPSCNT)),IEN59=$P(DATA,U,1),TYPE=$P(DATA,U,2)
|
---|
| 66 | . S TYPE=$S(TYPE="CLAIM":"Request",TYPE="REVERSAL":"Reversal",1:TYPE)
|
---|
| 67 | . W !,"For Prescription",?25,IEN59_" (Rx# "_$$RXAPI1^BPSUTIL1($P(IEN59,"."),.01,"I")_")"
|
---|
| 68 | . W !,"Type",?25,TYPE
|
---|
| 69 | . W !,"Date",?25,$$FMTE^XLFDT($P(DATA,U,3),"5Z")
|
---|
| 70 | . W !,"Begin ",?25,$P(DATA,U,4)
|
---|
| 71 | . W !,"Gathering information",?25,$P(DATA,U,5)
|
---|
| 72 | . W !,"Claim ID created",?25,$P(DATA,U,6)
|
---|
| 73 | . W !,"Claim Sent",?25,$P(DATA,U,7)
|
---|
| 74 | . W !,"Response stored ",?25,$P(DATA,U,8)
|
---|
| 75 | . W !,"Completed at",?25,$P(DATA,U,9)
|
---|
| 76 | . W !,"Turn-around time",?25,$P(DATA,U,10),!
|
---|
| 77 | . I BPSCNT#2=0 D
|
---|
| 78 | .. R !!,"Press RETURN to continue, '^' to exit: ",X:DTIME
|
---|
| 79 | .. I '$T!(X["^") S BPSQUIT=1
|
---|
| 80 | ;
|
---|
| 81 | ; Write Totals
|
---|
| 82 | W !!!,"Total number of claims",?25,BPSSIZ
|
---|
| 83 | W !,"Average Turn-around time",?25,BPSTTAT\BPSSIZ,!!
|
---|
| 84 | D PRESSANY^BPSOSU5()
|
---|
| 85 | ;
|
---|
| 86 | ; Kill scratch global
|
---|
| 87 | K ^TMP("BPSRDT1",$J)
|
---|
| 88 | Q
|
---|
| 89 | ;
|
---|
| 90 | ;
|
---|
| 91 | TIME(%) ;
|
---|
| 92 | S %=$E($P(%,".",2)_"000000",1,6)
|
---|
| 93 | Q $E(%,1,2)_":"_$E(%,3,4)_":"_$E(%,5,6)
|
---|
| 94 | ;
|
---|
| 95 | TIME2(%) ;
|
---|
| 96 | Q $P($$FMTH^XLFDT(%),",",2)
|
---|
| 97 | ;
|
---|
| 98 | ;
|
---|
| 99 | LOG ;
|
---|
| 100 | I BPSBGN="" Q
|
---|
| 101 | I BPSEND="" Q
|
---|
| 102 | S BPSTATIM=$G(BPSEND)-$G(BPSBGN)
|
---|
| 103 | ;
|
---|
| 104 | ; Remove negative times (span midnight) and claims more than 20 minutes as anomolies
|
---|
| 105 | I BPSTATIM'>0 Q
|
---|
| 106 | ;I BPSTATIM>1200 Q
|
---|
| 107 | S BPSCNT=BPSCNT+1
|
---|
| 108 | S ^TMP("BPSRDT1",$J,2,BPSCNT)=IEN59_U_TYPE_U_BPSBDT_U_BPSBTIM_U_BPSGTIM_U_BPSCTIM_U_BPSSTIM_U_BPSRTIM_U_BPSETIM_U_BPSTATIM
|
---|
| 109 | S BPSTTAT=BPSTTAT+BPSTATIM
|
---|
| 110 | S BPSSIZ=BPSSIZ+1
|
---|
| 111 | I TYPE="Reversal/Resubmit" S BPSSIZ=BPSSIZ+1
|
---|
| 112 | S (BPSBGN,TYPE)=""
|
---|
| 113 | Q
|
---|
| 114 | ;
|
---|
| 115 | DATE ; Ask user the date range
|
---|
| 116 | N %DT,VAL,TYPEVAL,X
|
---|
| 117 | S %DT="AEP",%DT(0)=-DT,%DT("A")="START WITH DATE: "
|
---|
| 118 | S %DT("B")="T-1"
|
---|
| 119 | D ^%DT Q:Y<0!($D(DTOUT))
|
---|
| 120 | S (%DT(0),FR)=Y
|
---|
| 121 | S %DT("A")="GO TO DATE: "
|
---|
| 122 | S %DT("B")="T"
|
---|
| 123 | D ^%DT Q:Y<0!($D(DTOUT))
|
---|
| 124 | S TO=Y
|
---|
| 125 | Q
|
---|
| 126 | ;
|
---|
| 127 | UP(X) Q $TR(X,"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")
|
---|
| 128 | QUIT ;
|
---|
| 129 | W !!,"*** No valid data found ***",!!
|
---|
| 130 | D PRESSANY^BPSOSU5()
|
---|
| 131 | Q
|
---|