| 1 | PSSDTR ;BIR/EJW-Print Drug Text Report ; | 
|---|
| 2 | ;;1.0;PHARMACY DATA MANAGEMENT;**55**;9/30/97 | 
|---|
| 3 | ; | 
|---|
| 4 | ;Reference to $$FORMRX^PSNAPIS(DA,K,.LIST) supported by DBIA #2574 | 
|---|
| 5 | ; | 
|---|
| 6 | W !!,"This report shows each selected drug text entry and lists all drugs",!,"and orderable items linked to it." | 
|---|
| 7 | EN ; | 
|---|
| 8 | K PSSHOW,PSSBEG,PSSEND,PSSNUMBX,PSSSRT | 
|---|
| 9 | K DIR S DIR(0)="S^A:ALL;S:SINGLE ENTRY OR RANGE",DIR("B")="S",DIR("A")="Print for (A)ll or (S)elect Single Entry or Range" D | 
|---|
| 10 | .S DIR("?")=" ",DIR("?",1)="Enter 'A' for all drug text entries,",DIR("?",2)="or 'S' to select single entry or range." | 
|---|
| 11 | D ^DIR K DIR I Y["^"!($D(DTOUT))!($D(DUOUT)) W !!,"Nothing queued to print.",! G DONE | 
|---|
| 12 | S PSSHOW=Y I PSSHOW="A" S PSSBEG="",PSSEND="Z" S PSSSRT="A" G TASK | 
|---|
| 13 | ; | 
|---|
| 14 | S PSSNUMB="" F  S PSSNUMB=$O(^PS(51.7,"B",PSSNUMB)) Q:'PSSNUMB!($G(PSSNUMBX))  S PSSNUMBX=1 | 
|---|
| 15 | I $G(PSSNUMBX) K DIR S DIR(0)="Y",DIR("A")="Print report for drug text entries with leading numerics",DIR("B")="N" D  D ^DIR K DIR I Y["^"!($D(DUOUT))!($D(DTOUT)) W !!,"Nothing queued to print.",! G DONE | 
|---|
| 16 | .W !!!,"There are drugs in the drug text file with leading numerics.",! | 
|---|
| 17 | .S DIR("?")=" ",DIR("?",1)="There are some entries in the drug text file with leading numerics.",DIR("?",2)="Enter Yes to print the report for those entries.",DIR("?",3)=" " | 
|---|
| 18 | I $G(PSSNUMBX),$G(Y)=1 S PSSSRT="N" G TASK | 
|---|
| 19 | K PSSNUMB,PSSNUMBX | 
|---|
| 20 | ASKA K PSSBEG,PSSEND | 
|---|
| 21 | W !!,"Enter a single drug text entry or to see all drug text entries beginning with" | 
|---|
| 22 | W !,"the letter 'A' for example, enter 'A' or whichever letter you wish to see." | 
|---|
| 23 | W !,"To see drug text entries in a range for example starting with 'H', 'I' and 'J'" | 
|---|
| 24 | W !,"enter in the format 'H-J'.",! | 
|---|
| 25 | S DIR("?",1)=" ",DIR("?",2)="Enter a single drug text entry or enter a letter, 'A', 'B', etc., to see",DIR("?",3)="entries beginning with that letter or to see a range of drug text entries" | 
|---|
| 26 | S DIR("?",4)="enter 'A-C', 'G-M', etc.",DIR("?",5)=" ",DIR("?")=" " | 
|---|
| 27 | S DIR("A")="Enter a single entry or select a range",DIR(0)="F^1:100" D ^DIR K DIR I Y["^"!($D(DTOUT))!($D(DUOUT)) W !!,"Nothing queued to print.",! G DONE | 
|---|
| 28 | S PSSXX=Y | 
|---|
| 29 | I PSSXX'?1U&(PSSXX'?1U1"-"1U)&(PSSXX'?1L)&(PSSXX'?1L1"-"1L) I PSSXX'="",'$D(^PS(51.7,"B",PSSXX)) D  W ! G ASKA | 
|---|
| 30 | . W !!,"Invalid response." W $S($L(PSSXX)>1&(PSSXX'["-"):" Entry not found.",1:" Enter a single entry, or a letter, 'A', 'B', etc., or a range.") | 
|---|
| 31 | I PSSXX["-" S PSSBEG=$P(PSSXX,"-"),PSSEND=$P(PSSXX,"-",2) I $A(PSSEND)<$A(PSSBEG) W !!,"Invalid response.",! G ASKA | 
|---|
| 32 | I PSSXX'["-" S PSSBEG=PSSXX,PSSEND=PSSXX | 
|---|
| 33 | S PSSSRT="X" | 
|---|
| 34 | TASK ; | 
|---|
| 35 | I PSSSRT="X",$L(PSSXX)>1,PSSXX'["-" S PSSSRT="S" ; single entry | 
|---|
| 36 | I PSSSRT="X" W !!,"Report will be for drug text starting with "_$G(PSSBEG)_",",!,"and ending with drug text starting with "_$G(PSSEND)_".",! | 
|---|
| 37 | I PSSSRT="N" W !!,"This report will be for drug text with leading numerics.",! | 
|---|
| 38 | I PSSSRT="A" W !!,"This report will be for all drug text entries.",! | 
|---|
| 39 | I PSSSRT="S" W !!,"This report will be for drug text entry: ",PSSXX,! | 
|---|
| 40 | K DIR S DIR(0)="Y",DIR("A")="Is this correct",DIR("B")="Y" D ^DIR K DIR I Y'=1 W ! G EN | 
|---|
| 41 | I PSSSRT="X",$L(PSSXX)>1,PSSXX'["-" S PSSSRT="S" ; single entry | 
|---|
| 42 | RPT W !!,"You may queue the report to print, if you wish.",! | 
|---|
| 43 | K PSSFIRST | 
|---|
| 44 | ; | 
|---|
| 45 | DVC K %ZIS,POP,IOP S %ZIS="QM" D ^%ZIS I $G(POP) W !!,"Nothing queued to print.",! G DONE | 
|---|
| 46 | QUEUE I $D(IO("Q")) S ZTRTN="START^PSSDTR",ZTDESC="Drug Text File Report",ZTSAVE("PSSBEG")="",ZTSAVE("PSSEND")="",ZTSAVE("PSSSRT")="",ZTSAVE("PSSXX")="" D ^%ZTLOAD K %ZSI W !,"Report queued to print.",! G DONE | 
|---|
| 47 | START ; | 
|---|
| 48 | U IO | 
|---|
| 49 | S PSSOUT=0,PSSDV=$S($E(IOST)="C":"C",1:"P") | 
|---|
| 50 | S PSSPGCT=0,PSSPGLN=IOSL-7,PSSPGCT=1 | 
|---|
| 51 | D TITLE | 
|---|
| 52 | I PSSSRT="X" S PSSX=$A(PSSBEG)-1,PSSLCL=$C(PSSX)_"zzzz" | 
|---|
| 53 | I $G(PSSSRT)="N"!($G(PSSSRT)="A") S (PSSLCL,PSSEND)="" | 
|---|
| 54 | ; | 
|---|
| 55 | I PSSSRT'="S" F  S PSSLCL=$O(^PS(51.7,"B",PSSLCL)) Q:$S(PSSSRT="N"&('PSSLCL):1,PSSSRT="X"&(PSSLCL](PSSEND_"zzzz")):1,1:0)!(PSSLCL="")!($G(PSSOUT))  D DTXTRPT | 
|---|
| 56 | I PSSSRT="S",PSSBEG'="" S PSSLCL=PSSBEG I $D(^PS(51.7,"B",PSSLCL)) D DTXTRPT | 
|---|
| 57 | G END | 
|---|
| 58 | DTXTRPT F PSSB=0:0 S PSSB=$O(^PS(51.7,"B",PSSLCL,PSSB)) Q:'PSSB  D | 
|---|
| 59 | . I $G(^PS(51.7,PSSB,0))'="" D DTNAME D FULL Q:($G(PSSOUT))  D DTEXT Q:$G(PSSOUT)  D OITEXT I $G(PSSOUT) Q | 
|---|
| 60 | D FULL I $G(PSSOUT) Q | 
|---|
| 61 | W ! F MJT=1:1:70 W "-" | 
|---|
| 62 | W ! | 
|---|
| 63 | Q | 
|---|
| 64 | DTNAME D FULL Q:$G(PSSOUT)  W !,"DRUG TEXT NAME:  ",PSSLCL | 
|---|
| 65 | D FULL2 Q:($G(PSSOUT))  S Y=+$P($G(^PS(51.7,PSSB,0)),"^",2) I Y>0 X ^DD("DD") W !,?3,"** INACTIVE DATE:  ",Y," **",! | 
|---|
| 66 | N PSSSYN | 
|---|
| 67 | ; print synonyms, if any | 
|---|
| 68 | I $O(^PS(51.7,PSSB,1,0))?1.N D FULL Q:(PSSOUT)  D | 
|---|
| 69 | . W !,?3,"SYNONYM(S):  " | 
|---|
| 70 | . S PSSSYN=0 F  S PSSSYN=$O(^PS(51.7,PSSB,1,PSSSYN)) Q:'PSSSYN  D FULL Q:$G(PSSOUT)  W ?17,^PS(51.7,PSSB,1,PSSSYN,0),! | 
|---|
| 71 | ; print drug text | 
|---|
| 72 | N PSSTXT | 
|---|
| 73 | D FULL2 I $G(PSSOUT) Q | 
|---|
| 74 | W !!,?3,"DRUG TEXT:" | 
|---|
| 75 | S PSSTXT=0 F  S PSSTXT=$O(^PS(51.7,PSSB,2,PSSTXT)) Q:'PSSTXT  D FULL Q:$G(PSSOUT)  W !,?3,^PS(51.7,PSSB,2,PSSTXT,0) | 
|---|
| 76 | D NRESTR | 
|---|
| 77 | Q | 
|---|
| 78 | ; | 
|---|
| 79 | DTEXT ; | 
|---|
| 80 | D FULL2 I $G(PSSOUT) Q | 
|---|
| 81 | W !!,?3,"DRUG file entries:",!,?3,"-----------------" | 
|---|
| 82 | I $O(^PSDRUG("DTXT",PSSB,""))="" D FULL Q:$G(PSSOUT)  W !,?3,"NONE" Q | 
|---|
| 83 | S PSSDRG="" F  S PSSDRG=$O(^PSDRUG("DTXT",PSSB,PSSDRG)) Q:'PSSDRG  D FULL Q:($G(PSSOUT))  W !,?3,$P($G(^PSDRUG(PSSDRG,0)),"^",1) D | 
|---|
| 84 | . I $P($G(^PSDRUG(PSSDRG,"I")),"^",1)'="" D FULL Q:($G(PSSOUT))  S Y=+$P($G(^PSDRUG(PSSDRG,"I")),"^",1) I Y>0 X ^DD("DD") W !,?6,"** INACTIVE DATE:  ",Y," **",! | 
|---|
| 85 | Q | 
|---|
| 86 | ; | 
|---|
| 87 | OITEXT ; | 
|---|
| 88 | N DFPTR | 
|---|
| 89 | D FULL2 Q:$G(PSSOUT)  W !!,?3,"ORDERABLE ITEM file entries:  " D | 
|---|
| 90 | . W !,?3,"---------------------------" | 
|---|
| 91 | I $O(^PS(50.7,"DTXT",PSSB,""))="" D FULL Q:$G(PSSOUT)  W !,?3,"NONE" | 
|---|
| 92 | S PSSDRG="" F  S PSSDRG=$O(^PS(50.7,"DTXT",PSSB,PSSDRG)) Q:'PSSDRG  D FULL Q:$G(PSSOUT)  W !,?3,$P($G(^PS(50.7,PSSDRG,0)),"^",1) D | 
|---|
| 93 | . S DFPTR=$P(^PS(50.7,PSSDRG,0),"^",2) W "  ",$P(^PS(50.606,DFPTR,0),"^",1) | 
|---|
| 94 | . I $P(^PS(50.7,PSSDRG,0),"^",4)'="" D | 
|---|
| 95 | . . D FULL Q:($G(PSSOUT))  S Y=+$P($G(^PS(50.7,PSSDRG,0)),"^",4) I Y>0 X ^DD("DD") W !,?6,"** INACTIVE DATE:  ",Y," **",! | 
|---|
| 96 | Q | 
|---|
| 97 | ; | 
|---|
| 98 | NRESTR ; check for National Formulary Restrictions | 
|---|
| 99 | N PSXGN,PSXVP,PSXDN,DONE,XX2 | 
|---|
| 100 | S DONE=0 | 
|---|
| 101 | S PSSDRG="" F  S PSSDRG=$O(^PSDRUG("DTXT",PSSB,PSSDRG)) Q:'PSSDRG  D  Q:DONE | 
|---|
| 102 | .I $D(^PSDRUG(PSSDRG,"ND")) S PSXDN=$G(^PSDRUG(PSSDRG,"ND")),PSXGN=$P(PSXDN,"^"),PSXVP=$P(PSXDN,"^",3) | 
|---|
| 103 | .D FULL2 Q:$G(PSSOUT)  I $G(PSXGN),$G(PSXVP) S DONE=1 W !!,?3,"NATIONAL FORMULARY RESTRICTION TEXT:" S XX2=$$FORMRX^PSNAPIS(PSXGN,PSXVP,.LIST) I $G(XX2)=1,$D(LIST) F XX2=0:0 S XX2=$O(LIST(XX2)) Q:'XX2  D FULL Q:$G(PSSOUT)  W !,?3,LIST(XX2,0) | 
|---|
| 104 | K LIST | 
|---|
| 105 | Q | 
|---|
| 106 | ; | 
|---|
| 107 | FULL ; | 
|---|
| 108 | I ($Y+5)>IOSL&('$G(PSSOUT)) D TITLE | 
|---|
| 109 | Q | 
|---|
| 110 | ; | 
|---|
| 111 | FULL2 ; | 
|---|
| 112 | I ($Y+6)>IOSL&('$G(PSSOUT)) D TITLE | 
|---|
| 113 | Q | 
|---|
| 114 | TITLE ; | 
|---|
| 115 | I $G(PSSDV)="C",$G(PSSPGCT)'=1 W ! K DIR S DIR(0)="E" D ^DIR K DIR I 'Y S PSSOUT=1 Q | 
|---|
| 116 | ; | 
|---|
| 117 | W @IOF D | 
|---|
| 118 | . I PSSSRT="N" W !,?16,"Drug Text Report for Drug Text entries with Leading Numerics",! Q | 
|---|
| 119 | . I PSSSRT="A" W !,?16,"Drug Text Report for all Drug Text entries",! Q | 
|---|
| 120 | . I PSSSRT="X" W !,?16,"Drug Text Report for drug text from "_PSSBEG_" through "_PSSEND,! Q | 
|---|
| 121 | . I PSSSRT="S" W !,?16,"Drug Text Report for drug text : "_PSSBEG,! Q | 
|---|
| 122 | S Y=DT X ^DD("DD") W !,"Date printed: ",Y,?70,"Page: ",PSSPGCT,! | 
|---|
| 123 | F MJT=1:1:79 W "=" | 
|---|
| 124 | W ! | 
|---|
| 125 | I $G(PSSFIRST)="" D | 
|---|
| 126 | . W !,"PLEASE NOTE: The National Formulary Restriction Text is the original text" | 
|---|
| 127 | . W !,"exported with the DRUG TEXT file (#51.7) and automatically linked to the DRUG" | 
|---|
| 128 | . W !,"file (#50) entries based on the VA product match. No ORDERABLE ITEM file" | 
|---|
| 129 | . W !,"(#50.7) entries were automatically linked with DRUG TEXT file (#51.7).",! | 
|---|
| 130 | . S PSSFIRST=1 | 
|---|
| 131 | S PSSPGCT=PSSPGCT+1 | 
|---|
| 132 | Q | 
|---|
| 133 | END ; | 
|---|
| 134 | I '$G(PSSOUT),$G(PSSDV)="C" W !!,"End of Report." K DIR S DIR(0)="E",DIR("A")="Press Return to continue" D ^DIR K DIR | 
|---|
| 135 | I $G(PSSDV)="C" W ! | 
|---|
| 136 | E  W @IOF | 
|---|
| 137 | DONE ; | 
|---|
| 138 | K PSSB,PSSLCL,MJT,PSSPGCT,PSSPGLN,Y,DIR,INDT,PSSXX,X,OITM,IOP,POP,IO("Q"),DIRUT,DUOUT,DTOUT | 
|---|
| 139 | K PSSSRT,PSSDRG,PSSDV,PSSX,PSSOUT,PSSHOW,PSSBEG,PSSEND D ^%ZISC S:$D(ZTQUEUED) ZTREQ="@" | 
|---|
| 140 | Q | 
|---|