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