| [613] | 1 | PSOBAIR2 ;BIR/RTR-Report of suspended prescriptions with bad address ;08/16/2006
 | 
|---|
 | 2 |  ;;7.0;OUTPATIENT PHARMACY;**233,200,264**;DEC 1997;Build 19
 | 
|---|
 | 3 |  ;External reference ^PS(55 supported by DBIA 2228
 | 
|---|
 | 4 | EN ;
 | 
|---|
 | 5 |  N PSOAPAT,PSOSDT,PSOEDT,PSOSDTX,PSOEDTX,X,Y,X1,X2,PSUSDIV,PII,PSOCNT,PSOBDF
 | 
|---|
 | 6 |  W !!,"This option shows unprinted suspended prescriptions for the following:",!
 | 
|---|
 | 7 |  W !,"- BAD ADDRESS INDICATOR set in the PATIENT file (#2) and no active temporary",!,"  address"
 | 
|---|
 | 8 |  W !,"- DO NOT MAIL set in the PHARMACY PATIENT file (#55)"
 | 
|---|
 | 9 |  W !,"- FOREIGN ADDRESS set in the PATIENT file (#2) and no active US temporary",!,"  address",!
 | 
|---|
 | 10 |  K DIR S DIR(0)="S^B:Bad Address Indicator;D:Do Not Mail;F:Foreign;A:All;",DIR("B")="A"
 | 
|---|
 | 11 |  S DIR("A")="Print for Bad Address Indicator/Do Not Mail/Foreign/All (B/D/F/A)"
 | 
|---|
 | 12 |  S DIR("?")="Print prescriptions with Bad Address Indicated/Do Not Mail/Foreign Address, or all"
 | 
|---|
 | 13 |  D ^DIR K DIR I $D(DTOUT)!$D(DUOUT) D MESS Q
 | 
|---|
 | 14 |  S PSOBDF=Y
 | 
|---|
 | 15 | DATE ;
 | 
|---|
 | 16 |  W ! S %DT="AEX",%DT("A")="Ending suspense date: " D ^%DT K %DT I Y<0!($D(DTOUT))!($D(DUOUT)) D MESS Q
 | 
|---|
 | 17 |  S PSOEDT=Y D DD^%DT S PSOEDTX=Y
 | 
|---|
 | 18 |  S X1=PSOEDT,X2=+1 D C^%DTC S PSOEDT=X
 | 
|---|
 | 19 |  D:'$D(PSOPAR) ^PSOLSET I '$D(PSOPAR) D MESS Q
 | 
|---|
 | 20 |  S PSOCNT=0 F PII=0:0 S PII=$O(^PS(59,PII)) Q:'PII  S PSOCNT=PSOCNT+1
 | 
|---|
 | 21 |  I PSOCNT=1 G SKIP
 | 
|---|
 | 22 |  W !!?3,"You are logged in under the "_$P($G(^PS(59,+$G(PSOSITE),0)),"^")_" division.",!
 | 
|---|
 | 23 |  K DIR S DIR(0)="Y",DIR("B")="Yes",DIR("A")="Print only those Rx's suspended for this division",DIR("?")="Enter 'Yes' to print only those Rx's for this division, enter 'No' to print Rx's suspended for all divisions."
 | 
|---|
 | 24 |  D ^DIR K DIR I Y["^"!($D(DIRUT)) D MESS Q
 | 
|---|
 | 25 |  S PSUSDIV=Y
 | 
|---|
 | 26 | SKIP ;
 | 
|---|
 | 27 |  K IOP,%ZIS,POP S %ZIS="QM" D ^%ZIS I $G(POP) D MESS Q
 | 
|---|
 | 28 |  I $D(IO("Q")) D  Q
 | 
|---|
 | 29 |  .N GG
 | 
|---|
 | 30 |  .S ZTRTN="REP^PSOBAIR2",ZTDESC="Pharmacy bad address suspense report" D
 | 
|---|
 | 31 |  ..F GG="PSOSITE","PSOAPAT","PSOSDT","PSOEDT","PSOEDTX","PSOSDTX","PSUSDIV" S:$D(@GG) ZTSAVE(GG)=""
 | 
|---|
 | 32 |  ..S ZTSAVE("PSOBDF*")="" D ^%ZTLOAD K %ZIS
 | 
|---|
 | 33 |  .W !!,"Report queued to print.",!
 | 
|---|
 | 34 | REP ;
 | 
|---|
 | 35 |  K ^TMP("PSOBADL",$J) S (PSOBDF("B"),PSOBDF("D"),PSOBDF("F"))=0
 | 
|---|
 | 36 |  N PSODEV,PSOUT,PSOLINE,PSOPAGE,PSOADND,PSOADF,PSOADFF,PSOAOPT,PSOAOPTA,PSOAOPTZ,PSOAOPTB,PSOAOPTC,PSOADLP,PSOANODE,PSOADX,SFN,PSOADATE,PSOC,PSOAALL,PSODFN,PSOANAME,PSONI,PSONX,PSONB,PSOASN,VA,DFN,PSONSSN,PSOAFLAG
 | 
|---|
 | 37 |  U IO
 | 
|---|
 | 38 |  S (PSOUT,PSOAFLAG)=0,PSODEV=$S($E(IOST,1,2)'="C-":0,1:1),PSOPAGE=1
 | 
|---|
 | 39 |  S $P(PSOLINE,"-",78)=""
 | 
|---|
 | 40 | ALL ;
 | 
|---|
 | 41 |  N PSORD,SFN,PSOLBL,PSOX,PSODFN,RXIEN,PRINTED,RXSITE,RXSTS,PARTIAL
 | 
|---|
 | 42 |  S PSODFN=0 F  S PSODFN=$O(^PS(52.5,"AC",PSODFN)) Q:'PSODFN  D
 | 
|---|
 | 43 |  .S (PSOBAI,PSOBDF("B"),PSOBDF("D"),PSOBDF("F"))=0 D CHKADDR,FOREIGN,CHKMAIL Q:(PSOBDF("B")+PSOBDF("D")+PSOBDF("F"))=0
 | 
|---|
 | 44 |  .Q:(PSOBDF="A"&'(PSOBDF("B")!PSOBDF("F")!PSOBDF("D")))  I PSOBDF'="A" Q:('PSOBDF(PSOBDF))
 | 
|---|
 | 45 |  .S PSORD=0 F  S PSORD=$O(^PS(52.5,"AC",PSODFN,PSORD)) Q:'PSORD!(PSORD>PSOEDT)  D
 | 
|---|
 | 46 |  ..S SFN=0 F  S SFN=$O(^PS(52.5,"AC",PSODFN,PSORD,SFN)) Q:'SFN  D DETAIL
 | 
|---|
 | 47 |  S PSODFN=0 F  S PSODFN=$O(^PS(52.5,"AG",PSODFN)) Q:'PSODFN  D
 | 
|---|
 | 48 |  .S (PSOBAI,PSOBDF("B"),PSOBDF("D"),PSOBDF("F"))=0 D CHKADDR,FOREIGN,CHKMAIL Q:(PSOBDF("B")+PSOBDF("D")+PSOBDF("F"))=0
 | 
|---|
 | 49 |  .Q:(PSOBDF="A"&'(PSOBDF("B")!PSOBDF("F")!PSOBDF("D")))  I PSOBDF'="A" Q:('PSOBDF(PSOBDF))
 | 
|---|
 | 50 |  .S SFN=0 F  S SFN=$O(^PS(52.5,"AG",PSODFN,SFN)) Q:'SFN  D
 | 
|---|
 | 51 |  ..S PSORD=$G(^PS(52.5,SFN,0)),PSORD=$P(PSORD,"^",2) I PSORD<PSOEDT D DETAIL
 | 
|---|
 | 52 |  D HD
 | 
|---|
 | 53 |  I '$D(^TMP("PSOBADL",$J)) W !!,"No data found to print for this date range.",! G END
 | 
|---|
 | 54 |  S PSONI="" F  S PSONI=$O(^TMP("PSOBADL",$J,PSONI)) Q:PSONI=""!(PSOUT)  D
 | 
|---|
 | 55 |  .S PSONX="" F  S PSONX=$O(^TMP("PSOBADL",$J,PSONI,PSONX)) Q:PSONX=""!(PSOUT)  D NAME,PRALL D
 | 
|---|
 | 56 |  ..S PSONB="" F  S PSONB=$O(^TMP("PSOBADL",$J,PSONI,PSONX,PSONB)) Q:PSONB=""!(PSOUT)  D
 | 
|---|
 | 57 |  ...S SFN="" F  S SFN=$O(^TMP("PSOBADL",$J,PSONI,PSONX,PSONB,SFN)) Q:SFN=""!(PSOUT)  D
 | 
|---|
 | 58 |  ....I ($Y+5)>IOSL D HD Q:PSOUT
 | 
|---|
 | 59 |  ....S Y=PSONB D DD^%DT S PSOADATE=Y
 | 
|---|
 | 60 |  ....S PNODE=$G(^TMP("PSOBADL",$J,PSONI,PSONX,PSONB,SFN)) D PRONE
 | 
|---|
 | 61 | END ;
 | 
|---|
 | 62 |  I PSOBDF="A" W !!!,"NOTE: B=BAD ADDRESS INDICATOR  D=NO NOT MAIL  F=FOREIGN ADDRESS"
 | 
|---|
 | 63 |  K ^TMP("PSOBADL",$J)
 | 
|---|
 | 64 |  K DTOUT,DUOUT,PSOBAI
 | 
|---|
 | 65 |  I '$G(PSOUT),PSODEV W !!,"End of Report." K DIR S DIR(0)="E",DIR("A")="Press Return to continue" D ^DIR K DIR
 | 
|---|
 | 66 |  I 'PSODEV W !!,"End of Report."
 | 
|---|
 | 67 |  I PSODEV W !
 | 
|---|
 | 68 |  E  W @IOF
 | 
|---|
 | 69 |  D ^%ZISC S:$D(ZTQUEUED) ZTREQ="@"
 | 
|---|
 | 70 |  Q
 | 
|---|
 | 71 | HD ;
 | 
|---|
 | 72 |  S PSOAFLAG=1
 | 
|---|
 | 73 |  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
 | 
|---|
 | 74 |  I PSOPAGE=1,'PSODEV W ! I 1
 | 
|---|
 | 75 |  E  W @IOF
 | 
|---|
 | 76 |  D  W ?67,"PAGE: "_PSOPAGE S PSOPAGE=PSOPAGE+1
 | 
|---|
 | 77 |  .W !,"Suspense "_$S(PSOBDF="A":"BAI/DO NOT MAIL/FOREIGN ADRESS",PSOBDF="B":"BAD ADDRESS INDICATOR",PSOBDF="D":"DO NOT MAIL",1:"FOREIGN ADDRESS")_" report - division = ",$S($G(PSUSDIV):$P($G(^PS(59,+$G(PSOSITE),0)),"^"),1:"ALL")
 | 
|---|
 | 78 |  W !,"for suspense dates through "_$G(PSOEDTX) W:PSOBDF="A" ?70,"B/D/F"
 | 
|---|
 | 79 |  W !,PSOLINE
 | 
|---|
 | 80 |  Q
 | 
|---|
 | 81 | MESS ;
 | 
|---|
 | 82 |  W !!,"Nothing queued to print.",!
 | 
|---|
 | 83 |  K DTOUT,DUOUT
 | 
|---|
 | 84 |  Q
 | 
|---|
 | 85 | NAME ;Set name(ssn)
 | 
|---|
 | 86 |  K VA S DFN=PSONX D PID^VADPT6
 | 
|---|
 | 87 |  S PSONSSN=$G(PSONI)_"   ("_$E(VA("PID"),5,12)_")"
 | 
|---|
 | 88 |  K VA
 | 
|---|
 | 89 |  Q
 | 
|---|
 | 90 | PRALL ;Print data for all patients
 | 
|---|
 | 91 |  N PSOADDR
 | 
|---|
 | 92 |  S PSOADDR=""
 | 
|---|
 | 93 |  S PSOAFLAG=0
 | 
|---|
 | 94 |  W !!,$G(PSONSSN) D CHKADDR W ?30,"  ",PSOADDR I ($Y+5)>IOSL D HD Q:PSOUT
 | 
|---|
 | 95 |  Q
 | 
|---|
 | 96 | PRONE ;Print data for one patient
 | 
|---|
 | 97 |  N SFN0
 | 
|---|
 | 98 |  S SFN0=$G(^PSRX(SFN,0)) I SFN0=""!($P(SFN0,"^",6)="") Q
 | 
|---|
 | 99 |  D CON W !,$G(PSOADATE),?15," Rx#: ",$P(SFN0,"^"),?30,"  ",$P($G(^PSDRUG($P(SFN0,"^",6),0)),"^")
 | 
|---|
 | 100 |  W:PSOBDF="A" ?70,PNODE
 | 
|---|
 | 101 |  I ($Y+5)>IOSL D HD Q:PSOUT
 | 
|---|
 | 102 |  Q
 | 
|---|
 | 103 | CON ;
 | 
|---|
 | 104 |  I PSOAFLAG W !,$G(PSONSSN) S PSOAFLAG=0
 | 
|---|
 | 105 |  Q
 | 
|---|
 | 106 |  ;
 | 
|---|
 | 107 | CHKADDR ;
 | 
|---|
 | 108 |  N PSOBADR,PSOTEMP
 | 
|---|
 | 109 |  S PSOBADR=$$BADADR^DGUTL3(PSODFN)
 | 
|---|
 | 110 |  I PSOBADR D
 | 
|---|
 | 111 |  .S PSOTEMP=$$CHKTEMP^PSOBAI(PSODFN)
 | 
|---|
 | 112 |  I PSOBADR,'PSOTEMP S (PSOBAI,PSOBDF("B"))=1 Q
 | 
|---|
 | 113 |  Q
 | 
|---|
 | 114 |  ;
 | 
|---|
 | 115 | FOREIGN ;
 | 
|---|
 | 116 |  N PSOFORGN
 | 
|---|
 | 117 |  S DFN=PSODFN D ADD^VADPT
 | 
|---|
 | 118 |  S PSOFORGN=$P($G(VAPA(25)),"^",2) I PSOFORGN'="",PSOFORGN'["UNITED STATES" S PSOBDF("F")=1
 | 
|---|
 | 119 |  Q
 | 
|---|
 | 120 |  ;
 | 
|---|
 | 121 | CHKMAIL ;
 | 
|---|
 | 122 |  N PSOTEMP,MAILEXP
 | 
|---|
 | 123 |  S PSOTEMP=$G(^PS(55,PSODFN,0)) Q:$P(PSOTEMP,"^",3)'=2
 | 
|---|
 | 124 |  S MAILEXP=$P(PSOTEMP,"^",5) I MAILEXP=""!(MAILEXP>DT) S PSOBDF("D")=1
 | 
|---|
 | 125 |  Q
 | 
|---|
 | 126 |  ;
 | 
|---|
 | 127 | DETAIL ;
 | 
|---|
 | 128 |  I '$D(^PS(52.5,SFN,0))!'$D(^DPT(+PSODFN,0)) Q
 | 
|---|
 | 129 |  S RXIEN=+$$GET1^DIQ(52.5,SFN,.01,"I")
 | 
|---|
 | 130 |  S RXSITE=+$$GET1^DIQ(52.5,SFN,.06,"I")
 | 
|---|
 | 131 |  I $G(PSUSDIV),RXSITE'=$G(PSOSITE) Q
 | 
|---|
 | 132 |  S RXSTS=$$GET1^DIQ(52,RXIEN,100,"I") I RXSTS>8 Q
 | 
|---|
 | 133 |  S PARTIAL=+$$GET1^DIQ(52.5,SFN,.05,"I")
 | 
|---|
 | 134 |  I PARTIAL,'$D(^PSRX(RXIEN,"P",PARTIAL)) Q
 | 
|---|
 | 135 |  S PSOANAME=$P($G(^DPT(PSODFN,0)),"^") Q:PSOANAME=""
 | 
|---|
 | 136 |  S ^TMP("PSOBADL",$J,PSOANAME,PSODFN,PSORD,RXIEN)=$S(PSOBDF("B"):"B",PSOBDF("D"):"D",PSOBDF("F"):"F",1:"")
 | 
|---|
 | 137 |  Q
 | 
|---|