| 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 | 
|---|