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