| [613] | 1 | IBARXMO ;LL/ELZ - PHARMACY COPAY CAP REPORTS ;21-JAN-2001 | 
|---|
|  | 2 | ;;2.0;INTEGRATED BILLING;**156,261**;21-MAR-94 | 
|---|
|  | 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
|  | 4 | ; | 
|---|
|  | 5 | CAP ; cap report entry point | 
|---|
|  | 6 | ; this report will produce a summary of patient's who have met or exceed their cap for the period selected.  They may select either a mo/year or just a year. | 
|---|
|  | 7 | N DIR,X,Y,DTOUT,DUOUT,DIRUT,DIROUT | 
|---|
|  | 8 | S DIR(0)="D^::AEMP",DIR("A")="Select a Month/Year or just a Year" D ^DIR | 
|---|
|  | 9 | Q:$D(DIRUT)  S IBD=+Y | 
|---|
|  | 10 | D DEV("CAPDQ^IBARXMO","Medication Co-Pay Cap Report") | 
|---|
|  | 11 | Q | 
|---|
|  | 12 | ; | 
|---|
|  | 13 | CAPDQ ; cap report processing entry | 
|---|
|  | 14 | N IBP,IBT,IBS,IBDT,IBST,IBM,IBNAM,DFN,IBAB,IBAT,IBDATA,IBTOT K ^TMP("IBARXMO",$J) | 
|---|
|  | 15 | ; | 
|---|
|  | 16 | U IO | 
|---|
|  | 17 | S (IBP,IBAT,IBAB,IBTOT)=0,IBT="Patient/SSN                      Non-Billed Total   Above Cap   Patient Priority",IBS=$$SITE^IBARXMU,IBN=IBN_" for ("_$P(IBS,"^",3)_") "_$P(IBS,"^",2)_" - "_$$FMTE^XLFDT(IBD),IBDT=IBD-1 | 
|---|
|  | 18 | D HEAD(IBN,IBT) | 
|---|
|  | 19 | ; | 
|---|
|  | 20 | ; build tmp for output | 
|---|
|  | 21 | ; format ^tmp("ibarxmo",$j,name (last 4),dfn)=total not billed ^ at or above cap | 
|---|
|  | 22 | ; | 
|---|
|  | 23 | F  S IBDT=$O(^IBAM(354.7,"AC",IBDT)) Q:IBDT<1!($S($E(IBD,4,5)="00"&($E(IBD,1,3)'=$E(IBDT,1,3)):1,$E(IBD,4,5)'="00"&($E(IBDT,1,5)'=$E(IBD,1,5)):1,1:0))  S IBST=0 F  S IBST=$O(^IBAM(354.7,"AC",IBDT,IBST)) Q:IBST<1  D | 
|---|
|  | 24 | . S DFN=0 F  S DFN=$O(^IBAM(354.7,"AC",IBDT,IBST,DFN)) Q:DFN<1  D DEM^VADPT S IBM=0 F  S IBM=$O(^IBAM(354.7,"AC",IBDT,IBST,DFN,IBM)) Q:IBM<1  D | 
|---|
|  | 25 | .. S IBNAM=$E(VADM(1),1,25)_" ("_VA("BID")_")",^TMP("IBARXMO",$J,IBNAM,DFN)=$G(^TMP("IBARXMO",$J,IBNAM,DFN))+$P(^IBAM(354.7,DFN,1,IBM,0),"^",4)_"^"_IBST | 
|---|
|  | 26 | ; | 
|---|
|  | 27 | ; now lets do some printing | 
|---|
|  | 28 | S IBNAM=0 F  S IBNAM=$O(^TMP("IBARXMO",$J,IBNAM)) Q:IBNAM=""!($D(DIRUT))  S DFN=0 F  S DFN=$O(^TMP("IBARXMO",$J,IBNAM,DFN)) Q:DFN<1!($D(DIRUT))  D | 
|---|
|  | 29 | . S IBDATA=^TMP("IBARXMO",$J,IBNAM,DFN) | 
|---|
|  | 30 | . W !,IBNAM,?37,$J($FN(+IBDATA,",",2),12),?53,$S($P(IBDATA,"^",2)=1:"At Cap",1:"Above Cap"),?71,$$PRIORITY^IBARXMU(DFN) | 
|---|
|  | 31 | . S @$S($P(IBDATA,"^",2)=1:"IBAT",1:"IBAB")=@$S($P(IBDATA,"^",2)=1:"IBAT",1:"IBAB")+1,IBTOT=IBTOT+IBDATA | 
|---|
|  | 32 | . D:$Y+3>IOSL HEAD(IBN,IBT) | 
|---|
|  | 33 | ; | 
|---|
|  | 34 | W !!,?12,"Patient Count At Cap: ",$J($FN(IBAT,",",0),12) | 
|---|
|  | 35 | W !,?9,"Patient Count Above Cap: ",$J($FN(IBAB,",",0),12) | 
|---|
|  | 36 | W !,?18,"Total Unbilled: ",?37,$J($FN(IBTOT,",",2),12) | 
|---|
|  | 37 | ; | 
|---|
|  | 38 | I $E(IOST,1,2)="C-" K DIR S DIR(0)="E" D ^DIR | 
|---|
|  | 39 | ; | 
|---|
|  | 40 | K IBR,IBN,IBD,^TMP("IBARXMO",$J) | 
|---|
|  | 41 | ; | 
|---|
|  | 42 | D ^%ZISC | 
|---|
|  | 43 | S:$D(ZTQUEUED) ZTREQ="@" | 
|---|
|  | 44 | ; | 
|---|
|  | 45 | Q | 
|---|
|  | 46 | NOBILL ; non-billable report entry point | 
|---|
|  | 47 | ; this report will produce a list of copay transaction which could not be billed (fully or partly) for the Month/Year selected. | 
|---|
|  | 48 | ; | 
|---|
|  | 49 | N DIR,X,Y,DTOUT,DUOUT,DIRUT,DIROUT | 
|---|
|  | 50 | S DIR(0)="D^::AEMPX",DIR("A")="Select a Month/Year" D ^DIR | 
|---|
|  | 51 | Q:$D(DIRUT)  S IBD=+Y | 
|---|
|  | 52 | D DEV("NOBILLDQ^IBARXMO","Non-Billable Copayments Report") | 
|---|
|  | 53 | Q | 
|---|
|  | 54 | NOBILLDQ ; entry point to produce the non-billable report | 
|---|
|  | 55 | N IBDT,IBP,IBT,IBX,IBZ,DFN,IBS | 
|---|
|  | 56 | U IO | 
|---|
|  | 57 | ; | 
|---|
|  | 58 | S IBP=0,IBS=+$P($$SITE^IBARXMU,"^",3),IBN=IBN_" - "_$$FMTE^XLFDT(IBD),IBT="Patient/SSN                       Rx #        Date          Drug          Amount" D HEAD(IBN,IBT) | 
|---|
|  | 59 | ; | 
|---|
|  | 60 | S IBDT=IBD F  S IBDT=$O(^IBAM(354.71,"AE",IBDT)) Q:IBDT<1!($D(DIRUT))!($E(IBDT,1,5)'=$E(IBD,1,5))  S IBX=0 F  S IBX=$O(^IBAM(354.71,"AE",IBDT,IBX)) Q:IBX<1  D | 
|---|
|  | 61 | . S IBZ=^IBAM(354.71,IBX,0),$P(IBZ,"^",12)=$P($$NET^IBARXMC(IBX),"^",2) | 
|---|
|  | 62 | . Q:$P(IBZ,"^",12)'>0!($P(IBZ,"^",10)'=IBX)!($E(IBZ,1,3)'=IBS) | 
|---|
|  | 63 | . S DFN=$P(IBZ,"^",2) D DEM^VADPT | 
|---|
|  | 64 | . W !,$E(VADM(1),1,25)_" ("_VA("BID")_")",?32,$P($P(IBZ,"^",9),"-"),?43,$$FMTE^XLFDT(IBDT),?58,$E($P($P(IBZ,"^",9),"-",2),1,13),?72,$J($FN($P(IBZ,"^",12),",",2),8) | 
|---|
|  | 65 | . D:$Y+3>IOSL HEAD(IBN,IBT) | 
|---|
|  | 66 | ; | 
|---|
|  | 67 | I $E(IOST,1,2)="C-" K DIR S DIR(0)="E" D ^DIR | 
|---|
|  | 68 | ; | 
|---|
|  | 69 | D ^%ZISC | 
|---|
|  | 70 | S:$D(ZTQUEUED) ZTREQ="@" | 
|---|
|  | 71 | ; | 
|---|
|  | 72 | Q | 
|---|
|  | 73 | DEV(IBR,IBN) ; device selection | 
|---|
|  | 74 | ; IBR=routine, IBN=task name (only used of tasked) | 
|---|
|  | 75 | N %ZIS,ZTSK,ZTSAVE,POP,ZTRTN,ZTDESC | 
|---|
|  | 76 | S %ZIS="MQ" D ^%ZIS Q:POP | 
|---|
|  | 77 | I $D(IO("Q")) D  Q | 
|---|
|  | 78 | . S ZTRTN=IBR,ZTDESC=IBN,ZTSAVE("IB*")="" | 
|---|
|  | 79 | . D ^%ZTLOAD,HOME^%ZIS K IO("Q") W !,"QUEUED TASK #",ZTSK | 
|---|
|  | 80 | D @IBR | 
|---|
|  | 81 | ; | 
|---|
|  | 82 | Q | 
|---|
|  | 83 | HEAD(IBX,IBY) ; print header | 
|---|
|  | 84 | ; IBX=report name, IBY=data description for second line | 
|---|
|  | 85 | ; IBP is assumed for page # | 
|---|
|  | 86 | N DIR,X,Y | 
|---|
|  | 87 | I $E(IOST,1,2)="C-",IBP S DIR(0)="E" D ^DIR | 
|---|
|  | 88 | S IBP=IBP+1 | 
|---|
|  | 89 | W @IOF,!,IBX,?IOM-10,"Page: ",IBP,!,IBY,! F X=1:1:IOM W "-" | 
|---|
|  | 90 | W ! | 
|---|
|  | 91 | Q | 
|---|