Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: PSOBORP2

PSOBORP2.m

Go to the documentation of this file.
  1. PSOBORP2 ;ALBANY/BLD - TRICARE-CHAMPVA BYPASS/OVERRIDE AUDIT REPORT ;7/1/2010
  1. ;;7.0;OUTPATIENT PHARMACY;**358,385,427,528**;DEC 1997;Build 10
  1. ;
  1. ;
  1. Q
  1. ;
  1. EN(RX,RFL,RESP) ;
  1. ;entry point to insert an entry in to the TRICARE-CHAMPVA Audit Report
  1. ; Passed In:
  1. ; RX = Prescription file (52) IEN
  1. ; RFL = Prescription refill number
  1. ; RESP = response back from ECME billing (from ECMESND^PSOBPSU1)
  1. ;
  1. ;
  1. N REFILNBR,TRITXT
  1. S TRITXT=$P(RESP,"^",2)
  1. D AUDIT^PSOTRI(RX,RFL,,TRITXT,"N",$P(RESP,"^",3))
  1. ;
  1. Q
  1. ;
  1. RUNRPT(PSOSEL) ;
  1. ;
  1. ;THE INFORMATION FOR THE TRICARE-CHAMPVA OVERRIDE REPORT WILL BE GATHERED BY LOOPING THROUGH
  1. ;FILE 52.87 (PSO AUDIT LOG FILE) TO RETRIEVE THE INFORMATION BASED UPON THE FILTERING
  1. ;REQUIREMENTS IN ROUTINE PSOBORP0.
  1. ;
  1. D EN^PSOBORP3(.PSOSEL)
  1. Q
  1. ;
  1. PROCESS(PSOSEL,PSOAUD) ;this will process file 52.87, the PSO AUDIT LOG
  1. ;
  1. N ACTDT,BEGDT,ENDDT,DIVISION,ELTCTYP,ELTYPE,I,PHAMCST,PROVIDER
  1. N PSOFILL,PSOD0,PSOD1,PSOARRAY,PSORX,REJCODE,REJIEN,TCTYPE
  1. ;
  1. S BEGDT=PSOSEL("BEGIN DATE"),ENDDT=PSOSEL("END DATE")
  1. S ACTDT=BEGDT,PSOD0=0
  1. D PSOARRAY(.PSOARRAY)
  1. F S ACTDT=$O(^PS(52.87,"E",ACTDT)) Q:ACTDT=""!(ACTDT\1>ENDDT) D
  1. .F S PSOD0=$O(^PS(52.87,"E",ACTDT,PSOD0)) Q:PSOD0="" D
  1. ..;
  1. ..;quit if duplicate prescription
  1. ..S PSORX=$P(^PS(52.87,PSOD0,0),"^",2)
  1. ..S PSOFILL=$P(^PS(52.87,PSOD0,0),"^",3)
  1. ..S PSOD1=PSOARRAY(PSORX,PSOFILL)
  1. ..;if they are different entries in File #52.87, and if ACTDT is the same as the
  1. ..; DATE OF ACTION (#15), then quit it's a duplicate entry
  1. ..I PSOD0'=PSOD1 I ACTDT=$P(^PS(52.87,PSOD1,1),"^",5) Q
  1. ..;
  1. ..;quit if division not selected or not all
  1. ..S DIVISION=$P(^PS(52.87,PSOD0,0),"^",5)
  1. ..I PSOSEL("DIVISION")'="A" Q:'$D(PSOSEL("DIVISION",DIVISION))
  1. ..S DIVISION=$P(^PS(59,DIVISION,0),"^",1)
  1. ..;
  1. ..;quit if eligibility type not selected or not all
  1. ..S ELTYPE=$P(^PS(52.87,PSOD0,1),"^",3)
  1. ..Q:'$D(PSOSEL("ELIG_TYPE",ELTYPE))
  1. ..S ELTYPE=$S(ELTYPE="T":"TRICARE",ELTYPE="C":"CHAMPVA",1:"ALL")
  1. ..;
  1. ..;quit if audit type not selected or not all
  1. ..S TCTYPE=$P(^PS(52.87,PSOD0,1),"^",2)
  1. ..Q:'$D(PSOSEL("REJECT CODES",TCTYPE))
  1. ..S TCTYPE=$S(TCTYPE="I":"INPATIENT",TCTYPE="N":"NON-BILLABLE",TCTYPE="R":"REJECT OVERRIDE",TCTYPE="P":"PARTIAL FILL",1:"ALL")
  1. ..S ELTCTYP=ELTYPE_" "_TCTYPE
  1. ..;
  1. ..;quit if specific pharmacist not selected or not all
  1. ..S PHAMCST=$P(^PS(52.87,PSOD0,1),"^",4)
  1. ..I PHAMCST'="",PSOSEL("PHARMACIST")'="A" Q:'$D(PSOSEL("PHARMACIST",PHAMCST))
  1. ..S PHAMCST=$P(^VA(200,PHAMCST,0),"^",1)
  1. ..;
  1. ..;quit if specific provider not selected or not all
  1. ..S PROVIDER=$P(^PS(52.87,PSOD0,0),"^",6)
  1. ..I PSOSEL("PROVIDER")'="A" Q:'$D(PSOSEL("PROVIDER",PROVIDER))
  1. ..S PROVIDER=$P(^VA(200,PROVIDER,0),"^",1)
  1. ..;
  1. ..;summary report
  1. ..I PSOSEL("SUM_DETAIL")="D"!(PSOSEL("SUM_DETAIL")="S") D
  1. ...;totals by provider
  1. ...I PSOSEL("TOTALS BY")="P" D Q
  1. ....S PSOAUD(DIVISION,ELTCTYP,PROVIDER,ACTDT,0)=^PS(52.87,PSOD0,0)
  1. ....S PSOAUD(DIVISION,ELTCTYP,PROVIDER,ACTDT,1)=^PS(52.87,PSOD0,1)
  1. ....S PSOAUD(DIVISION,ELTCTYP,PROVIDER,ACTDT,2)=^PS(52.87,PSOD0,2)
  1. ...;
  1. ...;totals by pharmacist and Division
  1. ...I PSOSEL("TOTALS BY")="R" D Q
  1. ....S PSOAUD(DIVISION,ELTCTYP,PHAMCST,ACTDT,0)=^PS(52.87,PSOD0,0)
  1. ....S PSOAUD(DIVISION,ELTCTYP,PHAMCST,ACTDT,1)=^PS(52.87,PSOD0,1)
  1. ....S PSOAUD(DIVISION,ELTCTYP,PHAMCST,ACTDT,2)=^PS(52.87,PSOD0,2)
  1. ..;
  1. ..S REJIEN=0,REJCODE=""
  1. ..F S REJIEN=$O(^PS(52.87,PSOD0,3,REJIEN)) Q:'REJIEN D
  1. ...I PSOSEL("TOTALS BY")="P" S PSOAUD(DIVISION,ELTCTYP,PROVIDER,ACTDT,3,REJIEN)=^PS(52.87,PSOD0,3,REJIEN,0)
  1. ...I PSOSEL("TOTALS BY")="R" S PSOAUD(DIVISION,ELTCTYP,PHAMCST,ACTDT,3,REJIEN)=^PS(52.87,PSOD0,3,REJIEN,0)
  1. ;
  1. Q
  1. ;
  1. END ;
  1. I 'PSOEXCEL W !!!!,"REPORT HAS FINISHED"
  1. K DIVRXTOT,DIVTOT,GRDRXTOT,GROUPCNT,GRDTOT,PAGE,PROV,PSODIV,PSOCNT,PSORPTNM,PSORTYPE,PSOTOTAL,TC,TCT
  1. Q
  1. ;
  1. GETPARAM(PSOFLDNO,PSODUZ) ;
  1. Q $$GET^XPAR(PSODUZ_";VA(200,","PSOS USRSCR",PSOFLDNO,"I")
  1. ;
  1. ;
  1. UP(PSVAR) ;converts to upper case
  1. Q $TR(PSVAR,"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")
  1. ;
  1. ;
  1. ;will build an of array of RX's to eliminate duplicates.
  1. PSOARRAY(PSOARRAY) ;
  1. N ACTDT,BEGDT,ENDDT,DIVISION,I,PHAMCST,PROVIDER,PSOD0,PSOFILL,REJCODE,TCTYPE,REJIEN,TCTYPE
  1. S BEGDT=PSOSEL("BEGIN DATE"),ENDDT=PSOSEL("END DATE")
  1. S ACTDT=BEGDT,PSOD0=0
  1. F S ACTDT=$O(^PS(52.87,"E",ACTDT)) Q:ACTDT=""!(ACTDT\1>ENDDT) D
  1. .F S PSOD0=$O(^PS(52.87,"E",ACTDT,PSOD0)) Q:PSOD0="" D
  1. ..S PSOFILL=$P(^PS(52.87,PSOD0,0),"^",3)
  1. ..S PSOARRAY($P(^PS(52.87,PSOD0,0),"^",2),PSOFILL)=PSOD0
  1. Q