1 | IMRRXS ;HCIOFO/NCA,FT/FAI-Utilization Report On Selected Drugs ;07/17/00 17:07
|
---|
2 | ;;2.1;IMMUNOLOGY CASE REGISTRY;**5**;Feb 09, 1998
|
---|
3 | ;[IMR SPECFC RX LIST] - Drug Specific Utilization Report
|
---|
4 | I '$D(^XUSEC("IMRMGR",DUZ)) S IMRLOC="IMRRXS" D ACESSERR^IMRERR,H^XUS K IMRLOC
|
---|
5 | K ^TMP($J)
|
---|
6 | ASK D ^IMRDATE Q:$G(IMRHNBEG)=""
|
---|
7 | S IMRSD=IMRHNBEG,IMRED=IMRHNEND
|
---|
8 | ;K %DT S %DT="AQEXP",%DT("A")=" Start Date for Period: " D ^%DT K %DT G:Y'>0 KILL S IMRSD=Y,%DT="AQEXP",%DT("A")=" End Date for Period: " D ^%DT K %DT G:Y'>0 KILL S IMRED=Y
|
---|
9 | I IMRED<IMRSD W !,$C(7),"END DATE CAN NOT BE BEFORE START DATE",! G ASK
|
---|
10 | K DIC S DIC("A")="Select DRUG GENERIC NAME: "
|
---|
11 | DRUG S DIC=50,DIC(0)="AEQM" D ^DIC G:$D(DTOUT)!($D(DUOUT)) KILL
|
---|
12 | I Y>0 S IMRDLIST(+Y)="" S DIC("A")="Select ANOTHER DRUG GENERIC NAME: " G DRUG
|
---|
13 | K DIC G:'$O(IMRDLIST(0)) KILL
|
---|
14 | S X=$$RX1589^IMRUTL() ;get pharmacy archive date from File 158.9
|
---|
15 | I X,X'<IMRSD,X'>IMRED D ASKN I $D(DIRUT) D KILL Q
|
---|
16 | I X,X'<IMRSD,X>IMRED D ASKN I $D(DIRUT) D KILL Q
|
---|
17 | D IMRDEV^IMREDIT G:POP KILL
|
---|
18 | I $D(IO("Q")) D SAVE G KILL
|
---|
19 | U IO D DQ D ^%ZISC K %ZIS,IOP G KILL
|
---|
20 | DQ ; Process Selected Drugs Utility Report
|
---|
21 | S (IMRPG,IMRUT)=0 D NOW^%DTC S IMRDTE=%,Y=IMRDTE D DD^%DT S IMRDTE=Y
|
---|
22 | S IMRD="FOR THE PERIOD "_$E(IMRSD,4,5)_"/"_$E(IMRSD,6,7)_"/"_$E(IMRSD,2,3)_" TO "_$E(IMRED,4,5)_"/"_$E(IMRED,6,7)_"/"_$E(IMRED,2,3)
|
---|
23 | S IMRX="DRUG SPECIFIC UTILIZATION REPORT" D HEDR
|
---|
24 | F IMRRL=0:0 S IMRRL=$O(^IMR(158,IMRRL)) Q:IMRRL<1 S X=+^(IMRRL,0) D ^IMRXOR S IMRDFN=X I $D(^DPT(IMRDFN,0)) S DFN=IMRDFN D NS^IMRCALL K DFN D C1
|
---|
25 | D RXPRNT
|
---|
26 | I '$D(^TMP($J)) W !!,"No data for this report.",!
|
---|
27 | D:'IMRUT EOP
|
---|
28 | S:$D(ZTQUEUED) ZTREQ="@"
|
---|
29 | KILL K C,C1,DIRUT,IMRCL,IMRDFN,IMRDR,IMRI,IMRJ,IMRN,IMRN1,IMRQ,IMRRP,IMRXX1,IMRRXD,IMRRXDR,IMRRXD1,IMRUT,IMRY,IMRSD,IMRED,IMRX,IMRD,IMRR,IMRFLG,IMRNAM,IMRSSN,IMRSTN,A,DISYS,IMRYES,IMRDL,IMRDSUP
|
---|
30 | K %,%DT,%I,I,DIC,DIR,DTOUT,DUOUT,IMRDTE,IMRRI,IMREF,IMRPG,IMREC,IMRRL,IMRPS,IMRUCST,IMREXP,IMRDST,IMRDU,IMRAR,J,K,M,N,POP,Q,X,X1,X2,Y,Z,Z1,^TMP($J),VAERR
|
---|
31 | K NC,NF,NFT,NQ,NQT,IMRDRG,IMRFILDT,IMRRCOST,IMRUC,IMRDLIST
|
---|
32 | Q
|
---|
33 | ASKN ; Ask the User Whether they want to Query the National
|
---|
34 | S IMRYES=0 D ASKQ1^IMRNTL Q:'IMRYES S IMRDL="" D ASKQ2^IMRNTL Q:IMRDL="" D MSG^IMRNTL,PHS^IMRNTL1
|
---|
35 | Q
|
---|
36 | C1 ; Get the Outpatient Pharmacy Data
|
---|
37 | F IMRRP=0:0 S IMRRP=$O(^PS(55,IMRDFN,"P","A",IMRRP)) Q:IMRRP<1 I IMRRP'<IMRSD F IMRR=0:0 S IMRR=$O(^PS(55,IMRDFN,"P","A",IMRRP,IMRR)) Q:IMRR<1 D RX^IMRUTL,C2
|
---|
38 | Q
|
---|
39 | C2 ; Get initial fill data
|
---|
40 | I 'IMRRXD1!('IMRXX1) Q ;quit if no issue date or drug ien
|
---|
41 | Q:'$D(IMRDLIST(IMRXX1)) ;quit if no drug selected by user
|
---|
42 | S:'IMRUCST IMRUCST=IMRDU ;unit price of drug=price per dispense unit
|
---|
43 | S IMRY=0
|
---|
44 | I IMRFILDT>IMRSD,IMRFILDT'>IMRED S IMRY=1,^(IMRDFN)=$S($D(^TMP($J,"IMRRX",IMRXX1,IMRNAM,IMRDFN)):^(IMRDFN),1:0)+1,^("Q")=$S($D(^(IMRDFN,"Q")):^("Q"),1:0)+IMRQ
|
---|
45 | I IMRY S ^("C")=$S($D(^TMP($J,"IMRRX",IMRXX1,IMRNAM,IMRDFN,"C")):^("C"),1:0)+(IMRQ*IMRUCST)
|
---|
46 | D RXF^IMRUTL ;get refill data
|
---|
47 | S IMRN=""
|
---|
48 | F S IMRN=$O(IMRAR(52.1,IMRN)) Q:IMRN="" S IMRRXD=+$G(IMRAR(52.1,IMRN,.01,"I")) I IMRRXD>IMRSD,IMRRXD'>IMRED D C3
|
---|
49 | Q
|
---|
50 | C3 ;
|
---|
51 | S IMRQ=$G(IMRAR(52.1,IMRN,1,"I")),IMRRCOST=$G(IMRAR(52.1,IMRN,1.2,"I"))
|
---|
52 | S:'IMRRCOST IMRRCOST=IMRUCST ;if no refill cost set it to unit price of drug
|
---|
53 | S ^(IMRDFN)=$S($D(^TMP($J,"IMRRX",IMRXX1,IMRNAM,IMRDFN)):^(IMRDFN),1:0)+1
|
---|
54 | S ^("Q")=$S($D(^TMP($J,"IMRRX",IMRXX1,IMRNAM,IMRDFN,"Q")):^("Q"),1:0)+IMRQ
|
---|
55 | S ^("C")=$S($D(^TMP($J,"IMRRX",IMRXX1,IMRNAM,IMRDFN,"C")):^("C"),1:0)+(IMRQ*IMRRCOST)
|
---|
56 | Q
|
---|
57 | SAVE ; ZTSAVE the variables Used
|
---|
58 | S ZTRTN="DQ^IMRRXS",ZTIO=ION_";"_IOM_";"_IOSL,ZTSAVE("IMRSD")="",ZTSAVE("IMRED")="",ZTSAVE("IMRDLIST(")="",ZTDESC="Selected RX Activity"
|
---|
59 | D ^%ZTLOAD D ^%ZISC K IO("Q"),ZTRTN,ZTIO,ZTSAVE,ZTDESC,ZTSK G KILL
|
---|
60 | Q
|
---|
61 | EOP ; Check End of Page
|
---|
62 | Q:$D(IO("S")) ;quit if a slave device
|
---|
63 | I IOST["C-" K DIR W ! S DIR(0)="E" D ^DIR K DIR I 'Y S IMRUT=1
|
---|
64 | Q
|
---|
65 | RXPRNT ; print output
|
---|
66 | F I=0:0 S I=$O(^TMP($J,"IMRRX",I)) Q:I'>0 I $D(^PSDRUG(I,0)) D PSDRUG,RX
|
---|
67 | Q
|
---|
68 | PSDRUG ; Get File 50 data (^PSDRUG global)
|
---|
69 | S IMRDRG=$$GET1^DIQ(50,I,.01,"I") ;generic drug name
|
---|
70 | S IMRUC=+$$GET1^DIQ(50,I,16,"I") ;price per dispensed unit
|
---|
71 | Q
|
---|
72 | RX ;
|
---|
73 | S N=0,NQT=0,NFT=0,A=""
|
---|
74 | F J=0:0 S A=$O(^TMP($J,"IMRRX",I,A)) Q:A="" F K=0:0 S K=$O(^TMP($J,"IMRRX",I,A,K)) Q:K'>0 S N=N+1,NFT=NFT+^(K),NQT=NQT+^(K,"Q")
|
---|
75 | W !,IMRDRG,?45,"Current Unit Cost: $ ",$S(IMRUC>0:$J(IMRUC,0,4),1:"NOT ENTERED"),!?5,N," patients",$J(NFT,8)," fills",$J(NQT,8)," Dispensed $ ",$J(IMRUC*NQT,0,2)," Current Value",!
|
---|
76 | S A=""
|
---|
77 | F J=0:0 S A=$O(^TMP($J,"IMRRX",I,A)) Q:A=""!(IMRUT) F K=0:0 S K=$O(^TMP($J,"IMRRX",I,A,K)) Q:K'>0!(IMRUT) S NF=^(K),NQ=^(K,"Q"),NC=NQ*IMRUC,DFN=K D NS^IMRCALL K DFN D
|
---|
78 | .I $Y+4>IOSL D EOP Q:IMRUT D HEDR
|
---|
79 | .W !?5,A,?37,IMRSSN,$J(NF,8),$J(NQ,8),$J(NC,12,2)
|
---|
80 | .Q
|
---|
81 | W !!?12,"TOTAL",?46,$J(NFT,8),$J(NQT,8),$J(IMRUC*NQT,12,2)
|
---|
82 | Q
|
---|
83 | HEDR ;
|
---|
84 | S IMRPG=IMRPG+1
|
---|
85 | W:$Y>0 @IOF
|
---|
86 | W:IOST'["C-" !
|
---|
87 | W !,IMRDTE,?(IOM-$L(IMRX)\2),IMRX,?(IOM-8),"Page ",IMRPG,!?(IOM-$L(IMRD)\2),IMRD,!
|
---|
88 | Q
|
---|