| [613] | 1 | PSOBAIRP ;BIR/RTR-Report of prescription mail labels with bad address ;08/16/2006 | 
|---|
|  | 2 | ;;7.0;OUTPATIENT PHARMACY;**233**;DEC 1997;Build 8 | 
|---|
|  | 3 | ; | 
|---|
|  | 4 | EN ; | 
|---|
|  | 5 | N PSOFORM,PSOAPAT,PSOSDT,PSOEDT,PSOSDTX,PSOEDTX,X,Y,X1,X2 | 
|---|
|  | 6 | W !!,"This option provides a report that shows patients and prescriptions whose last" | 
|---|
|  | 7 | W !,"label activity had a routing of mail and no valid permanent or temporary" | 
|---|
|  | 8 | W !,"address. It will also indicate whether the patient now has a good address.",!! | 
|---|
|  | 9 | K DIR S DIR(0)="SB^S:Single;A:All",DIR("A")="Print report for a Single patient, or All patients",DIR("B")="Single",DIR("?")=" ",DIR("?",1)="Enter 'S' to print address changes for one patient over the selected" | 
|---|
|  | 10 | S DIR("?",2)="date range, enter 'A' to print address changes for all patients",DIR("?",3)="over the selected date range." | 
|---|
|  | 11 | D ^DIR K DIR I Y["^"!($D(DTOUT))!($D(DUOUT)) D MESS Q | 
|---|
|  | 12 | S PSOFORM=$S(Y="S":1,1:0) | 
|---|
|  | 13 | I 'PSOFORM G DATE | 
|---|
|  | 14 | K DIC W ! S DIC="^DPT(",DIC(0)="QEAM",DIC("A")="Select PATIENT: " D ^DIC K DIC I Y<1!($D(DUOUT))!($D(DTOUT)) D MESS Q | 
|---|
|  | 15 | S PSOAPAT=+Y | 
|---|
|  | 16 | DATE ; | 
|---|
|  | 17 | W !! | 
|---|
|  | 18 | W ! K %DT S %DT="AEX",%DT("A")="Start fill date: " D ^%DT K %DT I Y<0!($D(DTOUT))!($D(DUOUT)) D MESS Q | 
|---|
|  | 19 | S (%DT(0),PSOSDT)=Y D DD^%DT S PSOSDTX=Y | 
|---|
|  | 20 | W ! S %DT="AEX",%DT("A")="End fill date: " D ^%DT K %DT I Y<0!($D(DTOUT))!($D(DUOUT)) D MESS Q | 
|---|
|  | 21 | S PSOEDT=Y D DD^%DT S PSOEDTX=Y | 
|---|
|  | 22 | S X1=PSOSDT,X2=-1 D C^%DTC S PSOSDT=X_".9999" | 
|---|
|  | 23 | S X1=PSOEDT,X2=+1 D C^%DTC S PSOEDT=X | 
|---|
|  | 24 | K IOP,%ZIS,POP S %ZIS="QM" D ^%ZIS I $G(POP) D MESS Q | 
|---|
|  | 25 | I $D(IO("Q")) D  Q | 
|---|
|  | 26 | .S ZTRTN="REP^PSOBAIRP",ZTDESC="Pharmacy bad address mail label report",ZTSAVE("PSOFORM")="",ZTSAVE("PSOAPAT")="",ZTSAVE("PSOSDT")="",ZTSAVE("PSOEDT")="",ZTSAVE("PSOEDTX")="",ZTSAVE("PSOSDTX")="" D ^%ZTLOAD K %ZIS | 
|---|
|  | 27 | .W !!,"Report queued to print.",! | 
|---|
|  | 28 | REP ; | 
|---|
|  | 29 | K ^TMP("PSOBADL",$J) | 
|---|
|  | 30 | N PSODEV,PSOUT,PSOLINE,PSOPAGE,PSOADND,PSOADF,PSOADFF,PSOAOPT,PSOAOPTA,PSOAOPTZ,PSOAOPTB,PSOAOPTC,PSOADLP,PSOANODE,PSOADX,PSORX,PSOADATE,PSOC,PSOAALL,PSOADFN,PSOANAME,PSONI,PSONX,PSONB,PSOASN,VA,DFN,PSONSSN,PSOAFLAG | 
|---|
|  | 31 | U IO | 
|---|
|  | 32 | S (PSOUT,PSOAFLAG)=0,PSODEV=$S($E(IOST,1,2)'="C-":0,1:1),PSOPAGE=1 | 
|---|
|  | 33 | S $P(PSOLINE,"-",78)="" | 
|---|
|  | 34 | ALL ;Print report for all patients | 
|---|
|  | 35 | N PSORD,PSORX,PSOLBL,PSOX | 
|---|
|  | 36 | S PSORD=PSOSDT F  S PSORD=$O(^PSRX("AD",PSORD)) Q:'PSORD!(PSORD>PSOEDT)  D | 
|---|
|  | 37 | .S PSORX=0 F  S PSORX=$O(^PSRX("AD",PSORD,PSORX)) Q:'PSORX  D | 
|---|
|  | 38 | ..S PSOLBL=$O(^PSRX(PSORX,"L",999999),-1) I 'PSOLBL Q | 
|---|
|  | 39 | ..S PSOX=$G(^PSRX(PSORX,"L",PSOLBL,0)) I PSOX["(BAD ADDRESS",PSOX'["WINDOW" D | 
|---|
|  | 40 | ...S PSOADFN=$P($G(^PSRX(PSORX,0)),"^",2) Q:'PSOADFN | 
|---|
|  | 41 | ...I $G(PSOFORM),PSOADFN'=PSOAPAT Q | 
|---|
|  | 42 | ...S PSOANAME=$P($G(^DPT(PSOADFN,0)),"^") Q:PSOANAME="" | 
|---|
|  | 43 | ...S ^TMP("PSOBADL",$J,PSOANAME,PSOADFN,PSORD,PSORX)="" | 
|---|
|  | 44 | D HD | 
|---|
|  | 45 | I '$D(^TMP("PSOBADL",$J)) W !!,"No data found to print for this date range.",! G END | 
|---|
|  | 46 | S PSONI="" F  S PSONI=$O(^TMP("PSOBADL",$J,PSONI)) Q:PSONI=""!(PSOUT)  D | 
|---|
|  | 47 | .S PSONX="" F  S PSONX=$O(^TMP("PSOBADL",$J,PSONI,PSONX)) Q:PSONX=""!(PSOUT)  D NAME,PRALL D | 
|---|
|  | 48 | ..S PSONB="" F  S PSONB=$O(^TMP("PSOBADL",$J,PSONI,PSONX,PSONB)) Q:PSONB=""!(PSOUT)  D | 
|---|
|  | 49 | ...S PSORX="" F  S PSORX=$O(^TMP("PSOBADL",$J,PSONI,PSONX,PSONB,PSORX)) Q:PSORX=""!(PSOUT)  D | 
|---|
|  | 50 | ....I ($Y+5)>IOSL D HD Q:PSOUT | 
|---|
|  | 51 | ....S Y=PSONB D DD^%DT S PSOADATE=Y | 
|---|
|  | 52 | ....D PRONE | 
|---|
|  | 53 | END ; | 
|---|
|  | 54 | K ^TMP("PSOBADL",$J) | 
|---|
|  | 55 | K DTOUT,DUOUT | 
|---|
|  | 56 | I '$G(PSOUT),PSODEV W !!,"End of Report." K DIR S DIR(0)="E",DIR("A")="Press Return to continue" D ^DIR K DIR | 
|---|
|  | 57 | I 'PSODEV W !!,"End of Report." | 
|---|
|  | 58 | I PSODEV W ! | 
|---|
|  | 59 | E  W @IOF | 
|---|
|  | 60 | D ^%ZISC S:$D(ZTQUEUED) ZTREQ="@" | 
|---|
|  | 61 | Q | 
|---|
|  | 62 | HD ; | 
|---|
|  | 63 | I '$G(PSOFORM) S PSOAFLAG=1 | 
|---|
|  | 64 | I PSODEV,PSOPAGE'=1 W ! K DIR S DIR(0)="E",DIR("A")="Press Return to continue, '^' to exit" D ^DIR K DIR I 'Y S PSOUT=1 Q | 
|---|
|  | 65 | I PSOPAGE=1,'PSODEV W ! I 1 | 
|---|
|  | 66 | E  W @IOF | 
|---|
|  | 67 | D  W ?67,"PAGE: "_PSOPAGE S PSOPAGE=PSOPAGE+1 | 
|---|
|  | 68 | .I PSOFORM W !,"Bad address mail label report for "_$G(PSOANAME) Q | 
|---|
|  | 69 | .W !,"Bad address mail label report for ALL Patients" | 
|---|
|  | 70 | W !,"for fill date between "_$G(PSOSDTX)_" and "_$G(PSOEDTX) | 
|---|
|  | 71 | W !,PSOLINE | 
|---|
|  | 72 | Q | 
|---|
|  | 73 | MESS ; | 
|---|
|  | 74 | W !!,"Nothing queued to print.",! | 
|---|
|  | 75 | Q | 
|---|
|  | 76 | NAME ;Set name(ssn) | 
|---|
|  | 77 | K VA S DFN=PSONX D PID^VADPT6 | 
|---|
|  | 78 | S PSONSSN=$G(PSONI)_"   ("_$E(VA("PID"),5,12)_")" | 
|---|
|  | 79 | K VA | 
|---|
|  | 80 | Q | 
|---|
|  | 81 | PRALL ;Print data for all patients | 
|---|
|  | 82 | N PSOADDR | 
|---|
|  | 83 | S PSOADDR="" | 
|---|
|  | 84 | S PSOAFLAG=0 | 
|---|
|  | 85 | W !!,$G(PSONSSN) D CHKADDR W ?30,"  ",PSOADDR I ($Y+5)>IOSL D HD Q:PSOUT | 
|---|
|  | 86 | Q | 
|---|
|  | 87 | PRONE ;Print data for one patient | 
|---|
|  | 88 | N PSORX0 | 
|---|
|  | 89 | S PSORX0=$G(^PSRX(PSORX,0)) I PSORX0=""!($P(PSORX0,"^",6)="") Q | 
|---|
|  | 90 | D CON W !,$G(PSOADATE),?15," Rx#: ",$P(PSORX0,"^"),?30,"  ",$P($G(^PSDRUG($P(PSORX0,"^",6),0)),"^") | 
|---|
|  | 91 | I ($Y+5)>IOSL D HD Q:PSOUT | 
|---|
|  | 92 | Q | 
|---|
|  | 93 | CON ; | 
|---|
|  | 94 | I PSOAFLAG,'PSOFORM W !,$G(PSONSSN) S PSOAFLAG=0 | 
|---|
|  | 95 | Q | 
|---|
|  | 96 | ; | 
|---|
|  | 97 | CHKADDR ; | 
|---|
|  | 98 | N PSOBADR,PSOTEMP | 
|---|
|  | 99 | I $G(PSONX)="" Q | 
|---|
|  | 100 | S PSOBADR=$$BADADR^DGUTL3(PSONX) | 
|---|
|  | 101 | I PSOBADR D | 
|---|
|  | 102 | .S PSOTEMP=$$CHKTEMP^PSOBAI(PSONX) | 
|---|
|  | 103 | I PSOBADR,'PSOTEMP S PSOADDR="** BAD ADDRESS **" Q | 
|---|
|  | 104 | S PSOADDR="PATIENT NOW HAS A VALID ADDRESS" | 
|---|
|  | 105 | Q | 
|---|