| [613] | 1 | PSONVARP ;BHM/MFR - Non-VA Med Usage Report - Input ;04/10/03 | 
|---|
|  | 2 | ;;7.0;OUTPATIENT PHARMACY;**132,118**;13 Feb 97 | 
|---|
|  | 3 | ;External reference to ^%DT is supported by DBIA 10003 | 
|---|
|  | 4 | ;External reference to ^%ZTLOAD is supported by DBIA 10063 | 
|---|
|  | 5 | ;External reference to ^%ZIS is supported by DBIA 10086 | 
|---|
|  | 6 | ;External reference to ^DIR is supported by DBIA 10026 | 
|---|
|  | 7 | ;External reference to ^XLFSTR is supported by DBIA 10104 | 
|---|
|  | 8 | ; | 
|---|
|  | 9 | HID ; - Entrhy point from the Hidden Action in the Medication Profile | 
|---|
|  | 10 | N PSOHDFLG S PSOHDFLG=1 | 
|---|
|  | 11 | ; | 
|---|
|  | 12 | EN N PSOSD,PSOED,PSOST,PSOSRT,PSOAPT,PSOAOI,PSOST,PSOOC,PSOAPT,PSOAOI,I,Y | 
|---|
|  | 13 | N OK,X,C,%DT | 
|---|
|  | 14 | ; | 
|---|
|  | 15 | ; - Ask for FROM DATE DOCUMENTED | 
|---|
|  | 16 | S %DT(0)=-DT,%DT="AEP",%DT("A")="FROM DATE DOCUMENTED: " | 
|---|
|  | 17 | W ! D ^%DT I Y<0!($D(DTOUT)) G END | 
|---|
|  | 18 | S PSOSD=Y\1-.00001 | 
|---|
|  | 19 | ; | 
|---|
|  | 20 | ENDT ; - Ask for TO DATE DOCUMENTED | 
|---|
|  | 21 | S %DT(0)=PSOSD+1\1,%DT("A")="TO DATE DOCUMENTED: " | 
|---|
|  | 22 | W ! D ^%DT I Y<0!($D(DTOUT)) G END | 
|---|
|  | 23 | S PSOED=Y\1+.99999 | 
|---|
|  | 24 | ; | 
|---|
|  | 25 | ; - Reported called from a Hidden Action menu | 
|---|
|  | 26 | I $G(PSOHDFLG) D  G DEV | 
|---|
|  | 27 | . S PSOPT(DFN)="",PSOAPT=0,PSOAOI=1,PSOST="B",PSOOC="B",PSOSRT="4,2" | 
|---|
|  | 28 | ; | 
|---|
|  | 29 | SORT ; - Ask for SORT BY | 
|---|
|  | 30 | K DIR S DIR("B")="PATIENT NAME" D HL1("A") | 
|---|
|  | 31 | SORT1 S PSOSRT="",(PSOAPT,PSOAOI)=1,(PSOST,PSOOC)="B" | 
|---|
|  | 32 | S DIR("A")="SORT BY",DIR(0)="FO" D HL1("?") | 
|---|
|  | 33 | W ! D ^DIR K DIR I $D(DIRUT) G END | 
|---|
|  | 34 | ; | 
|---|
|  | 35 | S OK=1,C=15 W ! | 
|---|
|  | 36 | F I=1:1:$L(Y,",") D | 
|---|
|  | 37 | . S X=$P(Y,",",I) S:X'?.N X=$$TRNS(X) I PSOSRT[X Q | 
|---|
|  | 38 | . W !?(C-10),$S(I=1:"SORT BY ",1:"THEN BY ") S C=C+5 | 
|---|
|  | 39 | . I X<1!(X>5) W X,"???",$C(7) S OK=0 Q | 
|---|
|  | 40 | . W $P("PATIENT NAME^ORDERABLE ITEM^DATE DOCUMENTED^STATUS^ORDER CHECKS","^",X) | 
|---|
|  | 41 | . S PSOSRT=PSOSRT_","_X | 
|---|
|  | 42 | I 'OK S DIR("B")=Y G SORT1 | 
|---|
|  | 43 | S $E(PSOSRT)="" | 
|---|
|  | 44 | ; | 
|---|
|  | 45 | S OK=1 | 
|---|
|  | 46 | F I=1:1:$L(PSOSRT,",") D  I 'OK Q | 
|---|
|  | 47 | . S X=$P(PSOSRT,",",I) D:X'=3 @("SRT"_X) | 
|---|
|  | 48 | I 'OK S DIR("B")="PATIENT NAME" G SORT1 | 
|---|
|  | 49 | ; | 
|---|
|  | 50 | DEV W ! K %ZIS,IOP,POP,ZTSK S %ZIS="QM" D ^%ZIS K %ZIS I POP G END | 
|---|
|  | 51 | I $D(IO("Q")) D  G END | 
|---|
|  | 52 | . N G K IO("Q"),ZTIO,ZTSAVE,ZTDTH,ZTSK | 
|---|
|  | 53 | . S ZTRTN="EN^PSONVAR1",ZTDESC="Non-VA Meds Usage Report" | 
|---|
|  | 54 | . F G="PSOSD","PSOED","PSOSRT","PSOPT","PSOOI" S:$D(@G) ZTSAVE(G)="" | 
|---|
|  | 55 | . F G="PSOST","PSOOC","PSOAPT","PSOAOI" S:$D(@G) ZTSAVE(G)="" | 
|---|
|  | 56 | . S:$D(PSOPT) ZTSAVE("PSOPT(")="" S:$D(PSOOI) ZTSAVE("PSOOI(")="" | 
|---|
|  | 57 | . D ^%ZTLOAD W:$D(ZTSK) !,"Report is Queued to print !!" K ZTSK | 
|---|
|  | 58 | ; | 
|---|
|  | 59 | G EN^PSONVAR1 | 
|---|
|  | 60 | ; | 
|---|
|  | 61 | END Q | 
|---|
|  | 62 | ; | 
|---|
|  | 63 | SRT1 ; - Selection of PATIENTS to print on the Report | 
|---|
|  | 64 | N DIC,X,I K PSOPT S PSOAPT=0 | 
|---|
|  | 65 | W !!,?5,"You may select a single or multiple PATIENTS," | 
|---|
|  | 66 | W !,?5,"or enter ^ALL to select all PATIENTS.",! | 
|---|
|  | 67 | S DIC=2,DIC(0)="QEAM",DIC("A")="     PATIENT: " | 
|---|
|  | 68 | F  D ^DIC Q:Y<0  S:'$$DEAD(+Y,1) PSOPT(+Y)="" K DIC("B") | 
|---|
|  | 69 | I X="^ALL" S PSOAPT=1 K PSOPT,DUOUT Q | 
|---|
|  | 70 | I $D(DUOUT)!($D(DTOUT)) S OK=0 Q | 
|---|
|  | 71 | I '$D(PSOPT),Y<0 S OK=0 Q | 
|---|
|  | 72 | Q | 
|---|
|  | 73 | ; | 
|---|
|  | 74 | SRT2 ; - Selection of ORDERABLE ITEMS to print on the Report | 
|---|
|  | 75 | N DIC,X,I K PSOOI S PSOAOI=0 | 
|---|
|  | 76 | W !!,?5,"You may select a single or multiple ORDERABLE ITEMS," | 
|---|
|  | 77 | W !,?5,"or enter ^ALL to select all ORDERABLE ITEMS.",! | 
|---|
|  | 78 | S DIC=50.7,DIC(0)="QEAM",DIC("A")="     ORDERABLE ITEM: " | 
|---|
|  | 79 | F  D ^DIC Q:Y<0  S PSOOI(+Y)="" K DIC("B") | 
|---|
|  | 80 | I X="^ALL" S PSOAOI=1 K PSOOI,DUOUT Q | 
|---|
|  | 81 | I $D(DUOUT)!($D(DTOUT)) S OK=0 Q | 
|---|
|  | 82 | I '$D(PSOOI)&(Y<0) S OK=0 Q | 
|---|
|  | 83 | Q | 
|---|
|  | 84 | ; | 
|---|
|  | 85 | SRT4 ; - Selection of STATUS to print on the Report | 
|---|
|  | 86 | N DIR,X,I K PSOST | 
|---|
|  | 87 | W !!,?5,"You may select (A)CTIVE, (D)ISCONTINUED or (B)OTH status.",! | 
|---|
|  | 88 | S DIR(0)="SAO^A:ACTIVE;D:DISCONTINUED;B:BOTH" | 
|---|
|  | 89 | S DIR("A")="     STATUS: ",DIR("B")="ACTIVE" D ^DIR | 
|---|
|  | 90 | I $D(DIRUT) S OK=0 Q | 
|---|
|  | 91 | S PSOST=Y | 
|---|
|  | 92 | Q | 
|---|
|  | 93 | ; | 
|---|
|  | 94 | SRT5 ; - Selection of ORDER CHECKS to print on the Report | 
|---|
|  | 95 | N DIR,X,OP1,OP2 K PSOOC | 
|---|
|  | 96 | S OP1="ORDERS WITH ORDER CHECKS ONLY" | 
|---|
|  | 97 | S OP2="ORDERS WITHOUT ORDER CHECKS ONLY" | 
|---|
|  | 98 | W !!,?5,"You may select 'Y' to print ",OP1,"," | 
|---|
|  | 99 | W !?5,"'N' to print ",OP2," or 'B' for BOTH.",! | 
|---|
|  | 100 | S DIR(0)="SAO^Y:"_OP1_";N:"_OP2_";B:BOTH" | 
|---|
|  | 101 | S DIR("A")="     ORDER CHECKS: ",DIR("B")="BOTH" D ^DIR | 
|---|
|  | 102 | I $D(DIRUT) S OK=0 Q | 
|---|
|  | 103 | S PSOOC=Y | 
|---|
|  | 104 | Q | 
|---|
|  | 105 | ; | 
|---|
|  | 106 | TRNS(X) ; - Translates Alpha into the corresponding Sorting Code | 
|---|
|  | 107 | N L,UPX S L=$L(X),UPX=$$UP^XLFSTR(X) | 
|---|
|  | 108 | I $E("PATIENT NAME",1,L)=UPX Q 1 | 
|---|
|  | 109 | I $E("ORDERABLE ITEM",1,L)=UPX Q 2 | 
|---|
|  | 110 | I $E("DATE DOCUMENTED",1,L)=UPX Q 3 | 
|---|
|  | 111 | I $E("STATUS",1,L)=UPX Q 4 | 
|---|
|  | 112 | I $E("ORDER CHECKS",1,L)=UPX Q 5 | 
|---|
|  | 113 | Q X | 
|---|
|  | 114 | ; | 
|---|
|  | 115 | DEAD(DFN,DSPL) ; Check if Patient has a Date Of Death on File | 
|---|
|  | 116 | N VADM,Y | 
|---|
|  | 117 | I '$G(DFN) Q 0 | 
|---|
|  | 118 | D DEM^VADPT I $G(VADM(6))="" Q 0 | 
|---|
|  | 119 | I $G(DSPL) W !?10,$P($G(VADM(1)),"^")," (",$P($G(VADM(2)),"^",2),") DIED ",$P($G(VADM(6)),"^",2),$C(7) | 
|---|
|  | 120 | Q 1 | 
|---|
|  | 121 | ; | 
|---|
|  | 122 | HL1(S) ; - Help for the SORT BY prompt | 
|---|
|  | 123 | S DIR(S,1)="    Enter the SORT field(s) for this Report:" | 
|---|
|  | 124 | S DIR(S,2)=" " | 
|---|
|  | 125 | S DIR(S,3)="       1 - PATIENT NAME" | 
|---|
|  | 126 | S DIR(S,4)="       2 - ORDERABLE ITEM" | 
|---|
|  | 127 | S DIR(S,5)="       3 - DATE DOCUMENTED" | 
|---|
|  | 128 | S DIR(S,6)="       4 - STATUS" | 
|---|
|  | 129 | S DIR(S,7)="       5 - ORDER CHECKS" | 
|---|
|  | 130 | S DIR(S,8)=" " | 
|---|
|  | 131 | S DIR(S,9)="    Or any combination of the above, separated by comma," | 
|---|
|  | 132 | S DIR(S,10)="    as in these examples:" | 
|---|
|  | 133 | S DIR(S,11)=" " | 
|---|
|  | 134 | S DIR(S,12)="       2,1  - BY ORDERABLE ITEM, THEN BY PATIENT NAME" | 
|---|
|  | 135 | S DIR(S,13)="      5,1,4 - BY ORDER CHECKS, THEN BY PATIENT NAME, THEN BY STATUS" | 
|---|
|  | 136 | S DIR(S,14)=" " | 
|---|
|  | 137 | S DIR(S)=" " | 
|---|
|  | 138 | Q | 
|---|