| 1 | PSOCPIBF ;BIR/EJW-Clean up to bill unbilled CMOP copays ;01/14/02 | 
|---|
| 2 | ;;7.0;OUTPATIENT PHARMACY;**93**;DEC 1997 | 
|---|
| 3 | ;External reference to ^XUSEC supported by DBIA 10076 | 
|---|
| 4 | ;External reference to ^XPD(9.7, supported by DBIA 2197 | 
|---|
| 5 | S ZTDTH="" | 
|---|
| 6 | I $D(ZTQUEUED) S ZTDTH=$H | 
|---|
| 7 | I ZTDTH="" D | 
|---|
| 8 | .W !,"The background job to clean up unbilled, released CMOP prescription fills must" | 
|---|
| 9 | .W !,"be queued to run and complete before 02/01/2002 when tracking for the " | 
|---|
| 10 | .W !,"annual copay cap begins." | 
|---|
| 11 | .W !!,"If no start date/time is entered when prompted, the background job will be " | 
|---|
| 12 | .W !,"queued to run NOW." | 
|---|
| 13 | .W ! | 
|---|
| 14 | .D PATCHDT | 
|---|
| 15 | .D CHKSITE | 
|---|
| 16 | .D GETDATE | 
|---|
| 17 | .D BMES^XPDUTL("Queuing background job to reprocess unbilled copay CMOP Prescription fills...") | 
|---|
| 18 | S ZTRTN="EN^PSOCPIBF",ZTIO="",ZTDESC="Background job to bill CMOP unbilled copays" D ^%ZTLOAD K ZTDTH,ZTRTN,ZTIO,ZTDESC | 
|---|
| 19 | W:$D(ZTSK)&('$D(ZTQUEUED)) !!,"Task Queued !",! | 
|---|
| 20 | Q | 
|---|
| 21 | EN ; | 
|---|
| 22 | N PSODATE,RXP,PSOTEXT,YY,PSOCNT,PSOSTART,PSOEND,PSOSTOP | 
|---|
| 23 | S PSOCNT=0 | 
|---|
| 24 | S PSOSTOP=0 | 
|---|
| 25 | D NOW^%DTC S Y=% D DD^%DT S PSOSTART=Y | 
|---|
| 26 | I '$G(DT) S DT=$$DT^XLFDT | 
|---|
| 27 | I DT>3020201 S PSOSTOP=1 D MAIL Q  ; TOO LATE TO RUN CLEAN-UP | 
|---|
| 28 | S PSOINST=$O(^XPD(9.7,"B","PSX*2.0*35","")) I PSOINST'="" S PSODATE=$P($G(^XPD(9.7,PSOINST,1)),"^",3) | 
|---|
| 29 | I $G(PSODATE)'="" S PSODATE=PSODATE-1 | 
|---|
| 30 | I $G(PSODATE)="" S PSODATE=3011011 ; DAY BEFORE PSX*2*35 WAS INSTALLED ANYWHERE | 
|---|
| 31 | F  S PSODATE=$O(^PSRX("AR",PSODATE)) Q:'PSODATE  S RXP="" F  S RXP=$O(^PSRX("AR",PSODATE,RXP)) Q:'RXP  S YY="" F  S YY=$O(^PSRX("AR",PSODATE,RXP,YY)) Q:YY=""  Q:PSOSTOP  D | 
|---|
| 32 | .S PSOIB=+$P($G(^PSRX(RXP,"IB")),"^") I 'PSOIB Q  ; NOT MARKED AS A COPAY RX | 
|---|
| 33 | . ; IF NO IB NUMBER FOR THIS FILL, SET UP VARIABLES AND CALL CP^PSOCP.  IF THERE IS AN IB NUMBER AFTER THIS CALL, COUNT IT FOR SUMMARY MAIL MSG | 
|---|
| 34 | .I 'YY D  Q | 
|---|
| 35 | ..I $P(^PSRX(RXP,"IB"),"^",2)'="" Q | 
|---|
| 36 | ..D NOW^%DTC I %>3020201 S PSOSTOP=1 Q  ; STOP IF REACH DATE OF COPAY RATE CHANGE | 
|---|
| 37 | ..D SITE | 
|---|
| 38 | ..I PSODATE>3011231 D CP^PSOCP | 
|---|
| 39 | ..I PSODATE<3020101 D CP^PSOCPIBC ; BEFORE NEW EXEMPTION CHECKS WENT INTO EFFECT | 
|---|
| 40 | ..I $P(^PSRX(RXP,"IB"),"^",2)'="" S PSOCNT=PSOCNT+1 | 
|---|
| 41 | .I $P($G(^PSRX(RXP,1,YY,"IB")),"^",1)="" D | 
|---|
| 42 | ..D NOW^%DTC I %>3020201 S PSOSTOP=1 Q  ; STOP IF REACH DATE OF COPAY RATE CHANGE | 
|---|
| 43 | ..D SITE | 
|---|
| 44 | ..I PSODATE>3011231 D CP^PSOCP | 
|---|
| 45 | ..I PSODATE<3020101 D CP^PSOCPIBC ; BEFORE NEW EXEMPTION CHECKS WENT INTO EFFECT | 
|---|
| 46 | ..I $P($G(^PSRX(RXP,1,YY,"IB")),"^",1)'="" S PSOCNT=PSOCNT+1 | 
|---|
| 47 | MAIL ; | 
|---|
| 48 | D NOW^%DTC S Y=% D DD^%DT S PSOEND=Y | 
|---|
| 49 | I $G(DUZ) S XMY(DUZ)="" | 
|---|
| 50 | S XMDUZ="Outpatient Pharmacy",XMSUB="Outpatient Pharmacy Copay Clean-up" | 
|---|
| 51 | F PSOCXPDA=0:0 S PSOCXPDA=$O(^XUSEC("PSO COPAY",PSOCXPDA)) Q:'PSOCXPDA  S XMY(PSOCXPDA)="" | 
|---|
| 52 | I $O(XMY(""))="" Q  ; no recipients for mail message | 
|---|
| 53 | S PSOTEXT(1)="The Rx copay clean up job for the Outpatient Pharmacy patch (PSO*7*93)" | 
|---|
| 54 | S PSOTEXT(2)="started "_PSOSTART_" and completed "_PSOEND_"." | 
|---|
| 55 | I PSOCNT>0 S PSOTEXT(3)="Released unbilled copay Rxs have now been reprocessed." | 
|---|
| 56 | I PSOCNT>0 S PSOTEXT(4)="There were "_PSOCNT_" Rx fills successfully billed." | 
|---|
| 57 | I PSOCNT=0 S PSOTEXT(3)="No released unbilled copay Rxs were found to reprocess." | 
|---|
| 58 | I PSOSTOP D | 
|---|
| 59 | .S PSOTEXT(5)="" | 
|---|
| 60 | .S PSOTEXT(6)="PROCESSING CANNOT CONTINUE BEYOND JAN. 31,2002 BECAUSE OF COPAY RATE CHANGE." | 
|---|
| 61 | .I $G(PSODATE)'="" S Y=PSODATE D DD^%DT S PSOTEXT(7)="AT TIME JOB TERMINATED, RELEASE DATE BEING PROCESSED WAS "_Y | 
|---|
| 62 | S XMTEXT="PSOTEXT(" N DIFROM D ^XMD K XMDUZ,XMTEXT,XMSUB | 
|---|
| 63 | S:$D(ZTQUEUED) ZTREQ="@" | 
|---|
| 64 | Q | 
|---|
| 65 | ; | 
|---|
| 66 | GETDATE ; GET DATE/TIME OF WHEN BACKGROUND JOB SHOULD BE RUN | 
|---|
| 67 | S ZTDTH="" | 
|---|
| 68 | S NOW=0 | 
|---|
| 69 | D NOW^%DTC S (Y,TODAY)=% D DD^%DT | 
|---|
| 70 | W !!,"Background job must be queued to start by "_$S(Y<3020131:"Jan 30, 2002 or before.",1:"Jan 31, 2002.") | 
|---|
| 71 | I Y>3020131 S ZTDTH=Y Q  ; LET JOB RUN IF IT'S FEB 1,2002 OR LATER.  THE MAILMAN MESSAGE WILL SHOW THAT NO CLEAN UP WAS DONE | 
|---|
| 72 | W !!,"At the following prompt, enter a starting date/time after ",Y,!,"and before "_$S(Y<3020131:"Jan 31, 2002",1:"Feb 1, 2002")," or enter NOW to queue the job immediately." | 
|---|
| 73 | W !,"If this prompting is during patch installation, you will not see what you type." | 
|---|
| 74 | W ! K %DT D NOW^%DTC S %DT="RAEX",%DT(0)=%,%DT("A")="Queue copay clean-up Job to run Date/Time: " | 
|---|
| 75 | D ^%DT K %DT I $D(DTOUT)!(Y<0) W "Task will be queued to run NOW" S ZTDTH=$H,NOW=1 | 
|---|
| 76 | I 'NOW I Y>0,$P(Y,".")>3020130 I TODAY<3020131 W !!,"Must queue background job to start on Jan. 30 or before." G GETDATE | 
|---|
| 77 | I 'NOW,Y>0 D | 
|---|
| 78 | .S SAVEY=Y | 
|---|
| 79 | .D DD^%DT | 
|---|
| 80 | .S X=Y | 
|---|
| 81 | .S Y=SAVEY | 
|---|
| 82 | ASK W !!,"Task will be queued to run "_$S(NOW:"NOW",1:X)_" Is that correct?  :" | 
|---|
| 83 | R XX:300 S:'$T XX="Y" I XX'="Y",XX'="y",XX'="N",XX'="n" W " Enter Y or N" G ASK | 
|---|
| 84 | I XX'="Y",XX'="y" G GETDATE | 
|---|
| 85 | I Y>0,ZTDTH="" S ZTDTH=Y | 
|---|
| 86 | I ZTDTH="" S ZTDTH=$H | 
|---|
| 87 | Q | 
|---|
| 88 | ; | 
|---|
| 89 | SITE ; SET UP VARIABLES NEEDED BY BILLING | 
|---|
| 90 | S PSOSITE=$S(YY=0:$P(^PSRX(RXP,2),"^",9),1:$P($G(^PSRX(RXP,1,YY,0)),"^",9)) | 
|---|
| 91 | I PSOSITE="" Q | 
|---|
| 92 | S PSOPAR=$G(^PS(59,PSOSITE,1)) | 
|---|
| 93 | S PSOSITE7=$P($G(^PS(59,PSOSITE,"IB")),"^") | 
|---|
| 94 | Q | 
|---|
| 95 | ; | 
|---|
| 96 | PATCHDT ; SHOW USER WHEN CMOP PATCH WAS FIRST INSTALLED | 
|---|
| 97 | S PSOFIRST="Oct 12, 2001" ; DEFAULT FOR WHEN FIRST SITE INSTALLED THE PATCH | 
|---|
| 98 | S PSOINST=$O(^XPD(9.7,"B","PSX*2.0*35","")) I PSOINST'="" S Y=$P($G(^XPD(9.7,PSOINST,1)),"^",3) D DD^%DT S PSOFIRST=Y | 
|---|
| 99 | W !,"CMOP patch PSX*2*35 was first installed at your facility on ",PSOFIRST | 
|---|
| 100 | Q | 
|---|
| 101 | ; | 
|---|
| 102 | CHKSITE ; SEE IF ANY DIVISIONS HAD THE PROBLEM | 
|---|
| 103 | S PROBTEXT="'BARCODES ON ACTION PROFILES'" | 
|---|
| 104 | N SITE,PROB | 
|---|
| 105 | S PROB=0 | 
|---|
| 106 | S SITE="" F  S SITE=$O(^PS(59,SITE)) Q:SITE=""  I '$P($G(^PS(59,SITE,1)),"^",1) D  S PROB=1 Q | 
|---|
| 107 | .W !!,"The Outpatient Site (File #59) parameter, "_PROBTEXT | 
|---|
| 108 | .W !,"for one or more outpatient sites is either not defined or set to 'No'." | 
|---|
| 109 | .W !,"All copay eligible, released CMOP prescription fills from those outpatient" | 
|---|
| 110 | .W !,"sites would not have been billed since the installation of PSX*2*35." | 
|---|
| 111 | .W !!,"NOTE:  If the estimated number of CMOP prescriptions involved is high based" | 
|---|
| 112 | .W !,"on when the patch was first installed and the number of outpatient sites " | 
|---|
| 113 | .W !,"involved, you may want to disable journaling for Integrated Billing and" | 
|---|
| 114 | .W !,"Accounts Receivable globals ^IB and ^PRCA while the clean up job" | 
|---|
| 115 | .W !,"is running." | 
|---|
| 116 | W !!,"When the background job is complete, a MailMan message will be sent to the" | 
|---|
| 117 | W !,"installer indicating how many copay eligible CMOP prescription fills were " | 
|---|
| 118 | W !,"successfully billed." | 
|---|
| 119 | I PROB Q | 
|---|
| 120 | W !!,"All "_PROBTEXT_" are set to 'YES' for all divisions." | 
|---|
| 121 | W !,"The MailMan message at the end should indicate that no fills were found to" | 
|---|
| 122 | W !,"reprocess.  (i.e. All released CMOP fills have already been billed.)" | 
|---|
| 123 | Q | 
|---|
| 124 | ; | 
|---|