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