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